improve crossystem implementation

This commit is contained in:
ading2210 2023-11-10 23:49:59 -08:00
parent 9064700b0f
commit 58faaa5b1d
4 changed files with 32 additions and 32 deletions

View File

@ -81,7 +81,7 @@ Driver support depends on the device you are using shimboot on. This list is for
3. Enable developer mode on your Chromebook. If the Chromebook is enrolled, follow the instructions on the [sh1mmer website](https://sh1mmer.me) (see the "Executing on Chromebook" section). 3. Enable developer mode on your Chromebook. If the Chromebook is enrolled, follow the instructions on the [sh1mmer website](https://sh1mmer.me) (see the "Executing on Chromebook" section).
4. Plug the USB into your Chromebook and enter recovery mode. It should detect the USB and run the shimboot bootloader. 4. Plug the USB into your Chromebook and enter recovery mode. It should detect the USB and run the shimboot bootloader.
5. Boot into Debian and log in with the username and password that you configured earlier. The default username/password for the prebuilt images is `user/user`. 5. Boot into Debian and log in with the username and password that you configured earlier. The default username/password for the prebuilt images is `user/user`.
6. Expand the rootfs partition so that it fills up the entire disk by running `sudo growpart /dev/sdX 4` (replacing `sdX` with the block device corresponding to your disk) to expand the partition, then running `sudo resize2fs /dev/sdX` to expand the filesystem. 6. Expand the rootfs partition so that it fills up the entire disk by running `sudo growpart /dev/sdX 4` (replacing `sdX` with the block device corresponding to your disk) to expand the partition, then running `sudo resize2fs /dev/sdX4` to expand the filesystem.
## FAQ: ## FAQ:

View File

@ -243,7 +243,7 @@ get_donor_selection() {
if [ "$selection" = "$i" ]; then if [ "$selection" = "$i" ]; then
echo "selected $part_path as the donor partition" echo "selected $part_path as the donor partition"
read -p "would you like to spoof verfied mode? this is useful if you're planning on using chrome os while enrolled. (y/n): " use_crossystem read -p "would you like to spoof verified mode? this is useful if you're planning on using chrome os while enrolled. (y/n): " use_crossystem
if [ "$use_crossystem" = "y" ] || [ "$use_crossystem" = "n" ]; then if [ "$use_crossystem" = "y" ] || [ "$use_crossystem" = "n" ]; then
boot_chromeos $target $part_path $use_crossystem boot_chromeos $target $part_path $use_crossystem
@ -306,9 +306,12 @@ boot_chromeos() {
rm -rf $donor_mount rm -rf $donor_mount
if [ -e "/newroot/etc/init/tpm-probe.conf" ]; then if [ -e "/newroot/etc/init/tpm-probe.conf" ]; then
echo "hiding the tpm from upstart" echo "applying chrome os flex patches"
mkdir -p /newroot/tmp/empty mkdir -p /newroot/tmp/empty
mount -o bind /newroot/tmp/empty /sys/class/tpm mount -o bind /newroot/tmp/empty /sys/class/tpm
cat /newroot/etc/lsb-release | sed "s/DEVICETYPE=OTHER/DEVICETYPE=CHROMEBOOK/" > /newroot/tmp/lsb-release
mount -o bind /newroot/tmp/lsb-release /newroot/etc/lsb-release
fi fi
echo "patching chrome os rootfs" echo "patching chrome os rootfs"

View File

@ -3,27 +3,23 @@
#a much cleaner implemenation of fakemurk's crossystem.sh #a much cleaner implemenation of fakemurk's crossystem.sh
crossystem_old=/tmp/crossystem_old crossystem_old=/tmp/crossystem_old
crossystem_dict="cros_debug 0 declare -A crossystem_dict=(
dev_boot_legacy 0 ["cros_debug"]="1"
dev_boot_signed_only 1 ["dev_boot_legacy"]="0"
dev_boot_usb 0 ["dev_boot_signed_only"]="1"
devsw_boot 0 ["devsw_boot"]="0"
devsw_cur 0 ["devsw_cur"]="0"
block_devmode 1 ["block_devmode"]="1"
mainfw_act A ["mainfw_act"]="A"
mainfw_type normal ["mainfw_type"]="normal"
recovery_reason 0 ["recovery_reason"]="0"
recovery_request 0 ["recovery_request"]="0"
recoverysw_boot 0 ["recoverysw_boot"]="0"
recoverysw_cur 0" ["recoverysw_cur"]="0"
)
dict_set() {
local newline=$'\n'
crossystem_dict="$crossystem_dict$newline$1 $2"
}
dict_get() { dict_get() {
echo "$crossystem_dict" | grep "^$1 " | cut -d " " -f 2- echo "${crossystem_dict[$1]}"
} }
parse_arg() { parse_arg() {
@ -37,13 +33,13 @@ parse_arg() {
elif [[ "$arg" =~ "?" ]]; then elif [[ "$arg" =~ "?" ]]; then
key=$(echo $arg | cut -d "?" -f 1) key=$(echo $arg | cut -d "?" -f 1)
query=$(echo $arg | cut -d "?" -f 2) query=$(echo $arg | cut -d "?" -f 2)
if ! [ "$(dict_get $key)" = "$query" ]; then if ! [ "${crossystem_dict[$key]}" = "$query" ]; then
exit 1 exit 1
fi fi
#get value mode #get value mode
elif [ "$(dict_get $arg)" ]; then elif [ "${crossystem_dict[$arg]}" ]; then
printf "$(dict_get $arg)" printf "${crossystem_dict[$arg]}"
#value not found - print help and exit #value not found - print help and exit
else else
@ -60,18 +56,19 @@ while IFS= read -r line; do
line=$(echo $line | cut -d "#" -f 1) line=$(echo $line | cut -d "#" -f 1)
key=$(echo $line | cut -d "=" -f 1 | xargs) key=$(echo $line | cut -d "=" -f 1 | xargs)
value=$(echo $line | cut -d "=" -f 2 | xargs) value=$(echo $line | cut -d "=" -f 2 | xargs)
if [ -z "$(dict_get $key)" ]; then if [ -z "${crossystem_dict[$key]}" ]; then
dict_set "$key" "$value" crossystem_dict["$key"]="$value"
fi fi
done <<< "$crossystem_out" done <<< "$crossystem_out"
#crossystem called with no arguments, print out all properties #crossystem called with no arguments, print out all properties
if [ -z "$1" ] || [ "$1" = "--all" ]; then if [ -z "$1" ] || [ "$1" = "--all" ]; then
while IFS= read -r line; do keys="${!crossystem_dict[@]}"
key=$(echo $line | cut -d " " -f 1) keys="$(echo "$keys" | tr " " "\n" | sort)"
value=$(echo $line | cut -d " " -f 2-) for key in $keys; do
value="${crossystem_dict[$key]}"
echo "$key = $value" echo "$key = $value"
done <<< "$crossystem_dict" done
exit 0 exit 0
fi fi

View File

@ -87,7 +87,7 @@ For these images, the root password is "root". The name of the default user is "
3. Enable developer mode on your Chromebook. If the Chromebook is enrolled, follow the instructions on the <a href="https://sh1mmer.me">sh1mmer website</a> (see the "Executing on Chromebook" section). 3. Enable developer mode on your Chromebook. If the Chromebook is enrolled, follow the instructions on the <a href="https://sh1mmer.me">sh1mmer website</a> (see the "Executing on Chromebook" section).
4. Plug the USB into your Chromebook and enter recovery mode. It should detect the USB and run the shimboot bootloader. 4. Plug the USB into your Chromebook and enter recovery mode. It should detect the USB and run the shimboot bootloader.
5. Boot into Debian and log in with the username and password that you configured earlier. The default username/password for the prebuilt images is `user/user`. 5. Boot into Debian and log in with the username and password that you configured earlier. The default username/password for the prebuilt images is `user/user`.
6. Expand the rootfs partition so that it fills up the entire disk by running `sudo growpart /dev/sdX 4` (replacing `sdX` with the block device corresponding to your disk) to expand the partition, then running `sudo resize2fs /dev/sdX` to expand the filesystem. 6. Expand the rootfs partition so that it fills up the entire disk by running `sudo growpart /dev/sdX 4` (replacing `sdX` with the block device corresponding to your disk) to expand the partition, then running `sudo resize2fs /dev/sdX4` to expand the filesystem.
<b id="copyright">Copyright:</b> <b id="copyright">Copyright:</b>
Shimboot is licensed under the <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a>. Unless otherwise indicated, all code has been written by me, <a href="https://ading.dev">ading2210</a>. Shimboot is licensed under the <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GNU GPL v3</a>. Unless otherwise indicated, all code has been written by me, <a href="https://ading.dev">ading2210</a>.