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