# Chrome OS - Brunch - Recover after a failed update 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. ## Requirements 1. A linux environment (installed or from live USB). Also knowledge of linux terminal and usage of `dd`. 2. The latest chrome os recovery image from https://cros-updates-serving.appspot.com/. 3. The brunch release from https://github.com/sebanc/brunch/releases. ## Procedure 1. Open a terminal. 2. Locate the place where the chrome os image `chromeos.img` is. You can use any file explorer. 3. `cd` to that path in the terminal. 4. Mount the chrome os image as loop device number 99. ``` sudo losetup --partscan /dev/loop99 chromeos.img ``` 5. 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 part6. Extract the recovery image (in .bin format). Rename it to `recovery.bin`. 7. Mount to as loop device number 100. ``` sudo losetup --partscan /dev/loop100 recovery.bin ``` 8. 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 part9. Use `dd` to flash `loop100p3` (i.e. partition 3 from recovery image) to `loop99p5` (i.e. partition 5 from corrupted chrome os image). ``` sudo dd if=/dev/loop100p3 of=/dev/loop99p5 status=progress ``` 10. Extract the `rootc.img` file from the brunch release. 11. Use `dd` to flash the `rootc.img` file to `loop99p7` (i.e. partition 7 of corrupted chrome os image). ``` sudo dd if=rootc.img of=/dev/loop99p7 status=progress ``` 12. All done. Unmount both the loop devices. ``` sudo losetup -d /dev/loop99 sudo losetup -d /dev/loop100 ``` 14. Finally, reboot and boot into chrome os as usual.