Fastboot and Genode OS on Nook HD+

sp3dev

Senior Member
Jul 11, 2006
554
675
0
Kaluga/Moscow
Hi!

This may be of interest to fellow developers. I've taken some time to enable the fastboot protocol for the u-boot in the Nook HD+ and ported the Genode Framework OS.
Act one, part one. Fastboot.
As you know, booting from external sd is done via the u-boot bootloader. I've modified it so that instead of booting from sd, it wait for the fastboot connection from the host PC. Besides, I've fixed the display initialization and now it can display the boot log on the framebuffer console (yay!). Developers (especially verygreen) may want to take a look at
git://github.com/astarasikov/uboot-bn-nook-hd-fastboot.git

Act two. Genode
Genode is a microkernel framework for building runtime environment. It can run on top of many kernels, the most actively developed one is Fiasco_OC. One increadibly cool feature of Genode is that it allows booting many instances of linux and android on the devices where the CPU does not have the virtualization extensions. Though today it lacks drivers for most hardware and is more of a proof of concept than a daily driver. Take a look at the screenshot and read my blog post if you want to know more technical details.


http://allsoftwaresucks.blogspot.ru/2013/05/porting-genode-to-commercial-hardware.html

Ok, this is indeed mainly to show off, and I sincerely hope someone finds the Genode Framework an interesting concept and joins the development process. Do you want to touch an OS from 2021 in 2012 :)
 

kdb424

Senior Member
Dec 28, 2010
816
350
0
30
Pittsburgh
I'm working on booting arch linux on the HD+ native, and Im' having trouble with booting your uImage files once compiled. I hang at a black screen. Any chance that you could send me binaries? I'm interested in this project.
 

Jon Lee

Senior Member
Jan 12, 2014
220
364
0
I came across this original thread when searching for enabling LCD framebuffer console for the Nook HD+.
I, too, wish to run Arch ARM linux on the nook.

Because we have kernel source and a sdcard bootup, I thought this would be somewhat easy, but I've been finding it difficult.

I started out learning how to unpack and repack the ramdisk.
I replaced the busybox binary in the TWRP recovery ramdisk with one that has added "applets", such as ash, mdev, pivot_root, etc.
Then I tried to build my own busybox init based ramdisk (which is frustrating without a serial console), with the idea of using it to pivot_root (mmcblk1p2, /sbin/init).

When that didn't work I built a ramdisk image using buildroot.

Because of difficulties, I decided I needed a kernel that had at least a framebuffer console, which I attempted to compile.

So this is where I'm stuck at.
(can't post link)

It's mainly useless, but it does demonstrate LCD framebuffer console- to an extent.
It has several different ramdisks.

Default is the ramdisk extracted from emmc boot.img. It does nothing but display some logs on the screen.
ramdisk.twrp is the twrp 2.6.3.0 recovery with a more complete busybox binary. It works, and you'll see a flash of the framebuffer console, before twrp starts.
ramdisk.br is a buildroot generated ramdisk. On this the screen blanks out for minute, then displays some garbled garbage on the screen.
(Other than that I think it's "working" in that the kernel doesn't panic).

This is where I'm stuck at. Does anyone know the correct tty I should be directing output to in the kernel command line?

I'm tempted to try going the kexec route... perhaps something like kboot or kexecboot and give up on the pivot_root idea.