In case if update fails / is not applied correctly when following https://github.com/sebanc/brunch#update-only-the-brunch-framework the following steps can be done to recover the brunch installation.
NOTE: These steps are from the developer sebanc
himself.
- A linux environment (installed or from live USB). Also knowledge of linux terminal and usage of
dd
. - The latest chrome os recovery image from https://cros-updates-serving.appspot.com/.
- The brunch release from https://github.com/sebanc/brunch/releases.
- Open a terminal.
- Locate the place where the chrome os image
chromeos.img
is. You can use any file explorer. cd
to that path in the terminal.- Mount the chrome os image as loop device number 99.
sudo losetup --partscan /dev/loop99 chromeos.img
- Check if all the partitions are listed by using
lsblk
. The output should be something like:/run/.../src/oses >>> sudo losetup --partscan /dev/loop99 chromeos.img [sudo] password for src: /run/.../src/oses >>> lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop99 7:99 0 29G 0 loop ├─loop99p1 259:0 0 19.8G 0 part ├─loop99p2 259:1 0 32M 0 part ├─loop99p3 259:2 0 4G 0 part ├─loop99p4 259:3 0 32M 0 part ├─loop99p5 259:4 0 4G 0 part ├─loop99p6 259:5 0 512B 0 part ├─loop99p7 259:6 0 1G 0 part ├─loop99p8 259:7 0 16M 0 part ├─loop99p9 259:8 0 512B 0 part ├─loop99p10 259:9 0 512B 0 part ├─loop99p11 259:10 0 8M 0 part └─loop99p12 259:11 0 32M 0 part
- Extract the recovery image (in .bin format). Rename it to
recovery.bin
. - Mount to as loop device number 100.
sudo losetup --partscan /dev/loop100 recovery.bin
- Just like step 5, check the partition using
lsblk
. The whole list should be like:/run/.../src/Stuff >>> sudo losetup --partscan /dev/loop100 recovery.bin /run/.../src/Stuff >>> lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop99 7:99 0 29G 0 loop ├─loop99p1 259:0 0 19.8G 0 part ├─loop99p2 259:1 0 32M 0 part ├─loop99p3 259:2 0 4G 0 part ├─loop99p4 259:3 0 32M 0 part ├─loop99p5 259:4 0 4G 0 part ├─loop99p6 259:5 0 512B 0 part ├─loop99p7 259:6 0 1G 0 part ├─loop99p8 259:7 0 16M 0 part ├─loop99p9 259:8 0 512B 0 part ├─loop99p10 259:9 0 512B 0 part ├─loop99p11 259:10 0 8M 0 part └─loop99p12 259:11 0 32M 0 part loop100 7:100 0 3G 0 loop ├─loop100p1 259:12 0 8.2M 0 part ├─loop100p2 259:13 0 512M 0 part ├─loop100p3 259:14 0 2.3G 0 part ├─loop100p4 259:15 0 32M 0 part ├─loop100p5 259:16 0 2M 0 part ├─loop100p6 259:17 0 512B 0 part ├─loop100p7 259:18 0 512B 0 part ├─loop100p8 259:19 0 16M 0 part ├─loop100p9 259:20 0 512B 0 part ├─loop100p10 259:21 0 512B 0 part ├─loop100p11 259:22 0 8M 0 part └─loop100p12 259:23 0 32M 0 part
- Use
dd
to flashloop100p3
(i.e. partition 3 from recovery image) toloop99p5
(i.e. partition 5 from corrupted chrome os image).sudo dd if=/dev/loop100p3 of=/dev/loop99p5 status=progress
- Extract the
rootc.img
file from the brunch release. - Use
dd
to flash therootc.img
file toloop99p7
(i.e. partition 7 of corrupted chrome os image).sudo dd if=rootc.img of=/dev/loop99p7 status=progress
- All done. Unmount both the loop devices.
sudo losetup -d /dev/loop99 sudo losetup -d /dev/loop100
- Finally, reboot and boot into chrome os as usual.