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 running on a HP Chromebook 11 G9 EE. | Shimboot running on an Acer Chromebook 311 C722. | +| ----- | ----- | +| 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