reynhout / chrx

Chromebook Unix
419 stars 56 forks source link

Ubuntu install on Acer CB515-1WT: grub boot fails on Error loading /syslinux/vmlinuz.A : not found #145

Open happybrahma opened 1 year ago

happybrahma commented 1 year ago

I have an Acer Chromebook CB515-1WT. Sorry for all the verbiage. Just trying to report enough for this to be useful.

I was able to install the legacy firmware and run chrx twice. Everything ran to completion. I have some new partitions and an ubuntu install on p7.

When I boot the alternate firmware (legacy boot) which allows me to boot tianocore, I get a grub menu that allows me to choose between local and verified images A and B, and also usb.

None of them work. They seem to want to boot kernels in /syslinux/vmlinuz.{A|B}. The ubuntu that installed onto p7 is version 22.10 (looking at (p7)/etc/os_release). It has a kernel at (p7)/boot/vmlinuz. This doesn’t seem to match what the grub boot menu, offering me kernels to boot in /syslinux.

My guess is that grub did not configure correctly? Perhaps this is a default grub menu rather than one that chrx intended to configure? Just a guess. I don’t really know much about grub.

I went through the chrx install log. I found these messages. I don’t know if these are expected, or if they indicate a problem:

I can probably figure this out with a point in the right direction. The chrx scripts are written in a very readable way, and I can learn about configuring grub if I need to.

Here is the end of the chrx log where there are some grub related messages.

Installed kernel is version 5.19.0 Installed kernel is newest-known (5.19.0 >= 3.17.1-031701_3.17.1-031701.201410150735) Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Sourcing file /etc/default/grub' Sourcing file/etc/default/grub.d/init-select.cfg' Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.19.0-38-generic Found initrd image: /boot/initrd.img-5.19.0-38-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. done Installing for i386-pc platform. grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible. grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. Installation finished. No error reported.

Here is my partition table showing the original partitions and the ones created by chrx:

Disk /dev/nvme0n1: 119.24 GiB, 128035676160 bytes, 250069680 sectors Disk model: KINGSTON OM8PDP3128B-AA1
Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 8007CB8E-71F0-8742-9438-82F309CEC7C8

Device Start End Sectors Size Type /dev/nvme0n1p1 17076224 115819135 98742912 47.1G Linux filesystem /dev/nvme0n1p2 69 65604 65536 32M ChromeOS kernel /dev/nvme0n1p3 8687616 17076223 8388608 4G ChromeOS root fs /dev/nvme0n1p4 65605 131140 65536 32M ChromeOS kernel /dev/nvme0n1p5 299008 8687615 8388608 4G ChromeOS root fs /dev/nvme0n1p6 115819136 115851903 32768 16M ChromeOS kernel /dev/nvme0n1p7 115851904 250069631 134217728 64G ChromeOS root fs /dev/nvme0n1p8 135168 167935 32768 16M Linux filesystem /dev/nvme0n1p9 67 67 1 512B ChromeOS reserved /dev/nvme0n1p10 68 68 1 512B ChromeOS reserved /dev/nvme0n1p11 64 64 1 512B unknown /dev/nvme0n1p12 167936 299007 131072 64M EFI System

Partition table entries are not in disk order.

Any suggestions that you can provide would be much appreciated!

Thanks!

-Steve

happybrahma commented 1 year ago

Also, I am more than happy to try running commands and to modify the chrx scripts to test any fixes.

happybrahma commented 1 year ago

Digging some more, it looks like this grub config that I am getting during legacy boot is coming from (p12)/efi/boot/grub.cfg.

I don't know where this file came from, or why grub is getting it's config from an efi directory on p12. Still digging around.

Here is the contents of (p12)/efi/boot/grub.cfg


defaultA=2
defaultB=3
gptpriority $grubdisk 2 prioA
gptpriority $grubdisk 4 prioB

if [ $prioA -lt $prioB ]; then
  set default=$defaultB
else
  set default=$defaultA
fi

set timeout=2

# NOTE: These magic grub variables are a Chrome OS hack. They are not portable.

menuentry "local image A" {
  linux /syslinux/vmlinuz.A init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= ramoops.ecc=1 tpm_tis.force=0 intel_pmc_core.warn_on_s0ix_failures=1 i915.enable_guc=2 xdomain=0 intel_iommu=on  i915.modeset=1 cros_efi kern_b_hash=65f7b795c89a896ca0331a430c5865d728da4b94d7b5b23563c4ecc82c53cacb       root=PARTUUID=B789B0E5-0DB5-814B-8EAE-91E0DF14DBEB
}

