Saturday, November 27, 2021

Activating Windows 11 virtual machine

I was able to install Windows 11 as a virtual machine under Proxmox in the rack server, and even found a way to activate it. Then, I saw on CNX Software that there is a sale for Windows activation keys due to Black Friday, and decided to give it a try.

The sale was on Godeal24 and I was wondering if the keys are legit. But they are real cheap anyway, so I thought I would just give it a try. I don't really use Windows anyway, and I kind of treated this like a learning experience. The site allows you to buy as a guest without registration, and you can even pay via PayPal instead of credit card.

Long story short. The key can activate Windows 11. But it is an OEM_DM channel key, not a full retail key. Which, for my case, is fine since I am not using Windows for anything critical. (In fact, I don't even use it much at all, except to run it and smile to myself, "I managed to install a Windows 11 virtual machine." 😅) But if you are using it for your main PC, I would recommend against such activation keys, because that is not what they are meant for.

Meanwhile, the rack server learning journey continues...

Update: As an OEM_DM channel key, it cannot be transferred. I tried to deregister the key on one VM to use on another, but it didn't work.

Thursday, November 25, 2021

Replacing extruder motor

I needed to print some feet so that my rack server can be made to stand up, so I was glad I have a 3D printer. Problem is, when printing, I realised I was getting underextrusion in the prints. So I took some time to observe a print as it was taking place, and saw that the extruder motor was not turning sometimes.

At first, I thought the tensioner was too tight, causing the extruder motor to stall. So I loosened the tensioner spring, which allowed the extruder motor to turn, but it was too loose to grip the filament, and I still ended up with underextrusion. So I tried to increase the tension again, enough to grip the filament, but then again, the extruder motor sometimes didn't spin. I even played around with the motor current (thankfully, it was easy, since I am using TMC drivers) but no luck.

In the end, I suspected that it could be the extruder motor which has failed. So, much as I dreaded, I took apart the gantry assembly (I am using a Titan Aero direct drive extruder), found a spare motor, put everything back together, and yes! It is feeding fine now. So I went through the manual leveling process of leveling the corners, then a 25-point manual bed leveling process. I then did my usual first layer test, and it seems everything is working as it should.

The final test was to print a set of feet for the rack server. And wow! I got a nice clean print, which confirmed that it was the extruder motor that had failed. Another new piece of knowledge for troubleshooting underextrusion issues.

Saturday, November 20, 2021

Installing Proxmox on Poweredge R320 and TrueNAS as virtual machine

I recently got myself a used Dell Poweredge R320 rack server. I was thinking of installing Ubuntu Server on it, then running virtual machines on top of that. But after a bit of research, I realised that it is best to have a hypervisor, and run several virtual machines on it. The hypervisor I chose was Proxmox, which can be downloaded and used without having to pay for a subscription.

It is actually quite straightforward to install. Download the ISO image from Proxmox's website, burn it onto a USB thumbdrive, then boot up the rack server using the thumbdrive. I chose to install it onto a 500GB SSD which I had. This will also be the disk that I use to store my virtual machines.

Once Proxmox has been installed, I decided to install TrueNAS to manage the storage disks. This is actually quite straightforward too. Download the ISO from TrueNAS's website, and then upload the ISO onto Proxmox (under the Storage section of the "local" disk). This will then allow you to choose the ISO when creating a virtual machine. I allocated 50GB for TrueNAS. The tricky part was to pass the harddisks to the virtual machine. At first, I tried to pass the entire RAID controller, but this just ended up in a lot of disk corruption since my SSD is also connected to the RAID controller. In the end, I found out that I had to to pass each disk individually. I did this by using the following command, after creating the VM (but not starting it yet):

qm set 100 -virtio1 /dev/disk/by-id/scsi-xxxxxx
 
Here, "100" is for the VM number of TrueNAS, which, if the first VM installed on Proxmox, is usually given the number 100. "scsi-xxxxxx" is whatever the number assigned to the harddisk you want to pass through. You can actually see the list of attached harddisks under the "Disks" tab of the main Proxmox environment. There should be serial numbers listed which conforms to those you find under "/dev/disk/by-id". This allowed me to see my two storage HDD (2TB each) in TrueNAS, which I then used to set up a pool in mirror mode.

To install QEMU guest agent on a TrueNAS VM, follow the instructions here. First, on the "History" tab of the page, there should be a ZIP file to download. After downloading and expanding the ZIP file, copy its contents into the VM. What I did was the TrueNAS VM was already serving a SMB share, so I copied the contents there. After that, it is a matter of using the console to move the files to the right places and executing the required steps in the instructions.
Instructions replicated below.
  1. Make the required files executable by chmod +c qemu-ga and chmod +x qemu-guest-agent .
  2. Place virtio_console.ko in /boot/modules.
  3. Run kldload virtio_console.ko.
  4. Place qemu-ga in /usr/local/bin.
  5. Place qemu-guest-agent in /usr/local/etc/rc.d.
  6. Place qemu-guest-agent in another location of your choice. This will be a copy that is re-added to the rc.d directory each time TrueNAS boots.
  7. Create Tunables in the TrueNAS web UI. System -> Tunables.
    1. Variable=qemu_guest_agent_enable Value=YES Type=RC Enabled=yes
    2. Variable=qemu_guest_agent_flags Value=-d -v -l /var/log/qemu-ga.log Type=RC Enabled=yes
    3. Variable=virtio_console_load Value=YES Type=LOADER Enabled=yes
  8. Create Init/Shutdown Scripts in the TrueNAS web UI. Tasks -> Init/Shutdown Scripts.
    1. Type=Command Command=service qemu-guest-agent start When=POSTINIT Enabled=yes Timeout=10
    2. Type=Command Command=cp /[path to a local copy of qemu-guest-agent file] /usr/local/etc/rc.d When=PREINIT Enabled=yes Timeout=10
  9. Reboot TrueNAS.
Within TrueNAS, I also installed the Plex Media Server plugin. This allows me to stream videos from the storage HDDs. However, without a dedicated GPU, video transcoding uses CPU power, which can cause the fans to rev up and create a bit of noise. And 1U servers are not the quietest of rack servers...
 
Oh, I also managed to install Windows 11 as a virtual machine, but unfortunately, it is not possible to run Windows Subsystem for Linux (WSL) or Windows Subsystem for Android (WSA) inside a Win11 virtual machine. To activate Windows 11, you can follow this guide. I will get myself a proper key if I intend to use Windows 11; this is just a temporary solution for me to test to see if I want to move to Windows 11.

The rack server was originally sitting on top of a low shelf, but I used my Ender-3 to print some feet for it, and now, it is standing upright beside my main work desk.


Now to get myself a tower server... eyeing the T420 next. If I can get my hands on a cheap used one, then I will probably expand it with some RAM and run dual CPUs on it. Plus a couple of 4TB HDDs.

Note: To install Proxmox and run it from a PCIe SSD (or anything connected via PCIe, I guess), follow this guide or this guide.

Wiping clean an entire disk in Linux

Note to self (DANGER: running as root will cause the disk to be wiped as soon as this command is executed, so be very sure the target disk is typed in correctly):
To wipe a disk clean, fill with random numbers.
dd if=/dev/urandom of=/dev/sda bs=8b

Or run it seven times to be safe.
for n in `seq 7`; do dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc; done

(From this article.)

Friday, November 19, 2021

Work being done on deciphering the languages in Mushoku Tensei

I just saw a video on YouTube about deciphering the languages in the anime adaptation of Mushoku Tensei: Jobless Reincarnation (無職転生 〜異世界行ったら本気だす〜). This is just a quick note for those who are interested in how to go about this.

After a quick search on Google, it seems that people have figured out the technique used. It is really the same as Violet Evergarden (see my Tellsis translator here and the substitution here). The words are translated into a real world language that is not Japanese or English (too easy to figure out), then a substitution cipher is used to replace the alphabets. Names are not put through the substitution cipher. Finally, the output is presented in a unique font.

For the Human tongue in Mushoku Tensei, that real world language is Basque (although English is also used, such as the "magic book" that Rudeus first read as a kid). For the Demon-god tongue, it is Zulu (with some Swahili). For Beast-god tongue, it is Haitian. For the substitution cipher, vowels, if switched, are usually switched with vowels so that they can be read. Accented vowels may end up being replaced with composite vowels. Consonants are switched with consonants, and sometimes with a double consonant (like sh, ch). This person on Twitter, 双倉, has quite some pictures and such on the work done to decipher these three languages. Below is an example taken from Twitter.
Image

Looking forward to someone consolidating this eventually... I am a bit busy now with setting up that new (used) server now...

Update: You can see a table of the letters in Demon-god tongue here. (Video is in Mandarin, though.)

Update 24 July 2022: Found this post in Reddit with a nice table to show how the writing system related to our alphabet.


Thursday, November 18, 2021

Grown-up versus adult (translation tidbit)

The word 大人 can be translated as "grown-up" or "adult" in English. By itself, there isn't any real difference.

But while an adult video is a video for grown-ups, a video for grown-ups is not definitely an adult video.

Just a random tidbit I thought of sharing after seeing how some names of Japanese products just translated into English using "adult" when "grown-up" is more appropriately... especially if you don't want people to have the wrong ideas about what you are selling. 😅

Monday, November 15, 2021

Getting a used Dell Poweredge R320 server

I don't know if this was a good idea... but one of the reasons I extended the home network was because... I bought a used Dell Poweredge R320 server on Yahoo Auctions.

I have no experience with such servers. No experience with Xeon CPUs. No experience with RAID. And rack servers are known to be loud. Like, really loud. I don't even have a rack for such servers to keep them, and obviously, no temperature-controlled room except when I turn on the air conditioning for myself.
 
How can this even be a good idea?

Sigh... that impulsive click on "Bid"...

Anyway, this is what it is supposed to look like... I will know when it actually gets delivered in a few days' time.
【埼玉発】★【DELL】PowerEdge R320 Xeon E5-2430L@2.0Ghz/ 16GB RAM/ 2TB HDD (3-133)_画像1

Specs:
Intel Xeon E5-2430L (single)
16 GB RAM (single stick of DDR3 1333MHz)
2 TB HDD (used)
DVD-RW drive
PERC H310 Mini RAID controller

Extending the home network

I have an older wireless router lying around since I got a new one, but it is a waste to just leave it in the storeroom. So I dug it out, and tried using it to extend my wired network.

A quick note before the details on how I did that. First, I have my main desktop, laptop, and media server connected by LAN cable to my router. My TV, Amazon Fire TV Stick, and a Raspberry Pi 4 connected to my TV are all connected to the router via WiFi, though. This actually makes it harder to stream high bitrate media from my media server to the Fire TV Stick and Raspberry Pi 4, though.

So the idea is to use an old router, place it near my TV, and connect the devices there to this old router using LAN cables. The old router is then connected to my router using LAN cable. The old router will be configured as a bridge, with DHCP and other stuff disabled so that everything is handled by the main router.

For my old ASUS router, this is actually quite easy.

1. Power up the old router, then push down on the reset button for 10 seconds. This resets the router to factory settings.
2. Connect the old router to my laptop using LAN cable, then go to 192.168.1.1 which is the default address for the router. This should bring up the initial router settings page.
3. Choose manual setup.
4. Set an admin password.
5. Choose "Access Point (AP)" as the router mode. This should automatically disable a lot of stuff that is not needed.
6. Set router address as something easy to remember, like 192.168.x.2 (replace x with a suitable number that is used by the main router, which should be 192.168.x.1).
7. Save settings, then power off the old router.
8. Connect WAN port of old router to one of the LAN ports on the main router using a LAN cable. Then, power on the old router.
9. Connect additional devices to old router using LAN cable. You should be able to access the main router at 192.168.x.1, and the old router at 192.168.x.2 (or whatever you set the old router's IP as). A good practice is, on the main router, set it to assign 192.168.x.2 to the old router based on MAC address.

BTW, the Amazon Fire TV Stick does not have a LAN port, so you will need to find a powered LAN to USB connector, which plugs into the same USB Micro-B port that the port usually goes. Amazon actually sells such an adapter.
(affiliate link below)

😁

(After connecting my Fire TV Stick to a LAN cable, I still get some stutter when playing high bitrate videos. I guess it is a limitation of the CPU/GPU on the Fire TV Stick and not the network. Kodi, which I installed using this guide, seems to have slightly better performance than VLC. This is another guide which teaches how to add Samba shares to Kodi.)

Friday, November 05, 2021

Watched Sing a Bit of Harmony (アイの歌声を聴かせて)

One of the anime films that came out recently is Sing a Bit of Harmony (アイの歌声を聴かせて), which is about an artificial intelligence project in the form of a high school girl. I thought it would be thought-provoking in terms of AI-human coexistence, so I found time to go catch it soon after release.

And kind of regretted my decision less than halfway into the show.

(This post will contain spoilers. 😅)

The story starts with a futuristic setting in Japan, when technology and AI robots have become a part of our lives but they do not have human shapes. The AI high school girl, Ashimori Shion, was created by high school girl Amano Satomi's mother and her team, who work for a major tech company. They decided to send Shion to Satomi's school in an experiment to see if people will discover Shion is actually an AI robot. The concern is that this may infringe the AI ethics law of the time.

Personally, I wished they had elaborated more on the AI ethics law. The coexistence of AI and humans is a theme that I keep thinking about, and I had thought this movie would provide some new angle. Unfortunately, I was disappointed. The movie was more like an hour-long commercial for the songs by Shion (voiced by Tsuchiya Tao). Yes, Shion was portrayed as bringing happiness through song... but the way the movie was written, Shion is just an airhead who sang at the most inappropriate times. If you like cute anime girls with no IQ, then this is the movie for you. But if you are expecting more from paying money and spending time, I would suggest you skip this movie and watch something else. Even the new Sword Art Online movie, which I watched on the same day, was better than this one.

Why?

First, the story is too unbelievable. You have a 9-year-old genius who added text-to-speech capability to a tamagotchi-type toy? Which is all the more unbelievable because that would mean this genius did this task about 7 to 8 years before the story. When technology would be at a lower level of proliferation within society... and that AI in the tamagotchi toy back then was even smart enough to recognise the instruction of "make Satomi happy". You are talking about a sentient AI in a tamagotchi toy at a time when such technology has yet to become a part of our lives. It is just too far-fetched to be believable, which makes it hard for people to empathise with the story. And when you cannot empathise with the story, it is a lot less enjoyable.

Another part is the creepiness of the story. This sentient AI has basically been stalking Satomi for 7 to 8 years. It has been lurking around in her home security system, the school's security system, even garbage collection robots, observing Satomi as she went about life. The sentient AI is able to communicate with other computer systems and get them to do what the AI wants. Like erasing her shape from security camera footage. Wow. The ultimate stalker. Who is everywhere and leaves no trace... This is not amazing. It is plain creepy. If the producers wanted to make people afraid of AI, I think they have managed to put that point across.

I walked out of the theater thinking, "How I wish I can have that two hours of my life back." Well, at least watching SAO after that made the trip to the cinema not a total waste of time.
 
In the end, I don't even know what the producers of the movie wanted to say. What is their message? Other than, nice songs, please buy the soundtrack.

If you like singing AI, watch Vivy. It is a lot more thought-provoking, the story is better written, and the anime quality is much better too. I mean, it is a TV series, but the quality is much better than this movie.