blob: b2a96ddf2a6a0df650407b0b1692bf9a232d1676 [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
Jiyong Parkac7fc672024-07-12 19:52:46 +090034echo Splitting...
35split -b 100M -d images.tar.gz images.tar.gz.part
36
37popd > /dev/null
38asset_dir=$(dirname $0)/assets/ferrochrome
39echo Updating ${asset_dir}...
40vm_config_template=$(dirname $0)/vm_config.json.template
41mkdir -p ${asset_dir}
42rm ${asset_dir}/images.tar.gz.part*
43mv ${tempdir}/images.tar.gz.part* ${asset_dir}
44sed -E s/GUID/${root_guid}/ ${vm_config_template} > ${asset_dir}/vm_config.json
Jiyong Park5e815842024-08-02 17:21:31 +090045
46echo Calculating hash...
47hash=$(cat ${tempdir}/images.tar.gz ${asset_dir}/vm_config.json | sha1sum | cut -d' ' -f 1)
Jiyong Parkac7fc672024-07-12 19:52:46 +090048echo ${hash} > ${asset_dir}/version
49
50echo Cleanup...
51sudo losetup -d ${loop}
52rm -rf ${tempdir}
53echo Done.