menuentry "local image B" {
  linux /syslinux/vmlinuz.B init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= ramoops.ecc=1 tpm_tis.force=0 intel_pmc_core.warn_on_s0ix_failures=1 i915.enable_guc=2 xdomain=0 intel_iommu=on  i915.modeset=1 cros_efi kern_b_hash=65f7b795c89a896ca0331a430c5865d728da4b94d7b5b23563c4ecc82c53cacb       root=PARTUUID=9D11981A-C1D3-9441-8632-C69E44E456A7
}

menuentry "verified image A" {
  linux /syslinux/vmlinuz.A init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= ramoops.ecc=1 tpm_tis.force=0 intel_pmc_core.warn_on_s0ix_failures=1 i915.enable_guc=2 xdomain=0 intel_iommu=on  dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1       i915.modeset=1 cros_efi kern_b_hash=65f7b795c89a896ca0331a430c5865d728da4b94d7b5b23563c4ecc82c53cacb root=/dev/dm-0 dm="1 vroot none ro 1,0 5324800 verity payload=PARTUUID=B789B0E5-0DB5-814B-8EAE-91E0DF14DBEB hashtree=PARTUUID=B789B0E5-0DB5-814B-8EAE-91E0DF14DBEB hashstart=5324800 alg=sha256 root_hexdigest=52cf149081cd565959438870e9ee441655560f3d413fc648b76e42ce781007d3 salt=a1e499a208dcdc46e85095a6698cd8caa2bad77b71dd570eac156fed2a2b4c31"
}

menuentry "verified image B" {
  linux /syslinux/vmlinuz.B init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= ramoops.ecc=1 tpm_tis.force=0 intel_pmc_core.warn_on_s0ix_failures=1 i915.enable_guc=2 xdomain=0 intel_iommu=on  dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1       i915.modeset=1 cros_efi kern_b_hash=65f7b795c89a896ca0331a430c5865d728da4b94d7b5b23563c4ecc82c53cacb root=/dev/dm-0 dm="1 vroot none ro 1,0 5324800 verity payload=PARTUUID=9D11981A-C1D3-9441-8632-C69E44E456A7 hashtree=PARTUUID=9D11981A-C1D3-9441-8632-C69E44E456A7 hashstart=5324800 alg=sha256 root_hexdigest=52cf149081cd565959438870e9ee441655560f3d413fc648b76e42ce781007d3 salt=a1e499a208dcdc46e85095a6698cd8caa2bad77b71dd570eac156fed2a2b4c31"
}

# FIXME: usb doesn't support verified boot for now
menuentry "Alternate USB Boot" {
  linux (hd0,3)/boot/vmlinuz init=/sbin/init boot=local rootwait ro noresume noswap loglevel=7 noinitrd console= ramoops.ecc=1 tpm_tis.force=0 intel_pmc_core.warn_on_s0ix_failures=1 i915.enable_guc=2 xdomain=0 intel_iommu=on  root=PARTUUID=B789B0E5-0DB5-814B-8EAE-91E0DF14DBEB i915.modeset=1 cros_efi kern_b_hash=65f7b795c89a896ca0331a430c5865d728da4b94d7b5b23563c4ecc82c53cacb

happybrahma commented 1 year ago

Ok, I'm kinda thinking tianocore is actually doing a UEFI boot, and I need to mount and chroot my Ubuntu partition, remove the grub pc packages, and install the eufi grub packages.

I'm also just sort of climbing the walls, and I am a total grub noop, so I could be chasing the wrong rabbit.

I found the espoelstra/mount-chrx.sh script, which has been quite handy in poking around.

happybrahma commented 1 year ago

I uninstalled the grub-pc stuff and installed the grub-efi-amd64 stuff, and used the grub-install options from the mount-chrx script, and it worked!

Now when I choose the alternate firmware boot option on my chromebook (tianocore), I see the proper grub menu. I was also mucking around with the grub.cfg files in /efi, so it is possible that there are some manual steps here. I would need to reproduce from the beginning to verifty that the apt remove/install grub stuff plus the grub commands in mount-chrx.sh are suffienent by themselves to get thiis working.

Also kinda wondering if I can just boot the latest ubunto live usb (tianocore will boot usb) and manually configure partitions the same way chrx does to get the same result. Not sure if I will ever get around to that though.

ghost commented 1 year ago

Yea, im having the same problem

ghost commented 1 year ago

And i tried the script and it failed

ghost commented 1 year ago

148