sebastiano.tronto.net

Source files and build scripts for my personal website
git clone https://git.tronto.net/sebastiano.tronto.net
Download | Log | Files | Refs | README

netbooks.md (11618B)


      1 # Long live netbooks!
      2 
      3 [*Netbook*](https://en.wikipedia.org/wiki/Netbook) was a term used
      4 around 2010 to describe small laptops. They could be anywhere from 8"
      5 to 11" in screen size. One of the most popular lines of netbooks were the
      6 [Asus eee PCs](https://en.wikipedia.org/wiki/Asus_Eee_PC).
      7 
      8 The appeal was clear: you could bring this tiny computer around and take
      9 advantage of any free wifi connection - be it on a train, in a pub or
     10 at school - to surf the web.
     11 
     12 Netbooks had an unfortunate destiny for at least two reasons. Firstly,
     13 laptop technology was not at a point where you could have a small,
     14 relatively powerful and cheap device all in one. Most netbooks were
     15 underpowered and struggled to run Windows out of the box. Secondly,
     16 smartphones and tablets, that came out very shortly after, quickly
     17 overtook the netbooks' market share and sent them to oblivion.
     18 
     19 This post is going to be in two parts: first I want to talk about the
     20 netbook I got in 2010 and how it turned out to be useful in 2022. The
     21 second part is going to be a list of steps I took to set it up after
     22 re-installing OpenBSD on it.
     23 
     24 ## Part 1: My "darkstar"
     25 
     26 ### In the 2010's
     27 
     28 Back in 2010, when I was in high school, I started going on 4-5 days
     29 long trips about once every two months or so. I did not have a laptop,
     30 only a desktop PC, so my mother thought it was a good idea to get me
     31 a netbook.  She chose an Asus 1001px, a very standard 10" netbook.
     32 It was in many ways an unremarkable machine, with 1Gb of ram and a weak
     33 dual core CPU. But it got its job done.
     34 
     35 ![My netbook](darkstar.jpg)
     36 
     37 It ran some Windows monstrosity that I did not dare touching (was it
     38 Vista or 7?). I immediately installed Linux on it. My favorite distro
     39 at the time was [Slackware](http://www.slackware.com/), but I decided to
     40 try out Arch on this one. I used the hostname *darkstar*, because it was
     41 the default on Slackware and it fit nicely with its black plastic. I
     42 have used that name for this laptop on every other OS I installed on it
     43 ever since.
     44 
     45 Arch Linux was a bad choice: since I would use this netbook only once
     46 every two months, every time I updated it something broke. Or, as an Arch
     47 fanboy would say nowadays, something "required manual intervention". At
     48 some point I got rid of Arch and installed Slackware.
     49 
     50 I also used it without problems at the beginning of university, in 2013,
     51 but after a few months I bought a more powerful 15" regular laptop.
     52 All in all I have not used my darkstar much, but it was a useful tool.
     53 
     54 ### Distro hopping in 2020
     55 
     56 When the first lockdowns came in March 2020 I decided to use my netbook
     57 for some little experiments. Nothing crazy, just trying out some distros
     58 and play around with them - I had not *distro-hopped* since 2011 or so.
     59 
     60 I installed [Alpine](https://www.alpinelinux.org/) first. It was fine,
     61 but the lack of man pages by default did not amuse me. Then I tried
     62 [Void](https://voidlinux.org/), that I ended up installing on my main
     63 laptop later that year, and I am still using it as my main OS to this day.
     64 Finally I decided to try something different and went with OpenBSD.
     65 
     66 ### Backpacking in 2022
     67 
     68 Earlier this year I traveled around Europe for a couple of weeks,
     69 mainly to attend the
     70 [Rubik's Cube European Championship](https://www.worldcubeassociation.org/competitions/Euro2022)
     71 and other events.  I wanted to travel with just a backpack, no suitcase,
     72 and my main laptop is quite large and heavy. I did not want to rely on
     73 my smartphone alone, so I thought that carrying around my old netbook
     74 could be a good compromise.
     75 
     76 I kept OpenBSD, because I figured I would mostly be using it in tty only,
     77 no X, and the command line utilities seem more polished and cohesive on
     78 OpenBSD than on Linux. Using something like Firefox was doable in case
     79 of emergency, but definitely not a pleasant experience. Some things like
     80 streaming videos from YouTube were completely impossible - but there
     81 were workarounds, like using [yt-dlp](https://github.com/yt-dlp/yt-dlp).
     82 
     83 I decided to buy a larger battery, that also made it stand a bit taller,
     84 kinda like a typewrite, and some extra RAM - I maxed it out at 2Gb, it
     85 cannot handle more. Since the hard drive was not easily accessible without
     86 taking apart the whole thing, I did not upgrade to an SSD drive at first.
     87 I was afraid of not being able to detach and re-attach the keyboard and
     88 touchpad connectors without damaging them.
     89 
     90 My little netbook turned out to be more useful than I thought: the
     91 organization team at a cube competition I attended during that trip was
     92 short on laptops, and mine was perfectly capable of displaying pdf files.
     93 The fact that there was no file manager installed made it a bit hard
     94 for other people to operate it when I was not around, but in the end we
     95 managed to use it.
     96 
     97 ![My netbook getting work done at a cube competition](scramble.jpg)
     98 
     99 After the trip I kept using it occasionally, as a "sofa laptop". I wrote
    100 a couple of these blog posts on it. Who needs more than 1Gb of ram to
    101 write some Markdown and push it with rsync?
    102 
    103 A few weeks ago I changed my mind about the hard drive and tried
    104 disassemblying *darkstar* completely, just to reassemble it and check
    105 that all went well. And it did! So I bought a cheap SSD and used it to
    106 replace the original hard drive.
    107 
    108 ![The original hard disk and all the pieces I had to remove to reach it](hd.jpg)
    109 
    110 Of course when putting everything back together I somehow improperly
    111 attached the keyboard, so that it worked in the BIOS but not after boot,
    112 and I also damaged the touchpad connector. Luckily I was able to fix
    113 both these issues.
    114 
    115 I was finally ready to install OpenBSD 7.1 on the new SSD.
    116 
    117 ## Part 2: Installing and configuring OpenBSD
    118 
    119 This section is probably more useful for me as a personal note than for
    120 anyone else who might be reading it. Nonetheless, I figured people might
    121 be curious, and it does not hurt to publish it here. If you don't care
    122 about it, just skip to the "Conclusions" section at the end.
    123 
    124 The whole install process was super simple and took about 6 minutes.
    125 The new SSD drive probably helped a lot here. After the installation of the
    126 base system was completed, I made a few tweaks and added some packages.
    127 I am not one of those cool people who have a git repository with all their
    128 config files and script that put everything into place automatically, I just
    129 do everything by hand. Since I don't reinstall my OS every other day it is
    130 not a big deal.
    131 
    132 ### Security patches
    133 
    134 First I updated the base system by installing the newest security patches
    135 with `syspatch(8)`
    136 
    137 ```
    138 # syspatch
    139 Get/Verify syspatch71-001_wifi.tgz 100% |********************|  4423KB   00:003
    140 Installing patch 001_wifi
    141 syspatch: updated itself, run it again to install missing patches
    142 ```
    143 
    144 Ok then, one more time
    145 
    146 ```
    147 # syspatch
    148 (...)
    149 Errata can be reviewed under /var/syspatch
    150 ```
    151 
    152 All good now!
    153 
    154 ### Enabling doas for the regular user
    155 
    156 OpenBSD's `doas` is roughly the equivalent of Linux's `sudo`. Unlike `sudo`,
    157 we just need a one-line config file to use it:
    158 
    159 ```
    160 # echo 'permit persist :wheel' > /etc/doas.conf
    161 ```
    162 
    163 ### Swap caps lock and escape
    164 
    165 I like to have the Caps Lock key function as Escape, and vice versa. To have
    166 this in X one can use `setxkbmap -option caps:swapescape`, but for the OpenBSD
    167 console we need to use `wsconsctl(8)`, or to edit `wsconsctl.conf(5)` if we
    168 want to make it permanent:
    169 
    170 ```
    171 # cat > /etc/wsconsctl.conf
    172 keyboard.map+="keycode 58 = Escape"
    173 keyboard.map+="keycode  1 = Caps_Lock"
    174 ^D
    175 ```
    176 
    177 The change won't happen until we reboot or we issue the
    178 corresponding `wsconsctl` commands.
    179 
    180 ### Generating ssh keys
    181 
    182 Simply run
    183 
    184 ```
    185 $ ssh_keygen
    186 ```
    187 
    188 to get a new pair for RSA keys. Using another device (with its own ssh key), I then
    189 copy the public key to my server's `.ssh/authorized_keys` file.
    190 
    191 ### Installing and configuring syncthing
    192 
    193 I use [syncthing](https://syncthing.net/) to share some files and folders
    194 between my devices. It is a nice and flexible piece of software that does
    195 not rely on any centralized service. I use it both to keep important files
    196 synchronized between my main devices and to quickly exchange
    197 data locally between my phone and my laptop (e.g. pictures). One of the
    198 advantages about its decentralized structure is that in the latter case
    199 I do not need an internet connection (nor a cable).
    200 
    201 After installing syncthing with
    202 
    203 ```
    204 # pkg_add -u syncthing
    205 ```
    206 
    207 I enabled the corresponding service
    208 
    209 ```
    210 # rcctl enable syncthing
    211 ```
    212 
    213 I also want it to run as my user instead as the default `_syncthing` user:
    214 
    215 ```
    216 # rcctl set syncthing user sebastiano
    217 ```
    218 
    219 Finally, I had to adjust the file descriptor limits. As documented in the
    220 official doc `/usr/local/share/doc/pkg-readmes/syncthing`:
    221 
    222 ```
    223 Syncthing is fairly hungry for file descriptors and the default limits may be
    224 insufficient. On OpenBSD, Syncthing uses kqueue(2) to "watch" files, and since
    225 kqueue(2) doesn't support recursive watching, each file has be watched
    226 individually. The upshot of this is that each file in a watched folder will use
    227 one file descriptor.
    228 
    229 If you run Syncthing via the rc.d(8) script, then you can give
    230 Syncthing more file descriptors by adding the following to login.conf(5):
    231 
    232        syncthing:\
    233                 :openfiles-cur=4096:\
    234                 :openfiles-max=4096:\
    235                 :tc=daemon:
    236 
    237 Don't forget to rebuild the login.conf.db file (if necessary):
    238 
    239         # [ -f /etc/login.conf.db ] && cap_mkdb /etc/login.conf
    240 
    241 Note that in addition to ulimits, there is a kernel-level file descriptor limit
    242 which may also need to be adjusted. This limit is managed through the
    243 kern.maxfiles sysctl(8).
    244 ```
    245 
    246 So let's be generous and set these limits very high:
    247 
    248 ```
    249 # echo "kern.maxfiles=4000000" > /etc/sysctl.conf
    250 # cat > /etc/login.conf
    251 
    252 syncthing:\
    253 	:openfiles-cur=1000000:\
    254 	:openfiles-max=1000000:\
    255 	:tc=daemon:
    256 ^D
    257 ```
    258 
    259 I can then configure syncthing using its web-based interface.  To avoid
    260 opening up a full-fledged web browser on this poor little thing, I can
    261 use *ssh port forwarding* from my other laptop:
    262 
    263 ```
    264 # ssh -N -L 8888:localhost:8384 darkstar
    265 ```
    266 
    267 (I won't go into detail on this command; `darkstar` is the hostname of my
    268 netbook, `8384` is syncthing's default port for its web-based interface,
    269 `8888` was picked arbitrarily.)
    270 
    271 I can then open `http://localhost:8888` from my other laptop to access
    272 my netbook's syncthing configuration and add other devices and shared
    273 folders.
    274 
    275 ### All the rest
    276 
    277 Now all that is left to do is pretty straightforward: install some more programs
    278 (such as a browser, a media player and a pdf reader), copy my config files (e.g.
    279 `.profile`, `.nexrc`) from my shared folder, clone some of my git repos.
    280 
    281 Nothing that is worth describing in detail here.
    282 
    283 ## Conclusions
    284 
    285 I like my netbook, and I am glad that I found some practical use for
    286 it even after 12 years.  Its size make it a nice sofa companion, and
    287 its clicky keyboard is just a pleasure to type on - much better than the
    288 mushy one of my main laptop!  It is always a pleasure for me to make good
    289 use of a piece of hardware that most people would consider obsolete and
    290 throw away without thinking about it twice.
    291 
    292 Netbooks were not successful in their time, but I think similar devices
    293 could find their niche today. After all, 13" laptops are quite popular
    294 among the few who actually need one over a tablet or a smartphone. I
    295 am even considering getting an 11" laptop as my next main device - but
    296 of course I would never replace my current one as long as it is working
    297 fine :-)
    298 
    299 Long live netbooks!
    300 
    301 To conclude, here is a picture of my netbook being used to write this
    302 very post:
    303 
    304 ![My netbook working on this blog post](final.jpg)