Topic: Jessie and kernel/u-boot packages.

I followed the Debian Jessie bootstrap instructions and now have this installed to an SSD. However, the kernel residing on the MicroSD card is fairly old and I saw that there were much more recent packages in the repos. So with this in mind I installed:

* linux-image-novena
* linux-firmware-image-novena

The kernel and devicetree got placed in /usr/share/linux-novena, so I copied them to the boot filesystem on /dev/mmcblk0p1 (as zImage and novena.dtb). I didn't have much luck trying to boot the new kernel by modifying the boot script, so I next installed u-boot-novena from the repos while the MicroSD card boot partition was mounted under /boot. Following this I ran:

# novena-install-spl -d /dev/mmcblk0

I got much further this time, but the HDMI output (this is a bare board) hung at the four penguins and with complaints about not being able to load USB, Bluetooth and ath3k firmware (and possibly others).

So my question is: with Jessie, and the boot files on the MicroSD and the rootfs on SSD, how do you get and up running with a current kernel?

I seem to recall that when using a Novena Laptop I had on loan — and where Jessie came pre-installed — the kernel was updated via simply apt-get upgrade. Although I could be wrong...



Re: Jessie and kernel/u-boot packages.

The bootloader (u-boot-novena) contains a kernel.d script that moves the kernel into place.  Once you have u-boot-novena installed, kernel updates will be moved to the correct location for u-boot-novena to find them.

The bootloader itself is comprised of two parts: An initial Secondary Program Loader (SPL), and a main part called u-boot.img.  The SPL is considered more-or-less fixed, and is what does RAM calibration.  Because it's somewhat difficult to install (requiring novena-install-spl, dd, or some other special command), it is designed to be installed exactly once at the factory, and never updated.

The second stage of U-boot, u-boot.img, comes off of the root of the first partition of the SD card.  Because of this, if u-boot.img gets deleted/broken, it's just a matter of inserting it into any SD slot and loading a new one.  It's designed to allow you to get your system working again when all you have is a Windows machine.

If you're just getting the penguins, it may be that it can't find the rootfs.  If you have the "sataroot" flag set (via either novena-eeprom-gui or the novena-eeprom command line program), make sure your SATA drive has the identifier 0x4e6f7653 ('NovS' in hex).  Use the "x" and then "i" command of fdisk to set this.

If you hold down the User button during boot, it will fall back to booting off of 0x4e6f764d ('NovM'), which should be the internal MMC card.

Re: Jessie and kernel/u-boot packages.

Hi Sean,

Many thanks, that was it! I was pretty sure I'd previously set the disk identifier, but if I had it hadn't stuck.

What should I have in my fstab? The Jessie bootstrap process didn't populate this. If I copy across the /etc/fstab from /dev/mmcblk0p2 (recovery image) and update the line mounting this partition under /, to instead mount /dev/sda3, it hangs on boot. So I'm not quite sure what should be in there and I manually mounted mmcblk0p1 to /boot in order to copy in zimage and novena.dtb from /usr/share/linux-novena.



Re: Jessie and kernel/u-boot packages.

Here's my /etc/fstab which is probably old enough that it was created by hand, but it should work for what you want to do:

/dev/sda3            /                    ext4       barrier=1,noatime,nodiratime,errors=remount-ro     0  1
proc                 /proc                proc       defaults                      0  0
devpts               /dev/pts             devpts     mode=0620,gid=5               0  0
tmpfs                /tmp                 tmpfs      defaults                      0  0
/dev/disk/by-path/platform-2198000.usdhc-part1   /boot                vfat       defaults                      2  2 
/dev/sda2            swap                 swap       defaults                      0  0

Note that /dev/mmcblk0p2 is probably a small swap partition.  The root is actually /dev/mmcblk0p3 (which I tend to call /dev/disk/by-path/platform-2198000.usdhc-part3 so it's consistent even with an SD card inserted.)

The bootloader passes the partid to the kernel, and specifies "root=PARTUUID=4e6f7653-03".  That means the rootfs must be on a partition with the identifier "0x4e6f7653", partition number three.  Make sure you call "w" to write out the partition table.

Also, make sure "novena-eeprom" lists "sataroot" under the "Features" list.  If not, you should add it.

Re: Jessie and kernel/u-boot packages.

xobs, I was wondering about a semi-relating thing: how amenable would you be to changes to novena-linux/novena-uboot that make them more like the standard Debian kernel & bootloader packages? ie changes to bootloader integration, /boot generation, initramfs generation, etc?

I'm not asking you to do the work, just wondering if you'd accept patches that headed in that direction. It's one of the stumbling blocks I hit when I looked at the debian installer stuff.

(Although I haven't had any real time to play with my Novena in ages sad, so I'm not really offering to create these patches. I'm just wondering what you think about it as an idea.)

Re: Jessie and kernel/u-boot packages.

I'd be amenable to it.

When I looked, there didn't seem to be a standard at all for ARM platforms, so I struck out on my own.  I modeled it off of grub.  But if work has been done in that area, it would be nice to merge changes in and become more standard.