21 September 2021

Ventoy, Kaisen Linux, Clear Linux

I found Kaisen Linux a while ago, but didn't really get around to testing it until early August (I had to download the newer version).

I couldn't remember what USB multi-boot utility I was using after multiboot, but I couldn't seem to find it? Or it may just have been multiboot, but regardless, I couldn't find any hint of what it was. I came upon Ventoy, which is kinda multiboot's successor. Anyway, you install it to the USB drive and then drop the ISOs (or IMGs) directly onto the USB drive. I didn't really read the doc that well since I only read it for installation of Ventoy on the USB drive and then closed the tab, so I didn't realise I just had to plop the ISOs to the drive. It's a lot easier/faster/nicer than multiboot since it's drag and drop after the initial installation (multiboot has an install/uninstall ISO process that unpacks/cleans them in a certain way, which takes longer than just dropping/deleting an ISO file). IMGs only really work on UEFI systems btw, I learned this with Memtest86 V4 and Triela.

Back to Kaisen, it's a distro with sysadmin tools, which what originally got me interested in it because I wanted something that was more current and free than Parted Magic (last I remember, Parted Magic made you pay for current versions, but had previous versions for free), and also something less annoying than GParted Live (GParted asks for the keyboard layout during bootup). While Kaisen doesn't boot as fast as Parted Magic or GParted from what I remember, it's something I like more, even though the XFCE menu is the stock one and not the superior Whisker menu. The ISO includes English and French as an option, like Parted Magic does, but the keyboard is QWERTY instead of AZERTY when booting into English (another annoyance with Parted Magic). The menu is categorised appropriately, I think, but for someone like me that's used to the Whisker menu, it was annoying to find gparted. While I did find it, it's sadly quicker to just Alt+F2 and type for it. I don't think the Whisker menu is customisable like the stock XFCE one, but Whisker does include a search function that makes it easier to find stuff. It'd be nice if the Kaisen team can use Whisker instead or alongside the stock one, but I doubt it'll happen. But with this, definitely not bothering with Parted Magic or GParted Live ever again.

With the power of Ventoy, I wanted to rebuild a set of Linux distros as I previously had on the drive (installing Ventoy wipes the drive), so I poked around to see what else to get besides some obvious choices like Manjaro, openSUSE, and Fedora. I came upon Clear Linux, which is it's own distribution (not forked from anything), and decided to give it a shot since it claims to be optimised for performance. I don't think I've ever booted any faster into a live distro than Clear. I tried to test on Triela, but Clear requires certain CPU instruction sets to run, none of which Triela has (SSSE3 (three Ss, not two), SSE4.1, SSE4.2, CLMUL). Because Melty has those instruction sets (pretty much AMD FX CPUs and newer), I could've tried Clear on Melty, but I didn't really feel like bothering with it. Not really much else to say, since I didn't really do much besides poke a bit at it.

I did try Debian, but I think I had problems or something, but well, I really prefer something that has newer packages like openSUSE Leap. I get that Debian's supposed to be rock solid, but honestly, Manjaro's been pretty solid on Pod for only having installed once. I also tried GhostBSD, but I don't remember if it worked; if it did, I wasn't in it for too long (I was really just after if I could boot into it or not with Triela and Bazett). Oh, one interesting thing when booting into openSUSE Tumbleweed on Bazett was that during the boot, it showed the HP logo.

Not the best shot, but I was trying to avoid reflections of myself and the overhead light.
∞ Tumbleweed is right below the shadow of my phone and above the bright spot of the overhead light.


The logo section was blank when I booted openSUSE Leap on Triela, but it's possible she's too old for that sort of special treatment (or it could just be only on HP laptops, I dunno, I'd need a larger sample size).

09 September 2021

Minor-ish Site Update

Decided to make text in the HTML code tag easier to read by increasing the font size a smidge and adding a grey background because it was getting annoying for me to try to read when proofreading posts. A late change, but at least a welcome one. (Also I forgot how I usually do these and couldn't easily find a previous one, so it's like this this time. Yay 2.2.0!)

8-Bit Character LCD/Character LCD Clock Update

In the Character LCD Clock post I mentioned wanting to test out 8-bit communication and having to write my own library for it, and I recently remembered about it to stick it in my projects folder.

I ended up grabbing the datasheet for the 20×4 display that I have and Adafruit's character_lcd.py source code for references, but when I really started looking at both of them (and playing with some things in a Python shell), I found I didn't need to write my own library and could just modify Adafruit's code. As for what I modified, I changed _LCD_4BITMODE = const(0x00) to _LCD_4BITMODE = const(0x10) to set it to 8-bit mode from 4-bit. Yes the variable name didn't get changed, but it means that there is minimal change to the code. The other thing I changed was the __init__( arguments for the additional data pins, the class variables that are made from those arguments, the write function (specifics soon), and the __init__( arguments for Character_LCD_Mono and Character_LCD_RGB.

In the write function, it normally sets the "top" four bits to be written on the pins set to self.dl4 through self.dl7, sends a three-part pulse (self._pulse_enable() function), then sets the "bottom" four bits on the same four pins before another pulse. For 8-bit, all eight pins need to be set, and I just brought up the lines for the "bottom" four bits above the lines for the "top" four bits and then changed the class variables to match the ones I added before. The pulse only needs to be sent once after the eight pins are set.

Character_LCD_Mono and Character_LCD_RGB have the __init__( arguments change since they pass the pins over to the parent class (the 20×4 display I have does have a backlight).

I used mpy-cross to turn it into a smaller .mpy file and tried it out. I ended up making it the wrong version because I never recompiled mpy-cross after setting the CircuitPython version to compile when I was compiling CircuitPython. Anyway, after that, the 8-bit library worked just fine, and I thought it seems faster, but I think it's just a placebo. The reason is that the pulse function has three 1-microsecond pauses and the only other limiting factor is the 1-millisecond pause in the write function before it sets all the pins; therefore with 4-bit, 1006 microseconds is spent to write one character, and 1003 microseconds for 8-bit. It's very negligible, and I can understand why Adafruit never bothered with making an 8-bit library or why 4-bit is so much more common, it's because the benefit for eating up four more pins is not worthwhile in any meaningful way. However, 8-bit makes sense when it's a small project that doesn't use all that many pins, which means it's just to connect the pins to something rather than nothing.

And because of this, I decided to make the Character LCD Clock have an 8-bit connection just to use up some more pins and not let my library modding go to waste (well, it's not that hard of a mod, but still...).