all repos — site @ c53eb9f1b57d46b6f6b5365c582536613509cb2f

source for my site, found at icyphox.sh

pages/blog/five-days-tty.md (view raw)

  1---
  2template:
  3title: Five days in a TTY
  4slug: five-days-tty
  5subtitle: I installed KISS Linux
  6date: 2020-01-13
  7---
  8
  9This new semester has been pretty easy on me, so far. I hardly every
 10have any classes (again, so far), and I've a ton of free time on my
 11hands. This calls for -- yep -- a distro hop! 
 12
 13## Why KISS?
 14
 15[KISS](https://getkiss.org) has been making rounds on the interwebz lately.[^hn]
 16The Hacker News post spurred _quite_ the discussion. But then again,
 17that is to be expected from Valleybros who use macOS all day. :^)
 18
 19From the website,
 20
 21> An independent Linux® distribution with a focus on simplicity and the
 22> concept of “less is more”. The distribution targets *only* the x86-64
 23> architecture and the English language.
 24
 25Like many people did in the HN thread, "simplicity" here is not to be
 26confused with "ease". It is instead, simplicity in terms of lesser and
 27cleaner code -- no
 28[Poetterware](https://www.urbandictionary.com/define.php?term=poetterware).
 29
 30[^hn]: https://news.ycombinator.com/item?id=21021396
 31
 32This, I can get behind. A clean system with less code is like a clean
 33table. It's nice to work on. It also implies security to a certain
 34extent since there's a smaller attack surface. 
 35
 36The [`kiss`](https://github.com/kisslinux/kiss) package manager is written
 37is pure POSIX sh, and does _just enough_. Packages are compiled from
 38source and `kiss` automatically performs dependency resolution. Creating
 39packages is ridiculously easy too.
 40
 41Speaking of packages, all packages -- both official & community
 42repos -- are run through `shellcheck` before getting merged. This is
 43awesome; I don't think this is done in any other distro.
 44
 45In essence, KISS sucks less.
 46
 47## Installing KISS
 48
 49The [install guide](https://getkiss.org/pages/install) is very easy to
 50follow. Clear instructions that make it hard to screw up; that didn't
 51stop me from doing so, however.
 52
 53### Day 1
 54
 55Although technically not in a TTY, it was still not _in_ the KISS
 56system -- I'll count it. I'd compiled the kernel in the chroot and
 57decided to use `efibootmgr` instead of GRUB. `efibootmgr` is a neat tool
 58to modify the Intel Extensible Firmware Interface (EFI). Essentially,
 59you boot the `.efi` directly as opposed to choosing which boot entry
 60you want to boot, through GRUB. Useful if you have just one OS on the
 61system. Removes one layer of abstraction.
 62
 63Adding a new EFI entry is pretty easy. For me, the command was:
 64
 65```
 66efibootmgr --create 
 67           --disk /dev/nvme0n1 \
 68           --part 1 \
 69           --label KISS Linux \
 70           --loader /vmlinuz
 71           --unicode 'root=/dev/nvme0n1p3 rw'  # kernel parameters
 72```
 73
 74Mind you, this didn't work the first time, or the second, or the
 75third ... a bunch of trial and error (and asking on `#kisslinux`)
 76later, it worked.
 77
 78Well, it booted, but not into KISS. Took a while to figure out that the
 79culprit was `CONFIG_BLK_DEV_NVME` not having been set in the kernel
 80config. Rebuild & reboot later, I was in.
 81
 82### Day 2
 83
 84Networking! How fun. An `ip a` and I see that both USB tethering
 85(ethernet) and wireless don't work. Great. Dug around a bit -- missing
 86wireless drivers was the problem. Found my driver, a binary `.ucode` from
 87Intel (eugh!). The whole day was spent in figuring out why the kernel
 88would never load the firmware. I tried different variations -- loading
 89it as a module (`=m`), baking it in (`=y`) but no luck.
 90
 91### Day 3
 92
 93I then tried Alpine's kernel config but that was so huge and had a _ton_
 94of modules and took far too long to build each time, much to my
 95annoyance. Diffing their config and mine was about ~3000 lines! Too much
 96to sift through. On a whim, I decided to scrap my entire KISS install
 97and start afresh. 
 98
 99For some odd reason, after doing the _exact_ same things I'd done
100earlier, my wireless worked this time. Ethernet didn't, and still
101doesn't, but that's ok.
102
103Building `xorg-server` was next, which took about an hour, mostly thanks
104to spotty internet. The build went through fine, though what wasn't was
105no input after starting X. Adding my user to the `input` group wasn't
106enough. The culprit this time was a missing `xf86-xorg-input` package.
107Installing that gave me my mouse back, but not the keyboard!
108
109It was definitely not the kernel this time, because I had a working
110keyboard in the TTY. 
111
112### Day 4 & Day 5
113
114This was probably the most annoying of all, since the fix was _trivial_.
115By this point I had exhausted all ideas, so I decided to build my
116essential packages and setup my system. Building Firefox took nearly
1179 hours, the other stuff were much faster.
118
119I was still chatting on IRC during this, trying to zero down on what the
120problem could be. And then:
121
122```
123<dylanaraps> For starters I think st fails due to no fonts.
124```
125
126Holy shit! Fonts. I hadn't installed _any_ fonts. Which is why none of
127the applications I tried launching via `sowm` ever launched, and hence,
128I was lead to believe my keyboard was dead.
129
130## Worth it?
131
132Absolutely. I _cannot_ stress on how much of a learning experience this
133was. Also a test of my patience and perseverance, but yeah ok. I also
134think that this distro is my endgame (yeah, right), probably because
135other distros will be nothing short of disappointing, in one way or
136another.
137
138Huge thanks to the folks at `#kisslinux` on Freenode for helping me
139throughout. And I mean, they _really_ did. We chatted for hours on end
140trying to debug my issues.
141
142I'll now conclude with an obligatory screenshot.
143
144![scrot](https://cdn.icyphox.sh/R6G.png)