Carefully sift through the myriad of kernel options and select only the ones you need, dreaming of how fast your machine will be with the kernel you’re crafting.
Wait for your family to be asleep and spend the rest of the night on the interwebs to find out whether
CONFIG_PPS_CLIENT_GPIO should be compiled as a module or built-in, if you should enable
CONFIG_CAN as an excuse to buy that dongle you’ve been longing for a while and questioning every “
if unsure, say N” – because you might well be unsure, but you certainly don’t want to miss out on that cool feature.
Be pleased with yourself when you have what you think is the perfect kernel for your box.
Save the config, but don’t use the default
.config name: give it a different name for no particular reason, like
kconfig, and exit.
make menuconfig again, load
.config while you want to perform your last few tweaks. Be surprised when you find out
CONFIG_HW_RANDOM_VIA are all enabled, though you were sure all architecture-dependent options were already taken care of. Disable the two that don’t apply it and save as
.config. Save it also as
kconfig, just in case. Realise you’ve just overwritten the result of a dozen nights of lost sleep.
Count to ten, trying not to curse. Curse yourself when you reach 23. Exhale, slowly. Close the lid and get some sleep.
GOTO step 1 the day after.
Be even more pleased with yourself when you have another new shiny
.config – also saved with different names to 8 other places, including a USB stick that you buried in the socks drawer and the SD card of your camera. Love the moment when you see you could shave off another handful of options and allow yourself to grin all day long when you go and come back to work. Remember you haven’t shaved since the first
make menuconfig when a kid offers you a place on the bus, despite the fact you’re just 32.
make-kpkg your kernel and
dpkg -i it. Smile and reboot.
Expect to select your kernel in GRUB and be a bit disappointed that you entirely missed the boot menu. Realise you’re still smiling anyway.
At the splash screen, wonder for a split second why neither keyboard nor touchpad work. Realise you can’t log in into the box and stop smiling suddenly.
Detach yourself and say to no one in particular “alright, I’ll just ssh in from the other box.” Try to remember whether
sshd has started.
Start to realise a few things.
Realise in horror it’s not even installed.
Realise that you can’t reboot using the the older kernel, since the boot menu is hidden (you didn’t miss it: it really wasn’t there).
Realise you’re stuck. You’ve sort of locked yourself out your laptop. Realise this is the series of dumbest rookie errors you’ve done in ages.
Realise that, if there were an award for the stupidest thing, you’d win it hands down.
Give up on
ssh and think about logging in using the on-screen keyboard. You still need a way to input characters.
Pray that you’ve enabled the support for a USB mouse. It’s kind of basic, but after what happened you’re doubting yourself about every single thing.
Locate in your head where you last saw a mouse in the house and run like there’s no tomorrow praying it’s still there. Find it and almost shed a tear of joy when you carry your mouse back to the laptop with both hands, like you just found the Graal.
Select each character of your 20-char password and be glad you’re alone and you won’t have to change your password(s) after these shenanigans.
Try to fire up the on-screen keyboard now that you’re logged in. Be lost wondering why this doesn’t work. Breathe slowly and resort to the char map. Admittedly not the best, decidedly better than nothing. Take three minutes to write
sudo su and the password, char by char. As you can only find letters but no numbers or punctuation charaters in this stupid char map, open another shell and paste
ll. Now you can copy paste numbers and some punctuation.
Can’t find the dash but you can write Devanagari in your shell
Open another shell and copy paste
h i s t o r y. OK, now you’ve even got a selection of the most common commands. Realize you’re on the road to victory. Or at least, pretend so.
Now copy paste
apt-get install sshd. Error.
apt-cache search for it. Obviously it’s not sshd. It’s openssh-server. Install it. Error. Can’t find the repo. Move your head towards the top right corner and despair when you understand that wireless support is broken.
You will not be able to ssh in here. Ever.
Panic a bit and try a
dpkg -P linux-image-4.1.6. Read a kind notice warning you you’re about to do a(nother) stupid(TM) thing. Wonder how you can select either ‘OK’ or ‘Cancel’ in this dialog, since you can’t paste control characters. Maybe this is a good thing after all.
Decide to edit the GRUB menu. Last time you checked, you needed to edit menu.lst. Learn that things have moved on and you now have to operate on
/etc/defaults/grub. Open nautilus as root, thank the gods when you see that gedit is installed and regret all the times you said “I don’t need anything else outside
GRUB_HIDDEN_TIMEOUT_QUIET is set to true and
GRUB_TIMEOUT is set to 0. Wonder why people think it’s always best when you hide things from sight. Change to true, 10.
update-grub and reboot.
See the GRUB menu in all its uselessness, displaying a countdown from 10 with no other option.
You’re still on that crippled 4.1.6. Repeat all the weird stuff you just did, but at 10x speed. You’re now a semi-pro of on-screen keyboards, char maps and char copy/pasting.
/boot/grub/grub.cfg. Pause a second to thank for gedit again. See that the most-recent non-custom kernel is the third entry in the menu. So, without thinking twice set
GRUB_DEFAULT from 0 to 2 in
/etc/default/grub. Update-grub and reboot.
Accept that you messed up big time, as the system now enters the BIOS without even showing the useless countdown. You’re now on the path to desperation. Change boot settings and get yourself into a busybox environment. Feel like you’ve just seen the Matrix. At least now the keyboard works. <TAB> <TAB>. There are maybe 30 commands.
vi is not one of them.
Think about mounting your partition, you’ll think how to modify
grub.cfg once you get there.
Try to remember the layout of your HD. Screw it, just do
mount -t ext4 /dev/sdaN /tmp/hd for
N in 1 .. 6. Cry of joy at
/tmp/hd/usr/bin/vi.tiny /tmp/hd/boot/grub/grub.cfg and be relieved watching
vi compose the text of the file. Manually change every pointer to
vmlinuz-4.1.6 to the last working kernel. Save. Reboot.
Back to normality.
Grep for ‘
KEYBOARD‘ and ‘
MOUSE‘ just for fun you
kconfig (and all other 8 copies) and let your jaw drop when you see that neither
CONFIG_MOUSE_PS2 were selected.
GOTO beginning, again. Make menuconfig and go for another spin.
But not tonight.