FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

[SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Thu Aug 23, 2018 2:59 pm

I installed Ubuntu like so: https://www.raspberrypi.org/forums/view ... 6&t=220079
Everything works well from the SD Card. I set up my pi to boot from usb, which it does when fed raspbian on an usb drive.
So I put an image of my working ubuntu distribution to the usb drive. I checked the contents and partition table and such in gparted, everything checks out.

So I stick it in, it boots to uboot. after 2 seconds it should load grub. It does load grub, however instead of my menu it dumps me straight into the console.
After that I get nothing out of grub anymore. ls shows (memdisk) and nothing else. having a look at memdisk with
ls / gives me a single file on that drive, which is /boot/grub/grub.cfg
And I'm stuck there.
My guess is that this build of grub doesn't come with USB support. Any ideas?
Last edited by FalcoGer on Mon Sep 10, 2018 1:25 pm, edited 1 time in total.

FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Wed Sep 05, 2018 2:33 pm

I really need some help here, please?

I have asked the question in more detail here

DirkS
Posts: 9274
Joined: Tue Jun 19, 2012 9:46 pm
Location: Essex, UK

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Wed Sep 05, 2018 4:31 pm

FalcoGer wrote:
Wed Sep 05, 2018 2:33 pm
I have asked the question in more detail here
Why would I go somewhere else to find out what's wrong with your system?

B.Goode
Posts: 6544
Joined: Mon Sep 01, 2014 4:03 pm
Location: UK

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Wed Sep 05, 2018 5:14 pm

FalcoGer wrote:
Wed Sep 05, 2018 2:33 pm
I really need some help here, please?

I have asked the question in more detail here

Since it is known that the Raspberry Pi Foundation recommended and supported Raspbian Stretch Operating System does boot correctly from a mass storage device connected to an appropriately configured RPi3, I'd say that your decision to ask your question in a Ubuntu forum was a wise step to take.

procount
Posts: 1295
Joined: Thu Jun 27, 2013 12:32 pm
Location: UK

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Thu Sep 06, 2018 9:20 am

In your linked post you said:
So I pulled an image of that, put it on an usb drive (usb to m2 sata adapter), which should just behave like any other flash drive. So, I turn it on. U boot starts, I don't see anything different from normal. Then it loads grub.
And in your post above:
I checked the contents and partition table and such in gparted, everything checks out.
But you haven't mentioned whether you changed any of the references in UBoot or grub to account for the fact that you are now running on the USB device instead of the SD card. Unless you are using PARTUUIDS or UUIDS everywhere, some things may still be pointing back at /dev/mmcblk0pX instead of /dev/sdaX and so they won't be found.
I have no experience with grub, but my experience of moving UBoot based OSes onto USB has been painful, so I try to remove UBoot when possible - it doesn't seem to be of much benefit on a Raspberry Pi over its own bootloader.
PINN - NOOBS with the extras... https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=142574

FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Thu Sep 06, 2018 8:42 pm

procount wrote: it doesn't seem to be of much benefit on a Raspberry Pi over its own bootloader.
I don't understand the Pi's own bootloader.
I'd use it if I knew how. also it's an 64bit kernel, which is located at /dev/sda3/boot/vmlinuz or (hd?,msdos3)/boot/vmlinuz/

I cloned the image from the sd card to the m2 sata drive, so the uuids should be the same.
I also use UUIDs in the grub config (which isn't loaded, because grub doesn't know what an usb flash drive is), for both kernel root selection and grub root selection. I didn't configure uboot at all, and I wouldn't know how to.

As I said, I don't know black magic booting, but if you could tell me how to get it to work I don't mind how.
Thanks for your help.

procount
Posts: 1295
Joined: Thu Jun 27, 2013 12:32 pm
Location: UK

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Fri Sep 07, 2018 8:46 am

Unfortunately, I won't have time to look into this for a couple of weeks. But maybe have a look at Gentoo64 by Sakaki as that is a similar 64 bit kernel that uses the Rpi bootloader with no uboot nor grub.
PINN - NOOBS with the extras... https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=142574

User avatar
sakaki
Posts: 93
Joined: Sun Jul 16, 2017 1:11 pm

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Fri Sep 07, 2018 1:49 pm

FalcoGer,

as procount kindly points out, I maintain a 64-bit Gentoo image for the RPi3B/B+ (here), that can be booted from microSD card or USB.

Assuming you'd rather use Ubuntu rather than Gentoo though, I also maintain a weekly-autobuild of a 64-bit kernel for the RPi3B/B+ (here); this was originally done for Gentoo users, but there is nothing Gentoo-specific about it really (for example, there is now an AUR Arch Linux package (here) that uses it as upstream).

So if you like, to get something working, you can trying writing the latest release of this 64-bit kernel / module set (no compilation required) into your existing image; the result should then boot without grub getting involved (and will still be Ubuntu!)

To try this, take the USB stick with your Ubuntu image on it, and insert it in a Linux PC. Find the device path of the stick using "lsblk" or "dmesg | tail" (I will write /dev/sdX in the below, but obviously, substitute with the actual path, /dev/sdb, /dev/sdc or whatever). If your PC has automounted any partitions from the USB stick, unmount them before proceeding.

Then, mount the root and boot partitions to known mountpoints, thus:

Code: Select all

[email protected] # mkdir -pv /tmp/usbroot
[email protected] # mount -v /dev/sdX3 /tmp/usbroot
[email protected] # mkdir -pv /tmp/usbroot/boot
[email protected] # mount -v /dev/sdX1 /tmp/usbroot/boot
(remember to substitute /dev/sdX3, /dev/sdX1 with the actual paths /dev/sdc3, /dev/sdc1 or whatever).

Now download and install the latest 64-bit kernel build tarball, and install it, preserving the old u-boot bootloader:

Code: Select all

[email protected] # mv -v /tmp/usbroot/boot/kernel8.img /tmp/usbroot/boot/uboot.img
[email protected] # wget -c https://github.com/sakaki-/bcmrpi3-kernel/releases/download/4.14.67.20180904/bcmrpi3-kernel-4.14.67.20180904.tar.xz
[email protected] # tar -xJf bcmrpi3-kernel-4.14.67.20180904.tar.xz -C /tmp/usbroot
[email protected] # sync
Next, we need to set up an appropriate command line for this new kernel. Issue:

Code: Select all

[email protected] # nano -w /tmp/usbroot/boot/cmdline.txt
and place in that file:

Code: Select all

dwc_otg.lpm_enable=0 root=/dev/sda3 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Save, and exit nano. Then dismount:

Code: Select all

[email protected] # umount -v /tmp/usbroot/boot
[email protected] # umount -v /tmp/usbroot
Remove the USB stick and put it in your RPi3. Ensure no other USB devices are inserted, and that the microSD card slot is empty, and then power up.

Hopefully your system should now boot! It will still be Ubuntu, just with a different kernel.

Warning
it isn't best practice to refer to the root by device path in cmdline.txt as I suggest above (here, root=/dev/sda3), since if you have a second storage device plugged into the USB bus during boot, it may get allocated this device path first, and your boot will fail. Instead, you should use UUID-based naming. But try the above first (with just the one key plugged); if it works, I can help you out with changing this. For avoidance of doubt though, even with the above (root=/dev/sda3) approach, it is safe to plug in other devices into the USB bus once the system has booted.

Note
this is just a quick hack to get you going, you won't be using the 'official' Ubuntu kernel package. So depending on your needs, you may find it better to modify grub, include any missing grub USB modules etc. Someone else on here can probably help you better than I can if you'd rather go that route.

But nevertheless, if it boots, your Ubuntu system should work fine; no userland is affected.

hth,

sakaki

Edited cosmetically to clarify that on the OP's system, /boot/kernel8.img was originally a U-boot bootloader, not grub (although it was set up to subsequently load grub). The main content of the post is unaffected by this edit.
Last edited by sakaki on Thu Sep 13, 2018 1:41 am, edited 1 time in total.

FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Sat Sep 08, 2018 8:02 pm

Thank you very much for your answer.
The issue here is unfortunately that the bootloader (uboot and grub) are in partition 1, and ubuntu, is on partition 3 (ext4), along with it's /boot/ directory, which has the kernel and initramfs and nothing much else that's active and working. I can install grub there with apt, but it won't do anything.

So basically partition 1 is /boot, but not mounted to /boot, but it boots anyway if that makes any sense.
Also kernel8.img is uboot in this case.

This is what partition 1 looks like right now

Code: Select all

UBUNTU-BOOT
│   boot.cat			// netboot iso
│   bootcode.bin		// pi bootloader
│   fixup.dat			// pi bootloader
│   fixup_cd.dat		// pi bootloader
│   fixup_db.dat		// pi bootloader
│   fixup_x.dat			// pi bootloader
│   initrd.gz			// netboot iso
│   kernel8.img			// uboot
│   LICENCE.broadcom
│   linux				// netboot iso
│   start.elf			// pi bootloader
│   start_cd.elf		// pi bootloader
│   start_db.elf		// pi bootloader
│   start_x.elf			// pi bootloader
│   
├───.disk				// netboot iso
│       info			// netboot iso
│       
├───boot				// netboot iso
│   └───grub
│       │   efi.img
│       │   font.pf2
│       │   grub (copy).cfg // backup
│       │   grub.cfg	// new config for loading kernel from msdos3 partition
│       │   unicode.pf2
│       │   
│       ├───arm64-efi	// mostly from netboot iso, some additionals copied from some repo, note: usbms not here.
│       │   │   acpi.mod
│       │   │   adler32.mod
│       │   │   affs.mod
│       │   │   afs.mod
│       │   │   all_video.mod
│       │   │   archelp.mod
│       │   │   bfs.mod
│       │   │   bitmap.mod
│       │   │   bitmap_scale.mod
│       │   │   blocklist.mod
│       │   │   boot.mod
│       │   │   bswap_test.mod
│       │   │   btrfs.mod
│       │   │   bufio.mod
│       │   │   cat.mod
│       │   │   cbfs.mod
│       │   │   chain.mod
│       │   │   cmdline_cat_test.mod
│       │   │   cmp.mod
│       │   │   cmp_test.mod
│       │   │   command.lst
│       │   │   config.h
│       │   │   configfile.mod
│       │   │   cpio.mod
│       │   │   cpio_be.mod
│       │   │   crc64.mod
│       │   │   crypto.lst
│       │   │   crypto.mod
│       │   │   cryptodisk.mod
│       │   │   ctz_test.mod
│       │   │   date.mod
│       │   │   datehook.mod
│       │   │   datetime.mod
│       │   │   disk.mod
│       │   │   diskfilter.mod
│       │   │   div.mod
│       │   │   div_test.mod
│       │   │   dm_nv.mod
│       │   │   echo.mod
│       │   │   efifwsetup.mod
│       │   │   efinet.mod
│       │   │   efi_gop.mod
│       │   │   elf.mod
│       │   │   eval.mod
│       │   │   exfat.mod
│       │   │   exfctest.mod
│       │   │   ext2.mod
│       │   │   extcmd.mod
│       │   │   fat.mod
│       │   │   fdt.mod
│       │   │   file.mod
│       │   │   font.mod
│       │   │   fs.lst
│       │   │   fshelp.mod
│       │   │   functional_test.mod
│       │   │   gcry_arcfour.mod
│       │   │   gcry_blowfish.mod
│       │   │   gcry_camellia.mod
│       │   │   gcry_cast5.mod
│       │   │   gcry_crc.mod
│       │   │   gcry_des.mod
│       │   │   gcry_dsa.mod
│       │   │   gcry_idea.mod
│       │   │   gcry_md4.mod
│       │   │   gcry_md5.mod
│       │   │   gcry_rfc2268.mod
│       │   │   gcry_rijndael.mod
│       │   │   gcry_rmd160.mod
│       │   │   gcry_rsa.mod
│       │   │   gcry_seed.mod
│       │   │   gcry_serpent.mod
│       │   │   gcry_sha1.mod
│       │   │   gcry_sha256.mod
│       │   │   gcry_sha512.mod
│       │   │   gcry_tiger.mod
│       │   │   gcry_twofish.mod
│       │   │   gcry_whirlpool.mod
│       │   │   geli.mod
│       │   │   gettext.mod
│       │   │   gfxmenu.mod
│       │   │   gfxterm.mod
│       │   │   gfxterm_background.mod
│       │   │   gfxterm_menu.mod
│       │   │   gptsync.mod
│       │   │   grub.cfg
│       │   │   gzio.mod
│       │   │   halt.mod
│       │   │   hashsum.mod
│       │   │   hello.mod
│       │   │   help.mod
│       │   │   hexdump.mod
│       │   │   hfs.mod
│       │   │   hfsplus.mod
│       │   │   hfspluscomp.mod
│       │   │   http.mod
│       │   │   iso9660.mod
│       │   │   jfs.mod
│       │   │   jpeg.mod
│       │   │   kernel.img
│       │   │   keystatus.mod
│       │   │   ldm.mod
│       │   │   linux.mod
│       │   │   loadenv.mod
│       │   │   loopback.mod
│       │   │   ls.mod
│       │   │   lsacpi.mod
│       │   │   lsefi.mod
│       │   │   lsefimmap.mod
│       │   │   lsefisystab.mod
│       │   │   lsmmap.mod
│       │   │   lssal.mod
│       │   │   luks.mod
│       │   │   lvm.mod
│       │   │   lzopio.mod
│       │   │   macbless.mod
│       │   │   macho.mod
│       │   │   mdraid09.mod
│       │   │   mdraid09_be.mod
│       │   │   mdraid1x.mod
│       │   │   memdisk.mod
│       │   │   memrw.mod
│       │   │   minicmd.mod
│       │   │   minix.mod
│       │   │   minix2.mod
│       │   │   minix2_be.mod
│       │   │   minix3.mod
│       │   │   minix3_be.mod
│       │   │   minix_be.mod
│       │   │   mmap.mod
│       │   │   moddep.lst
│       │   │   modinfo.sh
│       │   │   mpi.mod
│       │   │   msdospart.mod
│       │   │   mul_test.mod
│       │   │   net.mod
│       │   │   newc.mod
│       │   │   nilfs2.mod
│       │   │   normal.mod
│       │   │   ntfs.mod
│       │   │   ntfscomp.mod
│       │   │   odc.mod
│       │   │   offsetio.mod
│       │   │   partmap.lst
│       │   │   parttool.lst
│       │   │   parttool.mod
│       │   │   part_acorn.mod
│       │   │   part_amiga.mod
│       │   │   part_apple.mod
│       │   │   part_bsd.mod
│       │   │   part_dfly.mod
│       │   │   part_dvh.mod
│       │   │   part_gpt.mod
│       │   │   part_msdos.mod
│       │   │   part_plan.mod
│       │   │   part_sun.mod
│       │   │   part_sunpc.mod
│       │   │   password.mod
│       │   │   password_pbkdf2.mod
│       │   │   pbkdf2.mod
│       │   │   pbkdf2_test.mod
│       │   │   png.mod
│       │   │   priority_queue.mod
│       │   │   probe.mod
│       │   │   procfs.mod
│       │   │   progress.mod
│       │   │   raid5rec.mod
│       │   │   raid6rec.mod
│       │   │   read.mod
│       │   │   reboot.mod
│       │   │   regexp.mod
│       │   │   reiserfs.mod
│       │   │   romfs.mod
│       │   │   scsi.mod
│       │   │   search.mod
│       │   │   search_fs_file.mod
│       │   │   search_fs_uuid.mod
│       │   │   search_label.mod
│       │   │   serial.mod
│       │   │   setjmp.mod
│       │   │   setjmp_test.mod
│       │   │   sfs.mod
│       │   │   shift_test.mod
│       │   │   signature_test.mod
│       │   │   sleep.mod
│       │   │   sleep_test.mod
│       │   │   squash4.mod
│       │   │   syslinuxcfg.mod
│       │   │   tar.mod
│       │   │   terminal.lst
│       │   │   terminal.mod
│       │   │   terminfo.mod
│       │   │   test.mod
│       │   │   testload.mod
│       │   │   testspeed.mod
│       │   │   test_blockarg.mod
│       │   │   tftp.mod
│       │   │   tga.mod
│       │   │   time.mod
│       │   │   tr.mod
│       │   │   trig.mod
│       │   │   true.mod
│       │   │   udf.mod
│       │   │   ufs1.mod
│       │   │   ufs1_be.mod
│       │   │   ufs2.mod
│       │   │   verify.mod
│       │   │   video.lst
│       │   │   video.mod
│       │   │   videoinfo.mod
│       │   │   videotest.mod
│       │   │   videotest_checksum.mod
│       │   │   video_colors.mod
│       │   │   video_fb.mod
│       │   │   xen_boot.mod
│       │   │   xfs.mod
│       │   │   xnu_uuid.mod
│       │   │   xnu_uuid_test.mod
│       │   │   xzio.mod
│       │   │   zfs.mod
│       │   │   zfscrypt.mod
│       │   │   zfsinfo.mod
│       │   │   
│       │   └───arm64-efi
│       │           acpi.mod
│       │           adler32.mod
│       │           affs.mod
│       │           afs.mod
│       │           all_video.mod
│       │           archelp.mod
│       │           bfs.mod
│       │           bitmap.mod
│       │           bitmap_scale.mod
│       │           blocklist.mod
│       │           boot.mod
│       │           btrfs.mod
│       │           bufio.mod
│       │           cat.mod
│       │           cbfs.mod
│       │           chain.mod
│       │           cmdline_cat_test.mod
│       │           cmp.mod
│       │           command.lst
│       │           config.h
│       │           configfile.mod
│       │           cpio.mod
│       │           cpio_be.mod
│       │           crc64.mod
│       │           crypto.lst
│       │           crypto.mod
│       │           cryptodisk.mod
│       │           date.mod
│       │           datehook.mod
│       │           datetime.mod
│       │           disk.mod
│       │           diskfilter.mod
│       │           div_test.mod
│       │           dm_nv.mod
│       │           echo.mod
│       │           efifwsetup.mod
│       │           efinet.mod
│       │           efi_gop.mod
│       │           elf.mod
│       │           eval.mod
│       │           exfat.mod
│       │           exfctest.mod
│       │           ext2.mod
│       │           extcmd.mod
│       │           fat.mod
│       │           file.mod
│       │           font.mod
│       │           fs.lst
│       │           fshelp.mod
│       │           functional_test.mod
│       │           gcry_arcfour.mod
│       │           gcry_blowfish.mod
│       │           gcry_camellia.mod
│       │           gcry_cast5.mod
│       │           gcry_crc.mod
│       │           gcry_des.mod
│       │           gcry_dsa.mod
│       │           gcry_idea.mod
│       │           gcry_md4.mod
│       │           gcry_md5.mod
│       │           gcry_rfc2268.mod
│       │           gcry_rijndael.mod
│       │           gcry_rmd160.mod
│       │           gcry_rsa.mod
│       │           gcry_seed.mod
│       │           gcry_serpent.mod
│       │           gcry_sha1.mod
│       │           gcry_sha256.mod
│       │           gcry_sha512.mod
│       │           gcry_tiger.mod
│       │           gcry_twofish.mod
│       │           gcry_whirlpool.mod
│       │           geli.mod
│       │           gettext.mod
│       │           gfxmenu.mod
│       │           gfxterm.mod
│       │           gfxterm_background.mod
│       │           gfxterm_menu.mod
│       │           gptsync.mod
│       │           gzio.mod
│       │           halt.mod
│       │           hashsum.mod
│       │           hello.mod
│       │           help.mod
│       │           hexdump.mod
│       │           hfs.mod
│       │           hfsplus.mod
│       │           hfspluscomp.mod
│       │           http.mod
│       │           iso9660.mod
│       │           jfs.mod
│       │           jpeg.mod
│       │           kernel.img
│       │           keystatus.mod
│       │           ldm.mod
│       │           linux.mod
│       │           loadenv.mod
│       │           loopback.mod
│       │           ls.mod
│       │           lsacpi.mod
│       │           lsefi.mod
│       │           lsefimmap.mod
│       │           lsefisystab.mod
│       │           lsmmap.mod
│       │           lssal.mod
│       │           luks.mod
│       │           lvm.mod
│       │           lzopio.mod
│       │           macbless.mod
│       │           macho.mod
│       │           mdraid09.mod
│       │           mdraid09_be.mod
│       │           mdraid1x.mod
│       │           memdisk.mod
│       │           memrw.mod
│       │           minicmd.mod
│       │           minix.mod
│       │           minix2.mod
│       │           minix2_be.mod
│       │           minix3.mod
│       │           minix3_be.mod
│       │           minix_be.mod
│       │           mmap.mod
│       │           moddep.lst
│       │           modinfo.sh
│       │           mpi.mod
│       │           msdospart.mod
│       │           net.mod
│       │           newc.mod
│       │           nilfs2.mod
│       │           normal.mod
│       │           ntfs.mod
│       │           ntfscomp.mod
│       │           odc.mod
│       │           offsetio.mod
│       │           partmap.lst
│       │           parttool.lst
│       │           parttool.mod
│       │           part_acorn.mod
│       │           part_amiga.mod
│       │           part_apple.mod
│       │           part_bsd.mod
│       │           part_dfly.mod
│       │           part_dvh.mod
│       │           part_gpt.mod
│       │           part_msdos.mod
│       │           part_plan.mod
│       │           part_sun.mod
│       │           part_sunpc.mod
│       │           password.mod
│       │           password_pbkdf2.mod
│       │           pbkdf2.mod
│       │           pbkdf2_test.mod
│       │           png.mod
│       │           priority_queue.mod
│       │           probe.mod
│       │           procfs.mod
│       │           progress.mod
│       │           raid5rec.mod
│       │           raid6rec.mod
│       │           read.mod
│       │           reboot.mod
│       │           regexp.mod
│       │           reiserfs.mod
│       │           romfs.mod
│       │           scsi.mod
│       │           search.mod
│       │           search_fs_file.mod
│       │           search_fs_uuid.mod
│       │           search_label.mod
│       │           serial.mod
│       │           setjmp.mod
│       │           setjmp_test.mod
│       │           sfs.mod
│       │           signature_test.mod
│       │           sleep.mod
│       │           sleep_test.mod
│       │           squash4.mod
│       │           syslinuxcfg.mod
│       │           tar.mod
│       │           terminal.lst
│       │           terminal.mod
│       │           terminfo.mod
│       │           test.mod
│       │           testload.mod
│       │           testspeed.mod
│       │           test_blockarg.mod
│       │           tftp.mod
│       │           tga.mod
│       │           time.mod
│       │           tr.mod
│       │           trig.mod
│       │           true.mod
│       │           udf.mod
│       │           ufs1.mod
│       │           ufs1_be.mod
│       │           ufs2.mod
│       │           verify.mod
│       │           video.lst
│       │           video.mod
│       │           videoinfo.mod
│       │           videotest.mod
│       │           videotest_checksum.mod
│       │           video_colors.mod
│       │           video_fb.mod
│       │           xfs.mod
│       │           xnu_uuid.mod
│       │           xnu_uuid_test.mod
│       │           xzio.mod
│       │           zfs.mod
│       │           zfscrypt.mod
│       │           zfsinfo.mod
│       │           
│       ├───arm64-efi_old		// backup
│       │       acpi.mod
│       │       adler32.mod
│       │       all_video.mod
│       │       archelp.mod
│       │       bfs.mod
│       │       bitmap.mod
│       │       bitmap_scale.mod
│       │       blocklist.mod
│       │       boot.mod
│       │       bswap_test.mod
│       │       btrfs.mod
│       │       bufio.mod
│       │       cat.mod
│       │       cbfs.mod
│       │       chain.mod
│       │       cmdline_cat_test.mod
│       │       cmp.mod
│       │       cmp_test.mod
│       │       command.lst
│       │       cpio.mod
│       │       cpio_be.mod
│       │       crc64.mod
│       │       crypto.lst
│       │       crypto.mod
│       │       cryptodisk.mod
│       │       ctz_test.mod
│       │       date.mod
│       │       datehook.mod
│       │       datetime.mod
│       │       disk.mod
│       │       diskfilter.mod
│       │       div.mod
│       │       div_test.mod
│       │       dm_nv.mod
│       │       echo.mod
│       │       efifwsetup.mod
│       │       efinet.mod
│       │       efi_gop.mod
│       │       elf.mod
│       │       eval.mod
│       │       exfat.mod
│       │       exfctest.mod
│       │       ext2.mod
│       │       fat.mod
│       │       fdt.mod
│       │       file.mod
│       │       font.mod
│       │       fs.lst
│       │       gcry_arcfour.mod
│       │       gcry_blowfish.mod
│       │       gcry_camellia.mod
│       │       gcry_cast5.mod
│       │       gcry_crc.mod
│       │       gcry_des.mod
│       │       gcry_dsa.mod
│       │       gcry_idea.mod
│       │       gcry_md4.mod
│       │       gcry_md5.mod
│       │       gcry_rfc2268.mod
│       │       gcry_rijndael.mod
│       │       gcry_rmd160.mod
│       │       gcry_rsa.mod
│       │       gcry_seed.mod
│       │       gcry_serpent.mod
│       │       gcry_sha1.mod
│       │       gcry_sha256.mod
│       │       gcry_sha512.mod
│       │       gcry_tiger.mod
│       │       gcry_twofish.mod
│       │       gcry_whirlpool.mod
│       │       geli.mod
│       │       gettext.mod
│       │       gfxmenu.mod
│       │       gfxterm.mod
│       │       gfxterm_background.mod
│       │       gfxterm_menu.mod
│       │       gptsync.mod
│       │       grub.cfg
│       │       gzio.mod
│       │       halt.mod
│       │       hashsum.mod
│       │       help.mod
│       │       hexdump.mod
│       │       hfs.mod
│       │       hfsplus.mod
│       │       hfspluscomp.mod
│       │       http.mod
│       │       jfs.mod
│       │       jpeg.mod
│       │       keystatus.mod
│       │       ldm.mod
│       │       linux.mod
│       │       loadenv.mod
│       │       loopback.mod
│       │       ls.mod
│       │       lsacpi.mod
│       │       lsefi.mod
│       │       lsefimmap.mod
│       │       lsefisystab.mod
│       │       lsmmap.mod
│       │       lssal.mod
│       │       luks.mod
│       │       lvm.mod
│       │       lzopio.mod
│       │       macbless.mod
│       │       macho.mod
│       │       mdraid09.mod
│       │       mdraid09_be.mod
│       │       mdraid1x.mod
│       │       memrw.mod
│       │       minicmd.mod
│       │       minix2.mod
│       │       minix2_be.mod
│       │       minix3.mod
│       │       minix3_be.mod
│       │       minix_be.mod
│       │       mmap.mod
│       │       moddep.lst
│       │       mpi.mod
│       │       msdospart.mod
│       │       mul_test.mod
│       │       net.mod
│       │       newc.mod
│       │       ntfs.mod
│       │       ntfscomp.mod
│       │       odc.mod
│       │       offsetio.mod
│       │       partmap.lst
│       │       parttool.lst
│       │       parttool.mod
│       │       part_acorn.mod
│       │       part_amiga.mod
│       │       part_apple.mod
│       │       part_bsd.mod
│       │       part_dfly.mod
│       │       part_dvh.mod
│       │       part_gpt.mod
│       │       part_msdos.mod
│       │       part_plan.mod
│       │       part_sun.mod
│       │       part_sunpc.mod
│       │       password.mod
│       │       password_pbkdf2.mod
│       │       pbkdf2.mod
│       │       pbkdf2_test.mod
│       │       png.mod
│       │       priority_queue.mod
│       │       probe.mod
│       │       procfs.mod
│       │       progress.mod
│       │       raid5rec.mod
│       │       raid6rec.mod
│       │       read.mod
│       │       reboot.mod
│       │       regexp.mod
│       │       reiserfs.mod
│       │       romfs.mod
│       │       scsi.mod
│       │       serial.mod
│       │       setjmp.mod
│       │       setjmp_test.mod
│       │       shift_test.mod
│       │       signature_test.mod
│       │       sleep.mod
│       │       sleep_test.mod
│       │       squash4.mod
│       │       syslinuxcfg.mod
│       │       terminal.lst
│       │       terminal.mod
│       │       terminfo.mod
│       │       test.mod
│       │       testload.mod
│       │       testspeed.mod
│       │       test_blockarg.mod
│       │       tftp.mod
│       │       tga.mod
│       │       time.mod
│       │       tr.mod
│       │       trig.mod
│       │       true.mod
│       │       udf.mod
│       │       ufs1.mod
│       │       ufs1_be.mod
│       │       ufs2.mod
│       │       verify.mod
│       │       video.lst
│       │       video.mod
│       │       videoinfo.mod
│       │       videotest.mod
│       │       videotest_checksum.mod
│       │       video_colors.mod
│       │       video_fb.mod
│       │       xen_boot.mod
│       │       xfs.mod
│       │       xnu_uuid.mod
│       │       xnu_uuid_test.mod
│       │       xzio.mod
│       │       zfscrypt.mod
│       │       
│       └───fonts			// copied manually to have them available through grub config.
│               font.pf2
│               unicode.pf2
│               
├───dtb						// copied from some repo in accordance with instructions for ubuntu installation
│   └───broadcom
│           bcm2837-rpi-3-b.dtb
│           
└───efi						// netboot cd
    └───boot
            bootaa64.efi
I will try what you suggested though. Thanks a lot <3. You saved my ass. Maybe.

Edit: I put your kernel8.img and company into the boot partition and it worked nicely - as in it booted. However it failed to load kernel modules and keyboard and mouse didn't work at all. I suspect the lib folder has some usb drivers.
For some reason my ubuntu VM doesn't want to recognize the drive anymore and I can't copy the modules from lib into the ext4 partition.
So now I wonder if I could just replace kernel8.img with the ubuntu kernel.

Edit2: that was indeed the case. through some putty/sftp magic I was able to copy the modules and now it works.
As a bonus the new kernel seems to create the /dev/gpiomem device <3

Edit3: Unfortunately /dev/gpiomem doesn't seem to work. lsmod shows no bcm2835-gpiomem kernel module, and the device is owned by root:root instead of root:gpio. I couldn't find any gpiomem kernel module in the provided /lib folder.
After changing the owner to root:gpio it still didn't work.

Edit4:
I forgot to add read and write permissions to /dev/gpiomem, it works now <3
Now I only need to figure out how to set the owner to root:gpio and read write access for the device's group at boot and I'm golden.
Thank you so very much.

FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

Re: Unable to USB boot 64bit OS - Grub only has (memdisk)

Mon Sep 10, 2018 12:33 pm

Thank you very much. After replacing kernel8.img with the files provided, I was able to boot. It even creates the /dev/gpiomem device that I was missing before and couldn't get to load for the life of me.

Using this udev rule in /etc/udev/rules.d/60-gpiomem.rules I was able to set the group and permissions needed for rootless GPIO:

Code: Select all

SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'chown -R root:gpio /sys/class/gpio && chmod -r 770 /sys/class/gpio; chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio; chown -R root:gpio /sys/devices/platform/soc/*.gpio/gpio && chmod -R 770 /sys/devices/platform/soc/*.gpio/gpio'"
SUBSYSTEM=="bcm2835-gpiomem", GROUP="gpio", MODE="0660"
There are just 2 small problems left now:
setting root partition via uuid. I tried to use this in cmdline.txt:

root=UUID=<uuid here>, however it doesn't work and just halts at boot time, printing hardware changes when I un/-plug something.

secondly, I use an ft5604 touchscreen device. I found the kernel module rpi_backlight and rpi_ft5604. I tried to load those modules, however it doesn't create /sys/class/backlight/rpi_backlight/ for me to toggle the backlight, nor does it allow touch controls.

this is how you are supposed to control the backlight: https://forums.pimoroni.com/t/official- ... en-faq/959
###Can I control the backlight?

With the latest software you can turn the backlight on and off with the following commands:

On:

echo 0 > /sys/class/backlight/rpi_backlight/bl_power
Off:

echo 1 > /sys/class/backlight/rpi_backlight/bl_power
however /sys/class/backlight/rpi_backlight/ doesn't exist. Even after inserting the module.
I also found this: https://github.com/raspberrypi/linux/issues/1147
Add:

CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_RPI_FT5406=m
and make sure you ship rpi-ft5406-overlay.dtb

The touchscreen overlay is enabled automatically when the LCD is detected by firmware.
However I do not know where to put this rpi-ft5406-overlay.dtb. I just dumped into the boot partition next to the other dtbs...

By now I think I'm doing something wrong, expecting things to just start working when I use modprobe to insert a kernel module.
so what do I need to do to load kernel modules and have them create their devices and stuff?
I also tried to add it to /etc/modules-load.d/ and sure enough it shows up in lsmod after a reboot, but still it doesn't do anything.

Edit: SOLVED!
First I edited fstab to mount the first partition at /boot/
I had to make a config.txt, inside I added

Code: Select all

dtoverlay=rpi-ft5406
dtoverlay=rpi-backlight
then I copied the overlays folder from raspbian's boot.
now everything works well, including the touch screen.

User avatar
sakaki
Posts: 93
Joined: Sun Jul 16, 2017 1:11 pm

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Mon Sep 10, 2018 3:22 pm

FalcoGer wrote:
Mon Sep 10, 2018 12:33 pm
Thank you very much. After replacing kernel8.img with the files provided, I was able to boot. It even creates the /dev/gpiomem device that I was missing before and couldn't get to load for the life of me.
You're welcome, glad you got it working! As to the point in your previous post:
FalcoGer wrote:
Sat Sep 08, 2018 8:02 pm
Edit: I put your kernel8.img and company into the boot partition and it worked nicely - as in it booted. However it failed to load kernel modules and keyboard and mouse didn't work at all. I suspect the lib folder has some usb drivers.
When you copied the kernel8.img from my tarball into your boot partition (#1), you also needed to have copied the matching /lib/modules/<kernel-release-name> folder from that tarball into /lib/modules/ on your root partition (#3). The mount-then-untar instructions I provided would have achieved that [1], but it doesn't really matter - you got up and running, which is the main thing, and now you are using the Ubuntu kernel and module set, if I understand correctly.

Edit: re-reading what you wrote, I realize now that you'd figured this out yourself, and did subsequently copy the modules folder from the tarball into the root, using putty/sftp to work around mounting issues. Apologies ><

As to the remaining issue:
FalcoGer wrote:
Mon Sep 10, 2018 12:33 pm
... setting root partition via uuid. I tried to use this in cmdline.txt:

root=UUID=<uuid here>, however it doesn't work and just halts at boot time, printing hardware changes when I un/-plug something.
what do you get (once successfully booted, with no second USB drive plugged in, using root=/dev/sda3 in cmdline.txt) if you issue on your RPi3:

Code: Select all

# blkid /dev/sda
# blkid /dev/sda3
(feel free to change the output slightly for security, but please don't just delete the strings from the output completely)?

I'm not sure if the Ubuntu installer uses MBR or GPT for the drive, and what you'll need in cmdline.txt will vary slightly depending on that.

best, S.

[1] the untar trick I originally suggested, assumes that you have your boot partition's filesystem mounted at the mount-point /boot within the root partition's filesystem before you initiate the (un)tar. As the tar command itself contains a "-C" directive to switch directories into the root before unpacking, the net effect is that files with path prefix ./boot/... in the tarball get installed into the boot partition, and all others (e.g. those with path ./lib/modules/...) get installed into the root. Mounting things that way was the reason for the instructions:

Code: Select all

[email protected] # mkdir -pv /tmp/usbroot
[email protected] # mount -v /dev/sdX3 /tmp/usbroot
[email protected] # mkdir -pv /tmp/usbroot/boot
[email protected] # mount -v /dev/sdX1 /tmp/usbroot/boot
followed (after downloading the tarball) by:

Code: Select all

tar -xJf bcmrpi3-kernel-4.14.67.20180904.tar.xz -C /tmp/usbroot
Hope that makes sense ^-^

FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Tue Sep 11, 2018 10:49 am

firstly, I chanced fstab to mount part1 on /boot now

I did use UUID in the kernel command line in grub before.
My partitions use standard msdos MBR cause I read that the raspi doesn't like GPT

also blkid needs root permissions (for some reason)

Code: Select all

(msdos) - PTUUID="12345678" PTTYPE="dos"
+ 1 - LABEL="BOOT" UUID="1234-5678" TYPE="vfat" PARTUUID="12345678-90"
+ 2 - UUID="12345678-1234-1234-1234-123456789abc" TYPE="swap" PARTUUID="12345678-90"
+ 3 - LABEL="root" UUID="12345678-1234-1234-1234-123456789abc" TYPE="ext4" PARTUUID="12345678-90"
As I said before, I used UUIDs in the grub kernel command line like so:

Code: Select all

root=UUID=12345678-1234-1234-1234-123456789abc
but using this syntax halts booting with cmdline.txt

I read somewhere that PARTUUID works, however I also read that some software like gparted quietly changes it, and that's not really an option.

on a side note, why is disclosing uuids a security risk?

User avatar
sakaki
Posts: 93
Joined: Sun Jul 16, 2017 1:11 pm

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Tue Sep 11, 2018 11:11 am

For MBR, suppose your blkid for /dev/sda is showing up as (say):

Code: Select all

/dev/sda: PTUUID="1234567a" PTTYPE="dos"
(putting a non-numeric hex digit in there for clarity), then you would use

Code: Select all

root=PARTUUID=1234567A-03
in cmdline.txt (leaving the rest of that file as-is), to specify the third partition (the -03 suffix) on that drive for use as root.
I've found it better to capitalize any hex digits in the PARTUUID spec.

Please let me know if that (modified for your actual UUID obviously!) works for you.

hth, sakaki

FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Tue Sep 11, 2018 11:42 am

works fine.
thanks a ton for all the help

User avatar
sakaki
Posts: 93
Joined: Sun Jul 16, 2017 1:11 pm

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Tue Sep 11, 2018 12:16 pm

No problem, glad it is working ^-^

Incidentally, if you have your /etc/fstab set up to automount the first partition at /boot (which I think you said you did), then you can easily update your kernel and module set (from a booted system) in future.

For example, there's been a new weekly autobuild bcmrpi3-kernel release today, so to install it you'd just need to issue (from the running 64-bit Ubuntu RPi3 system):

Code: Select all

pi64 ~ # cp /boot/kernel8.img{,.old}
pi64 ~ # wget -c https://github.com/sakaki-/bcmrpi3-kernel/releases/download/4.14.69.20180911/bcmrpi3-kernel-4.14.69.20180911.tar.xz
pi64 ~ # tar -xJf bcmrpi3-kernel-4.14.69.20180911.tar.xz -C /
pi64 ~ # sync && reboot
(I'd recommend backing up your working image before trying this the first time, though!)

Once rebooted, you can rm -rf delete your /lib/modules/<old-kernel-release-name> directory, and the tarball, at your option, to save space.

hth, sakaki

PS: This download/install/cleanup process can easily be packaged, of course, as I have done here for this kernel autobuild on Gentoo, and as ava1ar has done (using these tarballs as upstream) here for Arch (AUR).

cyclic
Posts: 5
Joined: Thu May 30, 2013 4:47 pm

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Wed Sep 12, 2018 3:06 pm

Does the arrangement with Ubuntu you describe above handle apt updates generally correctly?
What happens if Ubuntu issue a kernel update themselves presumably that will overwrite your kernel?

User avatar
sakaki
Posts: 93
Joined: Sun Jul 16, 2017 1:11 pm

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Wed Sep 12, 2018 5:43 pm

cyclic wrote: Does the arrangement with Ubuntu you describe above handle apt updates generally correctly?
What happens if Ubuntu issue a kernel update themselves presumably that will overwrite your kernel?
I don't use Ubuntu day-to-day, so I might well have got the following wildly wrong; however, at first glance I don't believe there should be a clash during kernel upgrades.

The OP is (as I understand it) using Ubuntu 18.04 ("bionic"), from a fairly vanilla install, so presumably linux-generic is used, which in turn pulls in linux-headers-generic and linux-image-generic. The latter pulls in (atm, inter alia, on arm64) linux-image-4.15.0-20-generic which in turn installs the following files:

Code: Select all

/boot/vmlinuz-4.15.0-20-generic
/usr/share/doc/linux-image-4.15.0-20-generic/changelog.Debian.gz
/usr/share/doc/linux-image-4.15.0-20-generic/copyright
Also pulled in is linux-modules-extra-4.15.0-20-generic which installs:

Code: Select all

/lib/modules/4.15.0-20-generic/kernel/block/bfq.ko
/lib/modules/4.15.0-20-generic/kernel/block/kyber-iosched.ko
...
/lib/modules/4.15.0-20-generic/kernel/sound/usb/snd-usbmidi-lib.ko
/usr/share/doc/linux-modules-extra-4.15.0-20-generic/changelog.Debian.gz
/usr/share/doc/linux-modules-extra-4.15.0-20-generic/copyright
So we have, in summary (under the convention that the the first partition is mounted at /boot on the root filesystem):

Ubuntu, via linux-generic:
kernel: /boot/vmlinuz-<base_release_name>-<rev>-generic
modules: /lib/modules/<base_release_name>-<rev>-generic

bcmrpi3-kernel from tarball:
kernel: /boot/kernel8.img
modules: /lib/modules/<base_release_name>-<last_commit_hash_shortform>+

No collision.

Userland package management will be unaffected by the choice of kernel, of course.[1] So the bcmrpi3-kernel approach should be able to safely co-exist with (e.g.) Ubuntu's linux-generic.

Now, the only fly in this ointment would be if:
  1. the Ubuntu system had a bootloader binary originally installed at /boot/kernel8.img and
  2. that bootloader itself (as opposed to configuration files used by it, as for grub, say) was overwritten by a package management rule triggered during kernel upgrade (or by a version upgrade of that bootloader itself, were it to be managed by an Ubuntu package).
As I understand it, though, the OP's system does not have such a setup (I may have this wrong), since (in the install instructions s/he quoted), we read:
FalcoGer wrote:
Thu Aug 09, 2018 5:39 pm
...
Get and crosscompile UBoot

Code: Select all

sudo apt-get install build-essential bison flex git make gcc gcc-aarch64-linux-gnu
git clone --progress http://git.denx.de/u-boot.git
cd u-boot
make rpi_3_defconfig
make CROSS_COMPILE=aarch64-linux-gnu-
sudo cp u-boot.bin /mnt/kernel8.img
cd ..
...
So condition (1) applies (in fact the OP's original setup appears to have the RPi3 bootloader start U-boot, which then starts grub, which then starts the kernel) , but (2) does not. Nothing from the Ubuntu/apt side is going to try (I believe) to update /boot/kernel8.img (as it was a manually built binary), so the bcmrpi3-kernel should be safe from overwrite.

On a closing note, it is a little space-inefficient to have an unused Ubuntu kernel and module set present on the drive, but I'm not sure how tricky it would be to remove outright, or replace with a 'proper' binary kernel package using bcmrpi3-kernel as upstream via a user repo (as I have done here on Gentoo, and as ava1ar has done here for Arch (AUR)). I'll leave that to someone with actual Ubuntu expertise to answer ^-^

hth, sakaki

[1] Well, unless a userland package in the Ubuntu repos makes assumptions about kernel configuration items that are missing or different in bcmrpi3_defconfig, of course. I don't believe this should pose any major issues though.

FalcoGer
Posts: 35
Joined: Mon Jul 09, 2018 6:35 am

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Thu Oct 04, 2018 10:45 am

sakaki wrote:
Tue Sep 11, 2018 12:16 pm
PS: This download/install/cleanup process can easily be packaged, of course, as I have done here for this kernel autobuild on Gentoo, and as ava1ar has done (using these tarballs as upstream) here for Arch (AUR).
How would you go around doing this packaging stuff?
I want an automated way to update the kernel-modules and the kernel itself in /boot/
automated meaning no typing in version numbers or downloadlinks to the tarballs
preferably with apt upgrade, but a shell script would be okay, too.

I had a look at that arch linux package you linked, but I'm not sure if it's such a great idea to add that to the ubuntu apt sources.
Also from reading the comments I got
Please note, there are no corresponding kernel headers package yet. linux-raspberrypi-headers supposed to work, but they are not available for aarch64. I may add headers package later if I will need it myself.
This might be a problem down the line.

Edit
I came up with this shell script, thanks to this guy:

Code: Select all

#!/bin/bash

if [[ $EUID -ne 0  ]]; then
	echo "This script must be run as root"
	exit 1
fi

KERNEL_GIT_USERNAME="sakaki-"
KERNEL_GIT_PROJECTNAME="bcmrpi3-kernel"

KERNEL_GIT_NAME="$KERNEL_GIT_USERNAME"/"$KERNEL_GIT_PROJECTNAME"


# usage:
# get_latest_release git path eg. "sakaki-/bcmrpi-kernel"
get_latest_release()
{
	wget -q --output-document=- "https://api.github.com/repos/$1/releases/latest" |
		grep '"tag_name":' |
		sed -E 's/.*"([^"]+)".*/\1/'
}

# download the archive
echo downloading "$KERNEL_GIT_NAME"
VERSION=$(get_latest_release $KERNEL_GIT_NAME)
echo version "$VERSION"
FILENAME="$KERNEL_GIT_PROJECTNAME"-"$VERSION".tar.xz
echo file "$FILENAME"
# spacer
echo
wget -c https://github.com/"$KERNEL_GIT_NAME"/releases/download/"$VERSION"/"$FILENAME"
echo

# make backup
echo Making backup
cp -vi /boot/kernel8.img /boot/kernel8.img-$(uname -r)
cp -vi /boot/System.map /boot/System.map-$(uname -r)
cp -vi /boot/bcm2710-rpi-3-b-plus.dtb /boot/bcm2710-rpi-3-b-plus.dtb-$(uname -r)
cp -vi /boot/bcm2710-rpi-3-b.dtb /boot/bcm2710-rpi-3-b.dtb-$(uname -r)
cp -vi /boot/bcm2837-rpi-3-b.dtb /boot/bcm2837-rpi-3-b.dtb-$(uname -r)
cp -vi /boot/config /boot/config-$(uname -r)

echo
echo
# check with user
while true; do
	read -p "Archive downloaded. Are you sure you want to extract it to / ? [Y/N]: " -n 1 -r
	echo
	case $REPLY in
		[Yy]* )
			# extract archive
			tar -x -J -v -f "$FILENAME" -C /
			break;;
		[Nn]* )
			exit;;
		* )
			echo "Please answer Y or N";;
	esac
done

echo
echo

# done
echo "All done. Reboot to use new kernel."
End of Edit

Another problem:
The raspbian kernel is really old, too, with the latest kernel being 4.18, it's still way back at 4.14. I wanted to use ubuntu to get a recent kernel to begin with, and I can probably do it by just renaming the generic kernel to "image8.img", but that again would come with non working gpio pins.

Currently waiting for Mate arm64 for raspberry.

It's all just a giant mess. Either you run with dated kernels, or stuff doesn't work.

User avatar
sakaki
Posts: 93
Joined: Sun Jul 16, 2017 1:11 pm

Re: [SOLVED] Unable to USB boot 64bit OS - Grub only has (memdisk)

Thu Oct 04, 2018 3:58 pm

Building the logic of the script you put together into a custom Ubuntu package shouldn't be particularly hard, but I'm not the person to advise you on how to go about it, been a while since I did much on Debian ><

The 4.14 kernel is somewhat old, but it's also a long-term-support variant, so important stuff gets backported to it. There is e.g. a 4.18.y branch of the raspberry pi kernel too, but until the default branch changes probably best to stick with 4.14. The various pi-specific stuff is slowly working its way upstream as well of course.

best, sakaki

Return to “Other”