diff --git a/.github/workflows/build-image.yaml b/.github/workflows/build-image.yaml
index a7a8f94..72b2dde 100644
--- a/.github/workflows/build-image.yaml
+++ b/.github/workflows/build-image.yaml
@@ -9,7 +9,7 @@ jobs:
strategy:
matrix:
- board: [dedede, octopus, coral, grunt, nissa, zork]
+ board: [dedede, octopus, coral, grunt, nissa, zork, corsola, jacuzzi]
runs-on: ubuntu-latest
steps:
diff --git a/README.md b/README.md
index 5b002ae..403d43b 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,10 @@
Shimboot is a collection of scripts for patching a Chrome OS RMA shim to serve as a bootloader for a standard Linux distribution. It allows you to boot a full desktop Debian install on a Chromebook, without needing to unenroll it or modify the firmware.
+| | |
+| ----- | ----- |
+| Shimboot with KDE on a HP Chromebook 11 G9 EE | Shimboot with XFCE on an Acer Chromebook 311 C722 |
+
## Features:
- Run a full Debian installation on a Chromebook
- Does not modify the firmware
@@ -62,7 +66,6 @@ On all devices, the following features will not work:
- Transparent disk compression
- Full disk encryption
- Support for more distros (Ubuntu and Arch maybe)
-- Support for ARM based Chromebooks (see [issue #8](https://github.com/ading2210/shimboot/issues/8))
- Eliminate binwalk dependency
- Get audio to work on dedede
- Get kexec working
@@ -76,6 +79,7 @@ PRs and contributions are welcome to help implement these features.
- WSL2 is supported if you are on Windows
- Github Codespaces is not supported at the moment
- A USB drive that is at least 8GB in size
+ - Cheap USB 2.0 drives typically won't work well due to their slow speeds
- At least 20GB of free disk space
### Build Instructions:
@@ -139,6 +143,8 @@ echo "MESA_LOADER_DRIVER_OVERRIDE=i965" | sudo tee -a /etc/environment
```
You may need to change `i965` to `i915` (or `r100`/`r200` for AMD hardware), depending on what GPU you have.
+For ARM Chromebooks, you may have to tweak the [Xorg configuration](https://xkcd.com/963/) instead.
+
#### Can the rootfs be compressed to save space?
Compressing the Debian rootfs with a squashfs is supported, and you can do this by running the regular Debian rootfs through `./build_squashfs.sh`. For example:
```bash
diff --git a/bootloader/bin/bootstrap.sh b/bootloader/bin/bootstrap.sh
index 8258c61..d27d222 100755
--- a/bootloader/bin/bootstrap.sh
+++ b/bootloader/bin/bootstrap.sh
@@ -94,7 +94,7 @@ move_mounts() {
print_license() {
cat << EOF
-Shimboot v1.0.2
+Shimboot v1.1.0
ading2210/shimboot: Boot desktop Linux from a Chrome OS RMA shim.
Copyright (C) 2023 ading2210
diff --git a/build_complete.sh b/build_complete.sh
index 02b16b1..a3df095 100755
--- a/build_complete.sh
+++ b/build_complete.sh
@@ -19,19 +19,35 @@ assert_root
assert_args "$1"
parse_args "$@"
+base_dir="$(realpath -m $(dirname "$0"))"
+board="$1"
+
compress_img="${args['compress_img']}"
rootfs_dir="${args['rootfs_dir']}"
quiet="${args['quiet']}"
desktop="${args['desktop']-'xfce'}"
data_dir="${args['data_dir']}"
-arch="${args['arch']-'amd64'}"
+arch="${args['arch']-amd64}"
+
+arm_boards="
+ corsola hana jacuzzi kukui strongbad nyan-big kevin bob
+ veyron-speedy veyron-jerry veyron-minnie scarlet elm
+ kukui peach-pi peach-pit stumpy daisy-spring
+"
+if grep -q "$board" <<< "$arm_boards"; then
+ echo "automatically detected arm64 device name"
+ arch="arm64"
+fi
needed_deps="wget python3 unzip zip git debootstrap cpio binwalk pcregrep cgpt mkfs.ext4 mkfs.ext2 fdisk rsync depmod findmnt lz4"
if [ "$(check_deps "$needed_deps")" ]; then
#install deps automatically on debian and ubuntu
if [ -f "/etc/debian_version" ]; then
echo "attempting to install build deps"
- apt-get install wget python3-all unzip zip debootstrap cpio binwalk pcregrep cgpt rsync kmod pv -y
+ apt-get install wget python3-all unzip zip debootstrap cpio binwalk pcregrep cgpt rsync kmod pv lz4 -y
+ if [ "$arch" = "arm64" ]; then
+ apt-get install qemu-user-static binfmt-support -y
+ fi
fi
assert_deps "$needed_deps"
fi
@@ -45,8 +61,6 @@ sigint_handler() {
}
trap sigint_handler SIGINT
-base_dir="$(realpath -m $(dirname "$0"))"
-board="$1"
shim_url="https://dl.darkn.bio/api/raw/?path=/SH1mmer/$board.zip"
boards_url="https://chromiumdash.appspot.com/cros/fetch_serving_builds?deviceCategory=ChromeOS"
diff --git a/build_rootfs.sh b/build_rootfs.sh
index 5c3d975..3ac26d6 100755
--- a/build_rootfs.sh
+++ b/build_rootfs.sh
@@ -31,7 +31,7 @@ parse_args "$@"
rootfs_dir=$(realpath -m "${1}")
release_name="${2}"
packages="${args['custom_packages']-'task-xfce-desktop'}"
-arch="${args['arch']-'amd64'}"
+arch="${args['arch']-amd64}"
chroot_mounts="proc sys dev run"
mkdir -p $rootfs_dir
diff --git a/website/assets/shimboot_demo_1.jpg b/website/assets/shimboot_demo_1.jpg
new file mode 100644
index 0000000..5d51f8b
Binary files /dev/null and b/website/assets/shimboot_demo_1.jpg differ
diff --git a/website/assets/shimboot_demo_2.jpg b/website/assets/shimboot_demo_2.jpg
new file mode 100644
index 0000000..fafab81
Binary files /dev/null and b/website/assets/shimboot_demo_2.jpg differ