Jiyong Park | ac7fc67 | 2024-07-12 19:52:46 +0900 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # Repacks chromiumos_*.bin into the assets of FerrochromeApp |
| 3 | |
| 4 | usage() { |
| 5 | echo "Usage: $0 CHROME_OS_DISK_IMAGE" |
| 6 | exit 1 |
| 7 | } |
| 8 | |
| 9 | if [ "$#" -ne 1 ]; then |
| 10 | usage |
| 11 | fi |
| 12 | |
| 13 | disk=$1 |
| 14 | |
| 15 | loop=$(sudo losetup --show -f -P ${disk}) |
| 16 | kern=$(sudo fdisk -x ${loop} | grep KERN-A | awk "{print\$1}") |
| 17 | root=$(sudo fdisk -x ${loop} | grep ROOT-A | awk "{print\$1}") |
| 18 | efi=$(sudo fdisk -x ${loop} | grep EFI-SYSTEM | awk "{print\$1}") |
| 19 | state=$(sudo fdisk -x ${loop} | grep STATE | awk "{print\$1}") |
| 20 | root_guid=$(sudo fdisk -x ${loop} | grep ROOT-A | awk "{print\$6}") |
| 21 | |
| 22 | tempdir=$(mktemp -d) |
| 23 | pushd ${tempdir} > /dev/null |
| 24 | echo Extracting partition images... |
| 25 | sudo cp --sparse=always ${kern} kernel.img |
| 26 | sudo cp --sparse=always ${root} root.img |
| 27 | sudo cp --sparse=always ${efi} efi.img |
| 28 | sudo cp --sparse=always ${state} state.img |
| 29 | sudo chmod 777 *.img |
| 30 | |
| 31 | echo Archiving. This can take long... |
| 32 | tar czvS -f images.tar.gz *.img |
| 33 | |
Jiyong Park | ac7fc67 | 2024-07-12 19:52:46 +0900 | [diff] [blame] | 34 | echo Splitting... |
| 35 | split -b 100M -d images.tar.gz images.tar.gz.part |
| 36 | |
| 37 | popd > /dev/null |
| 38 | asset_dir=$(dirname $0)/assets/ferrochrome |
| 39 | echo Updating ${asset_dir}... |
| 40 | vm_config_template=$(dirname $0)/vm_config.json.template |
| 41 | mkdir -p ${asset_dir} |
| 42 | rm ${asset_dir}/images.tar.gz.part* |
| 43 | mv ${tempdir}/images.tar.gz.part* ${asset_dir} |
| 44 | sed -E s/GUID/${root_guid}/ ${vm_config_template} > ${asset_dir}/vm_config.json |
Jiyong Park | 5e81584 | 2024-08-02 17:21:31 +0900 | [diff] [blame] | 45 | |
| 46 | echo Calculating hash... |
| 47 | hash=$(cat ${tempdir}/images.tar.gz ${asset_dir}/vm_config.json | sha1sum | cut -d' ' -f 1) |
Jiyong Park | ac7fc67 | 2024-07-12 19:52:46 +0900 | [diff] [blame] | 48 | echo ${hash} > ${asset_dir}/version |
| 49 | |
| 50 | echo Cleanup... |
| 51 | sudo losetup -d ${loop} |
| 52 | rm -rf ${tempdir} |
| 53 | echo Done. |