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