Chromebook won't boot since linux-armv7-5.16.1-1 update

This forum is for topics dealing with problems with software specifically in the ARMv7h repo.

Chromebook won't boot since linux-armv7-5.16.1-1 update

Postby autumnontape » Sun Jan 23, 2022 6:10 am

Thank you for updating linux-armv7! I'm looking forward to using it, but I have a Hisense Chromebook C11, and it won't move past a black screen (with backlight on) when I try to boot from the microSD card I have ALARM installed on. I have to hold the power button to turn it off. Today I tried updating to linux-armv7-5.16.2-2 (by using proot on my x86_64 laptop), but the results are the same with the newer kernel.

I looked at the systemd journal, but there was nothing there. It seems the boot doesn't even progress far enough to start writing to the journal. I don't know how to move forward from here, and I'd appreciate it if anyone could help to point me in the right direction.

I asked about this in another thread first, but I haven't gotten any responses there.
autumnontape
 
Posts: 7
Joined: Fri Dec 31, 2021 12:40 am

Re: Chromebook won't boot since linux-armv7-5.16.1-1 update

Postby armuseru » Thu Jan 27, 2022 11:34 pm

I could be totally mistaken, but since installation guide of archlinuxarm for your device similar to guide for xe303c12 I just made an assumption that it has similar uboot. In that case it may have similar peculiarities, like did not load large kernels. Some solution for xe303c12 that was work earlier for me https://archlinuxarm.org/forum/viewtopic.php?f=47&t=15169&p=67825#p67825
I believe that kernel.its for you device should be like: $this->bbcode_second_pass_code('', '/dts-v1/;

/ {
description = "Chrome OS kernel image with one or more FDT blobs";
#address-cells = <1>;
images {
kernel {
description = "kernel";
data = /incbin/("/boot/zImage");
type = "kernel_noload";
arch = "arm";
os = "linux";
compression = "none";
load = <0>;
entry = <0>;
};
fdt-veyron-jerry {
description = "rk3288-veyron-jerry.dtb";
data = /incbin/("/boot/dtbs/rk3288-veyron-jerry.dtb");
type = "flat_dt";
arch = "arm";
compression = "none";
hash {
algo = "sha1";
};
};
};
configurations {
default = "conf-veyron-jerry";
conf-veyron-jerry {
kernel = "kernel";
fdt = "fdt-veryon-jerry";
};
};
};')
armuseru
 
Posts: 34
Joined: Sat Jan 09, 2021 9:36 am

Re: Chromebook won't boot since linux-armv7-5.16.1-1 update

Postby JVital » Thu Mar 17, 2022 2:19 am

Thanks for pointing us in the right direction armuseru! I also have a Hisense Chromebook C11 (Veyron Jerry) that failed to boot after the 5.16.x kernel update due to the larger kernel size.

Your kernel.its file is exactly correct. The kernelinst script, however, needs to be slightly different. Here's the slightly modded script that worked for me:

$this->bbcode_second_pass_code('', '#!/bin/bash
if [ "$(whoami)" == "root" ]; then

# resign kernel

echo "
You may re-sign kernel and customize kernel boot string.
Regular user do not need it, so it is safe to press n.
Do you want to do this? (y/n)
"
read -r tmpvar1
if $(echo $tmpvar1 | grep -q [Yy]); then
bootcmd='console=tty0 init=/sbin/init root=PARTUUID=%U/PARTNROFF=1 rootwait rw noinitrd'
echo "default bootcmd is

$bootcmd

Be very careful, without init=/sbin/init root=PARTUUID=%U/PARTNROFF=1
or something like that your could get a bootfail.
Now you may specify a new one or just press Enter"
tmpvar2=""
read -r tmpvar2
if [ ! -z "$tmpvar2" ]; then
bootcmd="$tmpvar2"
else
echo "Will be used default boot string
"
fi
#
mkimage -D "-I dts -O dtb -p 2048" -f /boot/reflash/kernel.its /tmp/vmlinux.uimg
# make empty bootloader
dd if=/dev/zero of=/tmp/bootloader.bin bs=512 count=1

echo $bootcmd > /tmp/cmdline

# backup default vmlinux.kpart
mv -f /boot/vmlinux.kpart /boot/vmlinux.old

# final step
vbutil_kernel \
--pack /boot/vmlinux.kpart \
--version 1 \
--vmlinuz /tmp/vmlinux.uimg \
--arch arm \
--keyblock /boot/reflash/kernel.keyblock \
--signprivate /boot/reflash/kernel_data_key.vbprivk \
--config /tmp/cmdline \
--bootloader /tmp/bootloader.bin

# clear used files
rm -f /tmp/vmlinux.uimg /tmp/cmdline /tmp/bootloader.bin
fi

# flash kernel

krnprts=""
krnprtc=0
for i in $(ls /dev | grep -x --regexp="mmcblk[0-9]" --regexp="sd[a-z]" --regexp="vd[a-z]"); do
if $(cgpt show /dev/$i | grep Label | grep -q [Kk]ernel); then
if $(echo $i | grep -q mmcblk); then
krnprts+="$i""p$(cgpt show /dev/$i | grep Label | grep [Kk]ernel -m 1 | sed 's/ / /g' | sed 's/ / /g' | sed 's/ La.*//g' | sed 's/.* //g') "
else
krnprts+="$i$(cgpt show /dev/$i | grep Label | grep [Kk]ernel -m 1 | sed 's/ / /g' | sed 's/ / /g' | sed 's/ La.*//g' | sed 's/.* //g') "
fi
krnprtc=$(($krnprtc+1))
fi
done

echo ""
if [ "$krnprtc" -eq 0 ]; then
echo "Chrome OS kernel partition did not detected."
echo "You must reflash kernel manually."
elif [ "$krnprtc" -eq 1 ]; then
echo "Finded ChromeOs kernel partition - $krnprts"
echo "Do you want to flash a new kernel to it? (y/n)"
read -r shouldwe
if [[ $shouldwe =~ ^([yY][eE][sS]|[yY])$ ]]; then
dd if=/boot/vmlinux.kpart of=/dev/$krnprts
sync
else
echo "You may flash kernel manually like:"
echo "dd if=/boot/vmlinux.kpart of=/dev/$krnprts"
fi
else
echo "Finded more than one Chrome OS kernel partition."
echo "You need to select next action
"
echo "0 for do not flash"
numpart=0
for i in $krnprts; do
numpart=$(($numpart+1))
echo "$numpart for flash $i partition"
done
echo ""
echo "Wrong partition may lead to bootfail. Be aware!"
read -r shouldwe
if [ $shouldwe -gt 0 ]&&[ $shouldwe -le $numpart ]; then
numpart=0
for i in $krnprts; do
numpart=$(($numpart+1))
if [ $numpart -eq $shouldwe ]; then
dd if=/boot/vmlinux.kpart of=/dev/$i
sync
fi
done
fi
fi
else
echo superuser rights required
fi')

I can confirm it works both within Arch (if you remember to run it before rebooting after a kernel update), and in a chroot from ChromeOS (which is where you'll do it when you invariably forget lol).

I'm now happily running the 5.16.13 kernel with this patch. I'm having issues with RTL-SDR dongles, but I think that's unrelated.

Thanks again!
JVital
 
Posts: 2
Joined: Thu Mar 17, 2022 2:00 am


Return to ARMv7h

Who is online

Users browsing this forum: No registered users and 5 guests