From Fedora Project Wiki

 
(One intermediate revision by the same user not shown)
Line 117: Line 117:


This page mentions wrapping uboot as a kernel so that the chrome book will boot like a raspberry pi.  Where does one get uboot to wrap?
This page mentions wrapping uboot as a kernel so that the chrome book will boot like a raspberry pi.  Where does one get uboot to wrap?
== ASUS C201PA  Arm Chromebook debug console ==
The rockchip supports a debug console, and the Fedora kernel support the
[http://www.spinics.net/lists/arm-kernel/msg485122.html debug console] -
which would greatly help in seeing what is going wrong at boot.
The debug console is pinned out to one of the USB ports (or to the
micro-mmc slot for rk3128).  Either way requires a custom cable, and provides
3V serial TTL.  A 3V TTL serial to USB serial converter
[https://www.pi-supply.com/product/usb-ttl-serial-cable-debug-console-cable-raspberry-pi/ like this]
[https://www.amazon.com/JBtek-WINDOWS-Supported-Raspberry-Programming/dp/B00QT7LQ88/ or this] could be spliced to another sacrificial USB-A cable.

Latest revision as of 21:02, 15 March 2017

ASUS C201PA ARM Chromebook

I have mostly questions and only a few answers.

  • Fedora 25 includes the dtb for this model: rk3288-veyron-speedy.dtb
  • As best I can tell from my research, the boot system on this chrome book is called "Depthcharge".
  • Holding down the power button resets the chromebook after a boot attempt hangs.

Apparently, it reads the kernel packed by vbutil_kernel --pack, verifies the signature, and transfers control to the kernel. The bootloader doesn't seem to be used - it seems to be all zero on the factory boot partitions. I don't know what the fedora kernel is missing - there is no output at all.

Examining the ChromeOS kernel reveals a FIT image, so I created rk3288.its:

 /dts-v1/;
 
 / {
     description = "Fedora 25 kernel-4.8.6-300 for ASUS C201PA Chromebook";
     #address-cells = <1>;
     images {
         kernel@1{
             description = "vmlinuz-4.8.6";
             data = /incbin/("vmlinuz-4.8.6-300.fc25.armv7hl");
             type = "kernel_noload";
             arch = "arm";
             os = "linux";
             compression = "none";
             load = <0>;
             entry = <0>;
         };
         fdt@1{
             description = "rk3288-veyron-speedy";
             data = /incbin/("dtb-4.8.6-300.fc25.armv7hl/rk3288-veyron-speedy.dtb");
             type = "flat_dt";
             arch = "arm";
             compression = "none";
         };
     };
     configurations {
         default = "conf@1";
         conf@1{
             description = "rk3288-veyron-speedy (ASUS C201PA Chromebook)";
             kernel = "kernel@1";
             fdt = "fdt@1";
         };
     };
   };

and compiled (in the distro /boot directory) with:

 mkimage -vf rk3288.its rk3288.itb

I wrapped the FIT image with:

 vbutil_kernel --pack        fedora.blob \
               --keyblock    fedora.keyblock    \
               --signprivate fedora.vbprivk     \
               --config      kcmdline           \
               --vmlinuz     rk3288.itb         \
               --bootloader  dummy.boot         \
               --arch arm --version 1

Where dummy.boot is 4k of zeros to match google kernel. This is a similar size to factory ChromeOS kernel image. Now to see if it gets any farther. I still don't see how initrd gets loaded.

So, I tried expanding the FIT image to include initrd:

 /dts-v1/;
 / {
     description = "Fedora 25 kernel-4.8.6-300 for ASUS C201PA Chromebook";
     #address-cells = <1>;
     images {
         kernel@1{
             description = "vmlinuz-4.8.6";
             data = /incbin/("vmlinuz-4.8.6-300.fc25.armv7hl");
             type = "kernel_noload";
             arch = "arm";
             os = "linux";
             compression = "none";
             load = <0>;
             entry = <0>;
         };
         ramdisk@1 {
             description = "recovery ramdisk";
             data = /incbin/("initramfs-4.8.6-300.fc25.armv7hl.img");
             type = "ramdisk";
             arch = "arm";
             os = "linux";
             compression = "gzip";
             load = <00000000>;
             entry = <00000000>;
             hash@1 {
             algo = "sha1";
             };
         };
         fdt@1{
             description = "rk3288-veyron-speedy";
             data = /incbin/("dtb-4.8.6-300.fc25.armv7hl/rk3288-veyron-speedy.dtb");
             type = "flat_dt";
             arch = "arm";
             compression = "none";
         };
     };
     configurations {
         default = "conf@1";
         conf@1{
             description = "rk3288-veyron-speedy (ASUS C201PA Chromebook)";
             kernel = "kernel@1";
             ramdisk = "ramdisk@1";
             fdt = "fdt@1";
         };
     };
   };

I also had to expand the boot partitions to hold the 48M image. Still no joy.

Wrapping uboot as "kernel"

This page mentions wrapping uboot as a kernel so that the chrome book will boot like a raspberry pi. Where does one get uboot to wrap?

ASUS C201PA Arm Chromebook debug console

The rockchip supports a debug console, and the Fedora kernel support the debug console - which would greatly help in seeing what is going wrong at boot. The debug console is pinned out to one of the USB ports (or to the micro-mmc slot for rk3128). Either way requires a custom cable, and provides 3V serial TTL. A 3V TTL serial to USB serial converter like this or this could be spliced to another sacrificial USB-A cable.