summaryrefslogtreecommitdiffhomepage
path: root/blog/entry/pinebookpro.mdwn
blob: 65c261951b0aa6e5a9adb387886f82f1acb3bf1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
I recently bought a Pinebook Pro.  This was mainly out of general interest,
but also because I wanted to have a spare portable computer.  When I was
recently having some difficulty with my laptop not charging, I realised that I
am dependent on having access to Emacs, notmuch.el and my usual git
repositories in the way that most people are dependent on their smartphones --
all the info I need to get things done is in there, and it's very disabling
not to have it.  So, good to have a spare.

I decided to get the machine running the hard way, and have been working to
add a facility to install the device-specific bootloader to
[Consfigurator](/tech/code/consfigurator).  It has been good to learn about
how ARM machines boot.  The only really hard part turned out to be coming up
with the right abstractions within Consfigurator, thanks to the hard work of
the Debian U-Boot maintainers.  This left me with a chroot and a corresponding
disk image, properly partitioned and with the bootloader installed.  It was
only then that the difficulties began: getting a kernel and initrd combination
which can output to the Pinebook Pro's screen and take input from its keyboard
is not really straightforward yet, but that's required for inputting disk
encryption passwords, which are required on portable devices.  I don't have
the right hardware to make a serial connection to the machine, so all this
took a lot of trial and error.  I've ended up using Manjaro's patched upstream
kernel build for now, because that compiles in the right drivers, and
debugging an initrd without a serial connection is far too inefficient.

What I keep having to remind myself is that this device isn't really a laptop
in the usual sense -- it's a single board computer that's powering several
pieces of hardware which together roughly constitute a laptop.  I think
something which epitomises this is how the power light doesn't come on when
you hit the power button, but only when the bootloader or operating system
kernel thinks to turn on the LED.  You start up this SBC and it loads up some
software and then once it has got itself going -- several seconds later --
that software starts turning on the screen, keyboard, power LEDs etc.  Whereas
on an ordinary laptop it's more than you turn on the keyboard, screen, power
LEDs etc. all at once, and then /they/ go off and load some software.  Of
course this description is nothing like what's actually going on, but it's my
attempt to capture how it feels as a user, who is installing operating
systems, but otherwise treating the laptop's hardware, including things like
boot ROMs, as a black box.  There are tangible differences between what it is
like to do that with an ordinary laptop and with the Pinebook Pro.

Thanks to Vagrant Cascadian for all the work on U-Boot in Debian and for help
on IRC, Cyril Brulebois for help with crossbuilding, and Birger Schacht for a
[useful blog
post](https://bisco.org/notes/installing-debian-on-the-pinebook-pro/).