From ef92a0684a768f9634e1c6f6e75fa6816750657c Mon Sep 17 00:00:00 2001 From: Christian Goeschel Ndjomouo Date: Sun, 17 Nov 2024 05:11:35 +0000 Subject: [PATCH] add: Add image creation data --- VERSION | 1 + asahi.install.images/.gitignore | 0 build.sh | 116 ++++++++++++++++++ dependencies.sh | 48 ++++++++ mkosi.cache/.gitignore | 0 mkosi.conf | 50 ++++++++ mkosi.output/.gitignore | 0 mkosi.skeleton/boot.sh | 15 +++ mkosi.skeleton/efi/EFI/boot/grub.cfg | 3 + .../etc/X11/xorg.conf.d/30-modeset.conf | 6 + mkosi.skeleton/etc/apt/sources.list | 5 + .../etc/apt/sources.list.d/glanzmann.list | 1 + .../apt/trusted.gpg.d/thomas-glanzmann.gpg | Bin 0 -> 14733 bytes mkosi.skeleton/etc/default/grub | 41 +++++++ mkosi.skeleton/etc/fstab | 3 + mkosi.skeleton/etc/hostname | 1 + mkosi.skeleton/etc/hosts | 1 + mkosi.skeleton/etc/kernel/cmdline | 1 + mkosi.skeleton/etc/machine-id | 1 + mkosi.skeleton/etc/modprobe.d/blacklist.conf | 2 + mkosi.skeleton/etc/network/interfaces | 10 ++ mkosi.skeleton/etc/resolv.conf | 1 + .../etc/wpa_supplicant/wpa_supplicant.conf | 6 + mkosi.skeleton/post-install.sh | 68 ++++++++++ 24 files changed, 380 insertions(+) create mode 100644 VERSION create mode 100644 asahi.install.images/.gitignore create mode 100755 build.sh create mode 100755 dependencies.sh create mode 100644 mkosi.cache/.gitignore create mode 100644 mkosi.conf create mode 100644 mkosi.output/.gitignore create mode 100755 mkosi.skeleton/boot.sh create mode 100644 mkosi.skeleton/efi/EFI/boot/grub.cfg create mode 100644 mkosi.skeleton/etc/X11/xorg.conf.d/30-modeset.conf create mode 100644 mkosi.skeleton/etc/apt/sources.list create mode 100644 mkosi.skeleton/etc/apt/sources.list.d/glanzmann.list create mode 100644 mkosi.skeleton/etc/apt/trusted.gpg.d/thomas-glanzmann.gpg create mode 100644 mkosi.skeleton/etc/default/grub create mode 100644 mkosi.skeleton/etc/fstab create mode 100644 mkosi.skeleton/etc/hostname create mode 100644 mkosi.skeleton/etc/hosts create mode 100644 mkosi.skeleton/etc/kernel/cmdline create mode 100644 mkosi.skeleton/etc/machine-id create mode 100644 mkosi.skeleton/etc/modprobe.d/blacklist.conf create mode 100644 mkosi.skeleton/etc/network/interfaces create mode 100644 mkosi.skeleton/etc/resolv.conf create mode 100644 mkosi.skeleton/etc/wpa_supplicant/wpa_supplicant.conf create mode 100755 mkosi.skeleton/post-install.sh diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..ceab6e1 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.1 \ No newline at end of file diff --git a/asahi.install.images/.gitignore b/asahi.install.images/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..126b3a9 --- /dev/null +++ b/build.sh @@ -0,0 +1,116 @@ +#!/usr/bin/env bash + +PROJECT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +MKOSI_OUT_DIR="${PROJECT_DIR}/mkosi.output" +MKOSI_CACHE_DIR="${PROJECT_DIR}/mkosi.cache" +IMAGE_VERSION="$( head -n1 "${PROJECT_DIR}"/VERSION )" +IMAGE_ID="asahi-debian-12-base" +MKOSI_ROOT_FS_DIR_NAME="${IMAGE_ID}_${IMAGE_VERSION}" +MOUNTPOINT_DIR="${PROJECT_DIR}/mnt" +ASAHI_INSTALL_IMAGES_DIR="${PROJECT_DIR}/asahi.install.images" + +EFI_UUID=$(uuidgen | tr '[a-z]' '[A-Z]' | cut -c1-8 | fold -w4 | paste -sd '-') +ROOT_UUID=$(uuidgen) +BOOT_UUID=$(uuidgen) + + +function log() { + # In this case we are not passing command line arguments to 'echo' + # but instead an output string + # shellcheck disable=SC2145 + echo "[$(tput setaf 2)$(tput bold)info$(tput sgr0)] ${@}" +} + +function unmount_images() { + [[ -n "$(findmnt -n "${MOUNTPOINT_DIR}"/efi)" ]] && umount -Rf "${MOUNTPOINT_DIR}"/efi && log "Unmounted ${MOUNTPOINT_DIR}/efi" + [[ -n "$(findmnt -n "${MOUNTPOINT_DIR}"/boot)" ]] && umount -Rf "${MOUNTPOINT_DIR}"/boot && log "Unmounted ${MOUNTPOINT_DIR}/boot" + [[ -n "$(findmnt -n "${MOUNTPOINT_DIR}")" ]] && umount -Rf "${MOUNTPOINT_DIR}" && log "Unmounted ${MOUNTPOINT_DIR}" +} + +function mount_images() { + [[ -z "$(findmnt -n "${MOUNTPOINT_DIR}")" ]] && mount -o loop "${ASAHI_INSTALL_IMAGES_DIR}"/root.img "${MOUNTPOINT_DIR}" && log "Mounted ${ASAHI_INSTALL_IMAGES_DIR}/root.img to ${MOUNTPOINT_DIR}" + [[ -z "$(findmnt -n "${MOUNTPOINT_DIR}"/boot)" ]] && mount -o loop "${ASAHI_INSTALL_IMAGES_DIR}"/boot.img "${MOUNTPOINT_DIR}"/boot && log "Mounted ${ASAHI_INSTALL_IMAGES_DIR}/boot.img to ${MOUNTPOINT_DIR}/boot" + [[ -z "$(findmnt -n "${MOUNTPOINT_DIR}"/boot/efi)" ]] && mount --bind "${ASAHI_INSTALL_IMAGES_DIR}"/esp/ "${MOUNTPOINT_DIR}"/boot/efi/ && log "Bound ${ASAHI_INSTALL_IMAGES_DIR}/esp/ to ${MOUNTPOINT_DIR}/boot/efi/" +} + +function create_asahi_install_images() { + unmount_images + # Get the absolute path to the mkosi generated root filesystem + mkosi_rootfs_absolute_path="$( realpath -- "$(find "${MKOSI_OUT_DIR}" -type d -iname "${MKOSI_ROOT_FS_DIR_NAME}" | sort | head -1 )")" + + mkdir "${MOUNTPOINT_DIR}" + mkdir -p "${MOUNTPOINT_DIR}"/efi + + + log "Creating Asahi installation images ..." + rm -rf "${ASAHI_INSTALL_IMAGES_DIR:?}"/* + rm -rf "${mkosi_rootfs_absolute_path}"/var/lib/apt/lists/* + + log "Creating ${ASAHI_INSTALL_IMAGES_DIR}/efi.img ..." + fallocate -l "512MB" "${ASAHI_INSTALL_IMAGES_DIR}"/efi.img + + log "Creating ${ASAHI_INSTALL_IMAGES_DIR}/boot.img ..." + fallocate -l "2G" "${ASAHI_INSTALL_IMAGES_DIR}"/boot.img + + log "Creating ${ASAHI_INSTALL_IMAGES_DIR}/root.img ..." + fallocate -l "8G" "${ASAHI_INSTALL_IMAGES_DIR}"/root.img + + log "Creating fat filesystem on efi.img" + mkfs.msdos "${ASAHI_INSTALL_IMAGES_DIR}"/efi.img + + log "Creating ext2 filesystem on boot.img" + mkfs.ext2 -U "${BOOT_UUID}" -L debian-boot -b 4096 "${ASAHI_INSTALL_IMAGES_DIR}"/boot.img + + log "Creating ext4 filesystem on root.img" + mkfs.ext4 -U "${ROOT_UUID}" -L debian-root -b 4096 "${ASAHI_INSTALL_IMAGES_DIR}"/root.img + + mount -o loop "${ASAHI_INSTALL_IMAGES_DIR}"/root.img "${MOUNTPOINT_DIR}" + log "Mounted ${ASAHI_INSTALL_IMAGES_DIR}/root.img to ${MOUNTPOINT_DIR}" + + mkdir -p "${MOUNTPOINT_DIR}"/boot + mount -o loop "${ASAHI_INSTALL_IMAGES_DIR}"/boot.img "${MOUNTPOINT_DIR}"/boot + log "Mounted ${ASAHI_INSTALL_IMAGES_DIR}/boot.img to ${MOUNTPOINT_DIR}/boot" + + mkdir -p "${MOUNTPOINT_DIR}"/efi + mount -o loop "${ASAHI_INSTALL_IMAGES_DIR}"/efi.img "${MOUNTPOINT_DIR}"/efi + log "Mounted ${ASAHI_INSTALL_IMAGES_DIR}/efi.img to ${MOUNTPOINT_DIR}/efi" + + log 'Copying files to root.img' + rsync -aHAX --exclude '/tmp/*' --exclude '/boot/*' --exclude '/home/*' --exclude '/efi' "${mkosi_rootfs_absolute_path}/" "${MOUNTPOINT_DIR}" + log "Copying files to boot.img" + rsync -aHAX "${mkosi_rootfs_absolute_path}"/boot/ "${MOUNTPOINT_DIR}"/boot + + log "Setting pre-defined uuid (${EFI_UUID}) for efi vfat partition in /etc/fstab" + sed -i "s/EFI_UUID/${EFI_UUID}/" "${MOUNTPOINT_DIR}"/etc/fstab + + log "Setting uuid (${BOOT_UUID}) for ext2 boot partition in /etc/fstab" + sed -i "s/BOOT_UUID/${BOOT_UUID}/" "${MOUNTPOINT_DIR}"/etc/fstab + + log "Setting uuid (${ROOT_UUID}) for ext4 partition in /etc/fstab" + sed -i "s/ROOT_UUID/${ROOT_UUID}/" "${MOUNTPOINT_DIR}"/etc/fstab + + arch-chroot "${MOUNTPOINT_DIR}" grub-editenv create + + sed -i "s/ROOT_UUID/${ROOT_UUID}/" "${MOUNTPOINT_DIR}"/etc/kernel/cmdline + arch-chroot "${MOUNTPOINT_DIR}" grub-install --target=arm64-efi --efi-directory=/efi + arch-chroot "${MOUNTPOINT_DIR}" ./post-install.sh "${BOOT_UUID}" "${ROOT_UUID}" +} + +mkosi clean +mkosi +create_asahi_install_images + +log "Copying files ..." +rsync -aHAX "${MOUNTPOINT_DIR}"/efi/ "${ASAHI_INSTALL_IMAGES_DIR}"/esp/ +rsync -aHAX "${MOUNTPOINT_DIR}"/boot/efi/ "${ASAHI_INSTALL_IMAGES_DIR}"/esp/ + +cd "${ASAHI_INSTALL_IMAGES_DIR}" || exit 1 + +echo "${EFI_UUID}" > "${PROJECT_DIR}"/efi.uuid + +#log "Compressing boot.img root.img and esp/ ..." +#zip -r9 "${PROJECT_DIR}"/debian-12-base.zip . + +#log "Unmounting umages ..." +#unmount_images + diff --git a/dependencies.sh b/dependencies.sh new file mode 100755 index 0000000..b18a5fe --- /dev/null +++ b/dependencies.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +declare -a PACKAGES=( build-essential \ +bash \ +git \ +mount \ +zip \ +uuid-runtime \ +locales \ +gcc-aarch64-linux-gnu \ +libc6-dev \ +device-tree-compiler \ +imagemagick \ +ccache \ +eatmydata \ +debootstrap \ +pigz \ +libncurses-dev \ +qemu-user-static \ +binfmt-support \ +rsync \ +git \ +bc \ +kmod \ +cpio \ +libncurses5-dev \ +libelf-dev:native \ +libssl-dev \ +dwarves \ +zstd \ +lsb-release \ +clang-15 \ +lld-15 \ +debhelper \ +clang-15 \ +flex \ +bison \ +libclang-dev \ +arch-install-scripts \ +curl \ +bubblewrap \ +mkosi \ ) + +# shellcheck disable=SC2048 +for pkg in ${PACKAGES[*]}; do + sudo apt install -y "${pkg}" +done + diff --git a/mkosi.cache/.gitignore b/mkosi.cache/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/mkosi.conf b/mkosi.conf new file mode 100644 index 0000000..c997a51 --- /dev/null +++ b/mkosi.conf @@ -0,0 +1,50 @@ +[Distribution] +Distribution=debian +Release=bookworm + +[Match] +Architecture=aarch64 + +[Output] +Format=directory +ImageId=asahi-debian-12-base +ImageVersion=0.1 + +[Content] +Bootable=no +WithDocs=True +Environment= + KERNEL_INSTALL_BYPASS=0 +Packages= + initramfs-tools + pciutils + wpasupplicant + tcpdump + vim + tmux + vlan + ntpdate + parted + curl + wget + grub-efi-arm64 + mtr-tiny + dbus + ca-certificates + sudo + openssh-client + mtools + dhcpcd-base + gdisk + cryptsetup + wireless-regdb + systemd-boot + tree + lvm2 + ifupdown + iproute2 + network-manager + iputils-ping + zstd + + diff --git a/mkosi.output/.gitignore b/mkosi.output/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/mkosi.skeleton/boot.sh b/mkosi.skeleton/boot.sh new file mode 100755 index 0000000..9b94c02 --- /dev/null +++ b/mkosi.skeleton/boot.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +echo 'grub-efi-arm64 grub2/update_nvram boolean false' | chroot /target debconf-set-selections +echo 'grub-efi-arm64 grub2/force_efi_extra_removable boolean true' | chroot /target debconf-set-selections +chroot /target apt-get remove -y grub-efi-arm64-signed +chroot /target apt-get install -y ntpdate +chroot /target grub-install --removable /boot/efi +rm /target/boot/efi/EFI/BOOT/fbaa64.efi +rm /target/boot/efi/EFI/debian/fbaa64.efi +chroot /target wget https://tg.st/u/k.deb +chroot /target dpkg -i k.deb +chroot /target rm k.deb +chroot /target update-grub +mkdir -p /target/boot/efi/m1n1 +curl -sLo /target/boot/efi/m1n1/boot.bin https://tg.st/u/u-boot.bin diff --git a/mkosi.skeleton/efi/EFI/boot/grub.cfg b/mkosi.skeleton/efi/EFI/boot/grub.cfg new file mode 100644 index 0000000..1554fa2 --- /dev/null +++ b/mkosi.skeleton/efi/EFI/boot/grub.cfg @@ -0,0 +1,3 @@ +search.fs_uuid BOOT_UUID root +set prefix=($root)'/grub' +configfile $prefix/grub.cfg diff --git a/mkosi.skeleton/etc/X11/xorg.conf.d/30-modeset.conf b/mkosi.skeleton/etc/X11/xorg.conf.d/30-modeset.conf new file mode 100644 index 0000000..29e206c --- /dev/null +++ b/mkosi.skeleton/etc/X11/xorg.conf.d/30-modeset.conf @@ -0,0 +1,6 @@ +Section "OutputClass" + Identifier "appledrm" + MatchDriver "apple" + Driver "modesetting" + Option "PrimaryGPU" "true" +EndSection diff --git a/mkosi.skeleton/etc/apt/sources.list b/mkosi.skeleton/etc/apt/sources.list new file mode 100644 index 0000000..a42b123 --- /dev/null +++ b/mkosi.skeleton/etc/apt/sources.list @@ -0,0 +1,5 @@ +deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware +deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware + +deb http://deb.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware +deb-src http://deb.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware diff --git a/mkosi.skeleton/etc/apt/sources.list.d/glanzmann.list b/mkosi.skeleton/etc/apt/sources.list.d/glanzmann.list new file mode 100644 index 0000000..1317d18 --- /dev/null +++ b/mkosi.skeleton/etc/apt/sources.list.d/glanzmann.list @@ -0,0 +1 @@ +deb https://thomas.glanzmann.de/asahi testing main diff --git a/mkosi.skeleton/etc/apt/trusted.gpg.d/thomas-glanzmann.gpg b/mkosi.skeleton/etc/apt/trusted.gpg.d/thomas-glanzmann.gpg new file mode 100644 index 0000000000000000000000000000000000000000..c0c8a036bc714334b61b52ed1be556b236553de5 GIT binary patch literal 14733 zcmaL7Q

)w5|K6RcYI{v(h#yZQHhO+qNogRNA&#Y1^l2?Y-Jrx7~K{Yk%l5=ZJ6i zh#4``fnh;ap=Bn45CF|e^;Hu;Rq+Jid&^MRKl-=Su(`RB{SZY(qLr)<9E|c29&?W( zEMd_Jdk)aS(;NV8O*r3Us`T>ar1aIcCvPrcQNe9We}ldiV0Z|pERWQ07>s62IR@bK-EKh}?)oJm zbTj;X9vmUC#qusY`4~=H61clr!Q)t4M7dYc)-37LaGSiZ?QDt04nJL9!3p+(WK};d z4x1jitiCdL1=H8Gaq>X67)!zCOu;8&6(_58Z495-7e4Ktg$~y=!3qGQKoaLmrL;pH z-bA$*lr1TR9JZAY4kFI74qNL?3=w>B-^BCkZ z>(+=s05~XGOlyr^a(=y@ZR(*%MI6H6I*RSy>m*lfXGim8_m?sU$r##J+DRgd+cz@7 zVqVbv(0w55m%TMLvc?hLu_88c64I93eFq8Q=;lC2Ib*%;NeRukvjPU1P$k&8YIXzkCz4+sP5@fz+y}mq zqMl=3F|z^?fdD{_WJ+eX*7}YFVpjS#9@hFcHU!*G|0w*X|0;Aw#=K#opa_V-0B|s1 zRTyJq05lZBV6Cg9nmmj~^)etYKR4RtTA!4i8IHFjL6ks~NUM(rkc~jg5obQt@N7?P zu4|iC_prdC_w`?&7KOh)K*!Ibwl_2kn#q8?Ftd@a9tN6wJoN3&7beHOli_k=Ko;x@ zH6kw|>xH7&XrBL!^-`KW{_KBzV3~;j`h3$N-Tw(qw62{8$m?>6lo{knZ7#KWO49eV z(Io&ET>|9gZsNr{MAJ?1PN|(apFs$V?QvQE#|QC*{jbjjT3zf0T*y_IE+DU?hKt3R zATqKgM}Mla49*PM6~zgVjY2zP=BSu=eORlF5Um@qn@WY z@XveI4j4WWF82Hs0puD#4Bg;>1vI)&2-V}T#4Z0KA{+WmQauvV( zMnsI>b19d^2ED}wl7ew)<^J(O{@-~oU>^DF<67@vyPaodN}~nHb%2hp&<)FRzj9?9Dr+;VG=jH2b)K38a5pW&}7sxBjt@xQYI2|F0sl2FM{3sS{Uh zIA`D&$<0ubH`t+RFH`(eW0Y_CE>n2QWKdT_6c%NkVd}u!VLE@F9`bKB|IEt$U!NOX zr*2CovEDxHy!xSq#Y>3l_)!9 zK-quB4Ks)OJMO=VS1=?XZ&|o)oWc=XWaP}vQ`rP{^dclG1TF}TpUTX_{o+rS^O&*P zZV~G2oKcMTY5Gy4Nf?(q5&O-=+>cSnQYH=E8F7GMyYFA5E1BfBxp5blyW}jCRfB)E z_4Y?gV%UM>$>S~78%P9#RV(}XtMIm7my+bg1g|Q&*E8Zb<>!t(-qut3VFrQ zhv|JXU!`orDEA{GU#n!NQ5^|!3agqQokZq?g6D3ohgM4;EF5tSF&Pvz@kzFvz`?-d zsoLXw)3BDxo^kp0w`$1$TeYW-B6-oi$!8unFIqei(gm&TeW|c9TkW# zT_ZmgDj{qM^ceFJx{TVHO*Q+WDj{*tU#K7E=>B6n z*WF5O%{9bMFP~d?%o9pmVgsfEOk-4T2}kO8Zm* zt+`^!AqFs0O#OImeP-|6wRmzU7|70trsDSi#Pum77ECa{d8GRTATu{LU`hz*Q?UI5 zBO%}eI0yhU{t+Um9jl6PoQaWqxtCLzCC|?)PsS>V%%jUyN#oBV$;C2+9L;4SFb>jW z+*p^IH%#JSwzM*~UEN0SVbt2`c`%#7wI#uiI><2(-?rWL;R)ldQ-4OQf z`MsBGa?Ax&VHpyOmA)~Dv@wn+#QYwnirv{2pYD=Ba??TFzEYXxL?hf(!#c2b_R<%? zyUt%+ci)$WIdiuWPqoNZb`FCAw*T=cNrmG{hK*D{{C0;8!;^SjV9vkQbztUZb&^;G zLthGeCiCVm44s-^YmlKVt%Icf4M%2n`^!{*Ue&mnlUJWX__5f45Gwx z0)LDY>o+it13I(@@6}y^m<7?eUQ?vzkO>WWsJIl(P`lBZg_^WRgx2w{T&Mm}TBQB$ zanaaxRHhsHtn1sB7CthhknG*KK}$DFGjVd)R>M=PC!7AL^-O$f4fZf%Q`kx@q0G+{ zB72+LHx{^M1lVbeT^muaCo8R2#YLcgE^te+@9f!(0De4}E4z*q_A`bY-;lU0OIg=T zaDn=Tg{%%RCPGJ&{|6o|;eYY?7K$Tn%#E)uO$+~l#kAgZV#dxg+N2O3?Zwu0K%lSv z$V9Mjt`$dI@h*rutsRW*ix`j9FpM@Bpp;D>*#bhunIPMol332FiJo~YbO<=7&wWB(O2d7HIZ#E|3CbH&dzyRx? zoNJ@M$-=}O1)jpnm8-*NQj?Y* z0Lgq#N$s4OXJ%8&ci8xsY)a@;u=ytwMtUvYx~X)s^SkyTKAmY_MdvT|#m1BOx#wgj z2JDaY)Q-s2<3=^&4pR*l^7`IuqeVn1R=T5!>FF-XDkh=IxsbehWU@sq(Iz8{vxRFY z@fMpoB8g{VYbik0#S~oMZnL@K@mXNgfARQ+nerEp*V!5q=s1=D+D-UR-caMM2Bn_p zQuAL9(60n-q&&Ui;U1(;t&PNconOXh=d@by-Tt`M1)(5=BY1_eYgGXxqO zGNSl!rWa(FKsTL6mb@xCz&S5EtLIvvWyRSRyyv`?cR^4Y_-7L-nOhw14UX!30_&?x=F}n0%5mqf>2qGsL_XuU`1hlV>(;A^U%polz zZq*v6PHb+NNVpCQc{W^&$r!B2t67|58F@M4@zrofhp4LEK%pddafLyFb*71{5Gv_H zd>j?&k<3MzW*QiZFvIxPPFhsFht@M+U{D~eZ}aIu)g5Jv(aQxdk(DYoZ3hPOu#tq z{I^EP{6{CWas3L7qyX`El|78@Rb*}wV_9^erXEhM*EBO=1_BIr)QhoFJjU)2WkIe| z&>D#<+oTDj97U}Uba#`~J^+XZ>=xZ`(Jl-jRzs97q{6DwY;I7j;l zMR55Ln{P93?Z=$R3I5!J6RqZjm{|kF)WdLqb;{i-d2Z1RS7FF1Fw(`}(?j&%GWrr> zYZf(O$_}o%!UCHZu~&opt!lI1^2qrlMY>op{V6vvqD$7XNC zi}C!1YMSlSIQQw!g3YUO&}H&Sm4j6 zvSVy^U)anFA^S@^QQ3BAd?}JZO;p1DnbP}PA-{xl{3}ECX+EA1U!|1Dlp(c?`g&ak z(KDhm(kVczP9-TbP3ymoOV%C?jwnlD9!W%v=?Ax#w3VKx5w3DhRI4c?7? zkK&v+lejAlx+}6sGsS`6?)+Qs-DWY{jvQfkpn&%pO;^OkF>G^%H4jZYQ5d@ zFTJ?fJ)3BcsJl{+s#@1;zgGSkQI^_I1`*J!hEL%N_N*2PndKjEYV>NyBSm{KY3IKU zVm!WLe4PRe{SMd}@~U07R;p0T5=Bv-t*YIWc3-SbOJP6a zAv7eWwRjMht@3teAIl9M7MN7%K=gWjF9Ft1)2~WHW134m%;As&pQfKGCX9AKp5(l{ z;d1`F`DXB%Fl)a5#UoGg;x8U2X|Yv$BN+mZ^zfe~3?^GOkvG?&g#azHx!k-X5zVnW zvwIrbJo>wH_Lk@U^G6+#BNG-ia(o4%&JLzh(G7Y;2tEa&9n9j#C1BE@QkwRFE+SuZ zEd2tj>M4h~Q@yvoYrk8VeR2JCjUW>BdFi0~2R~Bu@VlF2j8dJdkkb9%fYEcF^g85_ z<|8i`di(FR>SHWU?_0l-07?%H_uvCKkf|t>DZl5!efLcLRp-{hI7=p#*?R%;W!zy5 zMJ61F-^7Gi#16i#7>Q#|#_LagYRf%{^OI;Zq}fAtxc5+Xi?CiVP2d|ODd3SL$%*Nq z%dZ_08wd`kFE}qp%OW?6az*eszor_sssKD28N)@g}<*{V?9x~ ztkG0k+nn%M-&f0?6ycgdqy?`|)?@GUEI3j$PY%#iOEC{K*fU9|KRb@Z@4O4>G)qfH0VihPxnfO1i0b9+_bWJ zVaU(vkACYW9w-n}v;yR$^!xP~T`7fw&*z;`2!TFS8@bqj>tq86B{kmyoZ;x}dd4WS{D9+&^@*wDON1h#wU-qcV8Imd2Y;KWqdl z;Q?7{IU?mHKelM=b+_}8n#!q8f)%u&3mK+0-+bp0 z1MbjkZ>bmFjTTNxO zO+e7$UYMW1?#W?JoM{C-*0`rBv)dJFVk1U9w_AO>X(4S!5%4YRbfp)j>%}9_l|BVL zNc9|K9R+ebDWcgcV@B}Mf@5#?u@&9q=qlzdO($YfSCm~xDDbkL0pZNIbn&T(opji= zxKE9vj>~1K2oRzu@x{qIJJpB>a)iW47)Wj%MBEgk4brr}mZ)!QCQcP!>bgNS;ZLDb z(HZ-ZkonJ6Sk#fxMbwz$)mJkI94^ls(TAND3$O?XsnDFYAyaY6C|&FyYiy1+yojt4 z-Dg>M)-VVykQ4?yTM}BsG&okDP3^Y}7AEhsC0O+*+^SLcOCR1IdrORQ)fz=R2pN@O z^5*v}eGpOlnzY_Z&1Lk-aJ5X-O+2GyUov`fFDrc+8x{s#~BApgj}c*K#< z3-BgN(`A~#e<|Odcs^M$WDo!~7t@G`a|YGrv?S`t58 z>RISS(1E#>&3>|WCDv5#PT!+t7Wu|cGE&5;%ZwZK|GqpsT%QPB=%)B4y-bd3#^$k` zMd`af5$7%yd#p^D^RyUy!|3D_biK^g!~Cw6j|YQ?H~p%v4V=^Z?C`UJaFGg^X&Xf( z;vi>Kp>MX9Wa$T~=NiWJiSKu&NB2jJE(fh%ILXaGp92Pum;sgQhAHo9{oOvA@r>`N zAUp$BD!CbXzhAgu4SVD&My@<&E*TG>O~lmNr8BmVrooa)MdVLue5eSbh@Ez}v>`Dj zYV&W$24^6z1jCI`uu%(2L^>zzxeAYi^BA%Z64^5U}N47?w4I5Tz|b?#uqd({(h9$ zBQeG0?Oqws6-^cLkTDJrnV_Y;y}dmV{WS)FvAnN*j@QpxfXp+gMdmpZvL#E>`kGf4 zbpwSAc=x<;q_#)@Tx=lnTRoEg;T9+n&qSH*T52dPD`kWCn^}XNo$cE3dgHZ5_%c97 znozGMaDOL_*Xa2&ZYKa!z0<)UHVrA2+-3Mk2i*ZP<}y_8#%2yLKJeyu;!P?d1_l4V z>ecT5;PKCqs9Hgh^)KPq3?YBYnrI1$MGTA%|X^Es& z<=KN}q?{A)l+vg=IE}iglNiX5{x;)ESUe{V|9Pg#5%RdzMX#eey1)WZDhMMKeDjSyzL2z_gxH!i%J$aW{V4vg zEYWv{79R!wj!N*L;5*fQ#^=a$LbMuy@a}=L3mE>116t_pb;J{P{w8;)KO&!nhVKPZoMqf^YGg4im*55t$|lilprJbN&1GGgQ(s8i;`HsW& z1&cFJ_Jd(LoV2P^o{&FRi+h;*49X!CTSFE}i=6e&WJjKI&p9}|^Nsv~+_B2bQQ|J5 z6mHj??97S#`e3JC?!vHb7btsku&-Qh1x@uj&jJ+WUEiEggEteX8U_g^ZT2mksol$x)EvaAF zGZ(r&6;iEyY1VBqiH~{%H(c~4MW*fbS*>odw*gZG$+goi;ayz;K@|iF&8w1Oz8($g)nRA4{HS94fX|*S!24K_R zn=`JxuH$a}K6%elT^92At|41xb3uju9+;ki`6gMGcDaG~D z|3yn(cKia5=4inc&+To}V zv#EQe!Ev(?FzsraYn;oVzJvIyoKKjvsek>bqX2=|XKEa+w?GsfH*E1{o#4t;*&Q1u zXKv_)R^+w=9sn-x?KWtZt)Gi-I@gz3@0|iR^vDUsLLlQ;05BP1ZL7*8y}zg*@G~|K z-d8#Z&*Bzg;!2yDiR&rh&*=@{R8A*Mh%=6$rtj8(+~w1dG6S-PScQm7on1?WO%~EK z*8fstD^LIA^vU&lDt$X1p@dJxij1rIhnk3+^1syltDw8Xf08v6V-zla<0OApR3|%k z3V;;C4@Ok@y5ie}=+r|qTk$A;PtY3&p*{{>tIZ@lk~7!#j>dZ@!1N2c*BU|@EeY1j z{h2?Gy%*5~SyU_Z?I0XW)w}Uozl+E0kxK?S?_+B9}&{CrmomVDAe)X&6+=mD^Q&C5c#~i{o6em zM#EfD4_$}3bmmj$zE0VH!=32D&q4|Is6YoEFO<+R!pT>}YL+^}u&M&{$FCptcndWE z_$~eJ<$ROo-~qqtB-EBL@cez{-VkFMAhEG*{m)s|kPNwqQvv#JAd_L2s<=$SSU9I9 zxod%3X+rLU5qq#yoL{&{lqbp*aAsT1Lc#vX-aOLEWX0%mE3lI+`1SD?V)h{Ofqr%I z3e%Fayoh-++YrmUTJSYE1)c7glIE)MW6z)ZJjH71W7RoY*#qkbV|IM2H~gVSa&utI z`ZK{E7?tF}DE=`*JmJ5ske0ucfm`$S>!fxk4ez0)ps8YR7k(F(Xdvq{Ng8f&a+15N z0?kGqs&3Uf3JV!se$Mm`GBm(Gd$fEPa!%S%t^k$$6+n(h8ah6q(r!kEFWkKt$LSh9 zh0;=0PkRvzdQQ0E5=nKk#Cl;6Wu-oHmgb1m4;l7fYR2_lN&ud}MV|2%bbpRj|ME)< z$^S!5BvAcdYW`JNec(T7+TG0T;n5tWXsa2IFOsbC8PFbpx1MbeRl~v_UQN&uZm`A^ z?Q$yOQnxc^-B?n#G6oSQ1>%T14`4;Sw6EyRNjyv5=WUFhrTm& z?1mQ$lR1GE;{?+p(v0MnDj&w$mAMp1RyR*K=cH^!5P!J6QZk*@X-*&r$)##yMK&iz zD_I&C@KPooumA~FSkHz|>X5~(yi4-J_4^k6T(aI^zl|_i)De;|4nXr@2Hl+&$>e~; zsd=P?aR?I71pX~Js=#6NXes60?BOkO+Rd`04Ig?Q@*8(IW5T+U7aXW=6C+l#h4)Cy zp9fwm#AL2nDa0?`%-_QUFwd|aI0n=qYEUw{9yYhdwivnpLv>Kb{!a6$4=~|M^Dyqm>!j{<$zLR%hri(QKyx6EY7}K0_@`+)0b+yZaqC z{pe$fi6Jx7o2e{xe)qDQ)XPALKF81okIL*$e6-iIHVZWTz>~FW)>E#EiB{FGFgz7H zT8RMrWhr}fHCA;#h9v{3F~d!jt(JJt9;jwHITjIud8|7^=WP zfCTr=eyVW?{+F7YxFtyP;vH=CTqxMcDktgS?Ru#{)Z~R&{-x$$Mehp!9hw&|2>~9R zRi^uL@ER;Ojc{_6eytq-cVQ6qatlym;FfrF3cstgk@ug}=oU@yw2RD<%VK(A?>{y6K zDeTWc>r%ZC&NFK26&#?2g*7z;%$m5dRWaN6lzm$;%KJSS>|-p)&@aJgwhn+z!6Nkq@XeF2S%upE$#?V? z-^&=_N89ZawLZ&Q3W0Oc0z+cVG^Pg{AVvv@6`hHI3~8fvlOrlDE48J{393P@-9_W= ze6(KR3^W7{*}=@&cIlzr9qq{^C<}g-0s=Lsx(j9^A9+*u3gJwQ%IB0mcWu5VgeojO z>FS*elkYu;G{S`618oHsM>e{#-*K74a^lILFsBS&dnrDAVBQSyQc1%qwH|O+sSdKp zuql7Go7$6?9p^n4al5j751mN#t8JsPuf(}_2sp;Mx4l*i05VQ(hury2F;q^bSLJLf z+b&y%4LL>;%Cl+aL2QhsW9gj2c!V?Bluk6zYj0t84uhB74e^&6WFY8&u9gM6O`@m- z8sA!}G$q*c&5N=6c?x&+G?S=HXZGx@Q{}0S`f$#ibUiwV{30!5y3p$2`Egz1w>!hWHmLdX0M=40;-IU~ zF&NQJT&M!xC5LfX?WxFfPu(`z_ZS|gYD)5G%0Q6b6CA}pms{#&ko89pvgs{bRa;@(KMya+JuJE3oEoxkWKDs2 zt$@!_t{805kk=m^^mfi~2ioFOwlv^QrXOlN=sCiZ0u3HW#n8!A@e|D7oW5hRY`f+$ zGQIZ|`WFWc!MrNFEV;%C zN%_Z-UARqd@h?K5#J3r`uh9ipgah;cLk$%$HV7CLNS`SH3webc8)^@aqQUkt}x`2!mQlD1)Z|1*p#k@ueG4~)+uPL0E6x5d5Th^ z2)U5o)Nlv93x6%>ZnFax$cmlvD|p@UXma?ZXg=1U(R6rC9T(M65`PdnJIgj+W&|z8 z5X}#D_KoLs{%$6LDQ|7{V%XH)XZbm@(uMcVVg<-5rSFF+o1*dz*1|ZzN>7pxI%n4_ldP$z73 z*@W@EB@h3bkb#xZPvXP=2pj+%Pu(zeII#Rb2yy*I=>G$rKiK@~c)^|T*a-JXngqF* z|M@RLV89yv#6|yQ>Qoi}%a~+&dJ<)j_x>1$c*qbl)Ell>S@D3`#Eu_QJ-?WtBsdJZ zXZ_5>XP*iNZ*mZyHZDjGznh=#YYofGY;BU&C7lWPmN1AjYq~_Bl2hD)i3Mg|&zkm0 zD7gdKd#Ci7H(XLgrH=n4cUc2tApG@7?M*G`Je6~YB*+SD3lYYvm2C>l%-C0{RPHk{ zQhccxL0>Ap&^^VO`o(9pTe!cOeNEC@Zvrm@c_wdzzV4*a>% zc)1a2dU<^X$Sk$G;gi(2CGQ*=#LY94{0wrQUXCFcd37bY3}i-t-t%m$@t8>*!r55l ze0uU0FpN-#*Q*kbEQ~6^;r}u&ieIV&;{EI)ChgXXBh1R?qPJV!4q>A811t>CiJ=Ty zlSgagyhow~cM*aIRzxJqQrd&i80z7*6T&SxsFr(@hiy0KId*&6o{1gWdLV9#3|&A{ zDl1SLul=!S4L&jgO3D-73BN$Grq;ym9P>WfQ_@8EK)khwi#BoTWRR&;jF7e-mUwpg zvWQSuLgL1r*_`Q+A10F+O7drMoGr`Igfc z_}%`7h-@2}jFM57Za#hlZZ5txE5>!EuWlD`Rjfae#4HRl!#lN9l1T~fJKGV;N1(E# zn6IHHE~-Ey)%Jh8R|i@)$&cXfG*t*jhrYeplpMG0P2gQH8yY^0p+AkTA->57Ei|xYr4NhQp1P4!xsh0IWdI5Rc!X=S(OU{M3%ER zHc+^%WF$|)W8Woz6KBa(y?ty9x;1F7Rn4B2cdcC%*9qfR z+(?>05fe4^e0NF;UBR5CV#$6p_)XkzXymc30B+UC5~tv+xHF(|lvhqr3Wc1yP6`Fw z#CD>HjOKI^)k%46>_7apoTDhDk0mpfPotUTYdBeRX%m=Cu5Xg~W!}MdSHom(3TZ&y zoj{8Kx5x%zHMe1c_$!$iO&%nuTM27Zn|4YDqi;jzyTgk2_EaMbW$L-+!S7{Pt} z>@ISjW7%77EzX&B8ygAWxLc~yoLff|e zr|_O%$5Jn=s%$pZHBK2(TGN0=PWhratVc^#Wf2i%L-`H9>0BmY6K;u=DLbQV+>{|( zWWJdV5sm-Ty&4Y828!`#b3*`({q6rJNJ!xS8zkBZ@Sn7jU7_7Gi_H(-v&$?AhfRz@ zuBs1w7guvz8rPK=J)|-iH5_J87PW?8gY@c=UJ$NS1?i-Uhvh~qceQk8ss&q^x(Rwr z>nsAI;=5+-dtLBYY!Ki^r|ptku4MUI)Gz1_K*1s|qihHK0`XpxDBM+|S1^fnAj={& z><*qi)h|yi5gfhEHfDJksC*7!F#-YMY9sNsx->VaKBHLcJd5(sD(KdNB64e9u;AIr z-r^*d)xKHOg9c1J%_sDqBh>9$vO@=f^j_;R2wusMQdXBz!`I@%Xe9}PcxCmzQ%*_9 z85XQ^45_gsEh_lUj@%9)xoLA)M)(1)+u|u=%~BE~J_@+}AD@pd%4SHrG_xvZkp{2u zZ8qJYMrh(bqId!$n`o{2ZlzRQSu$Jj=t%rDXc$Oyg-yz{H-)5CN@^qy7>%IXIe9{U zq7w!$KOnww`B5xpx29;>5WJ$IYrNdMJl{)y8Tj2lbU`n}Qqd<0j4DZ0gI$*+ex>>$ z`MZIqqL~ys#^9Ee+LyG|E9#`~Y^{#yKnVz!N+tw1x{^X;riH~5o`dM77bvDypO zN6hWXFwY3KI$+Sxu@Ayqi_4jlc?wMhX$mxLbQ`nnH6VTcr_zDa#68^)FqU-yqOEUr z$w7+Ds4qjaMN&FCiO1-?_2}WC;6X(l|0wYP1j!GEKW*^oJe30GZZ=_B62RHm_q}9w zUHO^an`adj95RHJ_d|)ke&Q#Rp8Hu4-y)%i@sok`dothYsO+UpoP7rrUd)S;GmrOl z$jkZIv*cIId5lRp#uNjMj6y{YOS<`zvKU$30~iBbr02WOwI^gd3|cnO_x7B|oTSA| zB_ArXg&s>kQ6TR7MKi5E_rxKB5iiN(-7*qH85wrp3TGH-$MAlwJptvzX@Fscx@Io? zY0*tGvA4(@D~`e?nkPkhqnp}1X<|NsHQ=cvSQ5|nrVJp&FrJFrWyH2Yz0f0IGq_av z2*=x^x2<%46s}z9Qq7F1`_4})x0h>V8C)+Q?F8$$IlIJM7(=iUNbj+G=G+b!Y#EI2 zO=A|Tdn{od$%js3bFH_V_2cLM=REs}jAJ%!e?b(E!~#My$A;kZHQj%Ts9SNP{%MrEg5 zeH(}%#T9g#v76kMVknK=4_2aqHK~<__Ho0*Ir(JMMQ-=(qyxJJS1-qNzV!lg)=g-Y zFgF(|*SfoPba!8x5%NPUXiPP01kL-iSGTj(b9uRIGFkk~P;rB~{mi&Z-<@dd*jo^q zhdq&=9z3e=yI&x3&I2D-)6fX|P0)EsOkPl{{~ILu{{#ut-|g%VhCgxg-^6$sg8wq- zFwdfVcUOKu0U$et$~cYnM!s(uZM!8EO>}4O))11Gp&|R5VSAgzEzM_O95}9W?q`A< zFQ%{h_G)JqKo1|NX##{cyrR74`Vkl> zcD52&a;|#)ilGp3=AfO!zuX*9%0-o#vGe@0t}VLVRp@t9WHN;-4kc7XK_;r|3A8u$ zdLPyu_=W`~COgWk@+QkHN}5gTTEh4cP~+XqhQWsShWqp)tMx0IbIENtLWF(r81gDj z)rX-oI40orqx-#M(tD}F@sx?_gg=>HzXBG(pA=pdZe0nS>&oW&%2mX{hy1-_L|}kz z30%Z0!hb`o++S7fqxOFrD}sC_tAkZbIVPOw@$@G+@E0W)Sei;Oji-&L5 z5B}^+r4qd%gTU4vWO}t1E38-X?8xTjkGVK8?0!rp{krhWafr5TotBsCObOe zLK^Je^k?9Gp}wThs}gRHiOn<1 zBufvo_n+3@TZ_y$qnABeOMJL*1$tj0Ru~v-sIw%3r`p>G0b+&uiqlLLT!K||O69YZ1|#5KA{>Xn?eU*Y&&`6ek!o5Qr<9;S z)o#M4MS)u}ktGzKk$^icVwvglnzT_9C zw$k7Cu{!^=rj+0OSyOiPMMS%URWBJiX4$^NV!k6y)bM_0TVGz|*Tj^QQCJ9)b#P?l3c`m5x9=ES)}6x(*XQJ(#dckf`6tu6}zee$CxT z2$M5eBOypUE)bfju4FW7$nngd)0DVA^xsG!W6rqc@}za$3r%a<9|MRJTpJJ(besnM zKfY(XlTIjAqT-heDaFOKQe^@ibx0VM6_htChtG8#R;pyv&P7Ve{UF+p=Fl>F0GQ>9 z*rm)%&ep`Z2V2%l$+`57W=S^pf%&-cVXP>)bU}zdBUAJOEg-{hZ#@@dy=#iar(C^^ zJ_9J6-(jjZRI~0;K087I$vh|RLDML1s;%f553aQld{?d;hJq`CXhYv3obkn+d=N7~ z0{uAUAeU@lV=5xI&Tg{?3&07vs80>|UnulvDTBm91Hw8+Yd6fNPSkx?xE+&MlDNL< z1XNOHiv`XqQ6s9QuY$`g)!&gQ$y_STYt%ND|I+%f?yg+zd){zpAFfL!6VPjZE{3QO zVb!PY%-R2p#_i0w+z4fN7vE!hT^_O3xr;Q0>{1^7v%OyMQs>7Y&xuLiN{$>l7w!zl zZ>AS@M?Cz0uPNm>z}N);O^n2J_%DgkcFAD$wqNjuBsCW`?9}Y_4NWAh2G;A>VF(fz zZPX{z(7h?%^qc8kPM0S=(lBgsZnM$4^VnhMvR~g$UY%SrE2~)Of_FK7-xqryx=gnd z^Puk2GCFu7Y{ndVkNxS836J7D64IM^O%eIguAF8h6R!rgCqRotHRg1f{N#xe46{*l z{iF2KCk`_L*wo8*0^LsRP$Xk9sy2D^bvO_w&TeZfQLsfiQ9vwo;j4bXkXxsw*P2ZI zyKj6APjDyDNB>H?{Gv-Z)sm}UOpR0o;~F2fVV3y-VjJs`TOv;gS9GR*Oy8PFdxmwe zO9nk=+Pa#D@&0e2EKcq+Dt1f zB8BFOCX4`+R1y}ioJdFr!r8|OfV0~GeOOxJ^gA|{x^xMlWcw|By0kkA^Cs`Q0=`hQ zzl3D|$H`u;nE+96j`kQi38kIE^%;_36+x^w2Bv#uR1EKAFj|fkt{}B{;s?e__w79> zeePV(FEKRNmcC6jlInu7zDZE&BuG%pwD`no{_kNtw2g#I+$AUO?U1FnWCZblR+ ztW&NK)r1UjF#9fYtE=AM$b~vt#%6oK*6ng7qSQLa>itb%dX>%5F99B#93du=1YWn{ Ua_~_uQ=ohJ?=_&HDDdt72SyBiKL7v# literal 0 HcmV?d00001 diff --git a/mkosi.skeleton/etc/default/grub b/mkosi.skeleton/etc/default/grub new file mode 100644 index 0000000..3147d33 --- /dev/null +++ b/mkosi.skeleton/etc/default/grub @@ -0,0 +1,41 @@ +# If you change this file, run 'update-grub' afterwards to update +# /boot/grub/grub.cfg. +# For full documentation of the options in this file, see: +# info -f grub -n 'Simple configuration' + +GRUB_DEFAULT=saved +GRUB_TIMEOUT=5 +GRUB_DISTRIBUTOR="$(lsb_release -i -s 2> /dev/null || echo Debian)" +GRUB_CMDLINE_LINUX_DEFAULT="quiet" +GRUB_CMDLINE_LINUX="" + +# If your computer has multiple operating systems installed, then you +# probably want to run os-prober. However, if your computer is a host +# for guest OSes installed via LVM or raw disk devices, running +# os-prober can cause damage to those guest OSes as it mounts +# filesystems to look for things. +GRUB_DISABLE_OS_PROBER=true + +# Uncomment to enable BadRAM filtering, modify to suit your needs +# This works with Linux (no patch required) and with any kernel that obtains +# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) +#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" + +# Uncomment to disable graphical terminal +#GRUB_TERMINAL=console +GRUB_TERMINAL_OUTPUT=gfxterm +# The resolution used on graphical terminal +# note that you can use only modes which your graphic card supports via VBE +# you can see them in real GRUB with the command `vbeinfo' +#GRUB_GFXMODE=640x480 + +# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux +#GRUB_DISABLE_LINUX_UUID=true + +# Uncomment to disable generation of recovery mode menu entries +GRUB_DISABLE_RECOVERY="true" +GRUB_ENABLE_BLSCFG=true +GRUB_FONT=/boot/grub/fonts/unicode.pf2 +GRUB_DISABLE_SUBMENU=true +# Uncomment to get a beep at grub start +#GRUB_INIT_TUNE="480 440 1" diff --git a/mkosi.skeleton/etc/fstab b/mkosi.skeleton/etc/fstab new file mode 100644 index 0000000..555bc5e --- /dev/null +++ b/mkosi.skeleton/etc/fstab @@ -0,0 +1,3 @@ +UUID=EFI_UUID /efi vfat umask=0077,shortname=winnt 0 2 +UUID=BOOT_UUID /boot ext2 defaults 0 2 +UUID=ROOT_UUID / ext4 defaults 0 1 \ No newline at end of file diff --git a/mkosi.skeleton/etc/hostname b/mkosi.skeleton/etc/hostname new file mode 100644 index 0000000..1c6810f --- /dev/null +++ b/mkosi.skeleton/etc/hostname @@ -0,0 +1 @@ +asahi-debian \ No newline at end of file diff --git a/mkosi.skeleton/etc/hosts b/mkosi.skeleton/etc/hosts new file mode 100644 index 0000000..05dfc8a --- /dev/null +++ b/mkosi.skeleton/etc/hosts @@ -0,0 +1 @@ +127.0.0.1 localhost asahi-debian diff --git a/mkosi.skeleton/etc/kernel/cmdline b/mkosi.skeleton/etc/kernel/cmdline new file mode 100644 index 0000000..c263ea9 --- /dev/null +++ b/mkosi.skeleton/etc/kernel/cmdline @@ -0,0 +1 @@ +root=UUID=ROOT_UUID root \ No newline at end of file diff --git a/mkosi.skeleton/etc/machine-id b/mkosi.skeleton/etc/machine-id new file mode 100644 index 0000000..4f9d9d5 --- /dev/null +++ b/mkosi.skeleton/etc/machine-id @@ -0,0 +1 @@ +uninitialized \ No newline at end of file diff --git a/mkosi.skeleton/etc/modprobe.d/blacklist.conf b/mkosi.skeleton/etc/modprobe.d/blacklist.conf new file mode 100644 index 0000000..60dfbb9 --- /dev/null +++ b/mkosi.skeleton/etc/modprobe.d/blacklist.conf @@ -0,0 +1,2 @@ +blacklist brcmfmac +blacklist brcmutil diff --git a/mkosi.skeleton/etc/network/interfaces b/mkosi.skeleton/etc/network/interfaces new file mode 100644 index 0000000..3691cbc --- /dev/null +++ b/mkosi.skeleton/etc/network/interfaces @@ -0,0 +1,10 @@ +# interfaces(5) file used by ifup(8) and ifdown(8) +# Include files from /etc/network/interfaces.d: +source /etc/network/interfaces.d/* + +allow-hotplug eth0 +iface eth0 inet dhcp + +# allow-hotplug wlan0 +iface wlan0 inet dhcp + wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf diff --git a/mkosi.skeleton/etc/resolv.conf b/mkosi.skeleton/etc/resolv.conf new file mode 100644 index 0000000..cae093a --- /dev/null +++ b/mkosi.skeleton/etc/resolv.conf @@ -0,0 +1 @@ +nameserver 8.8.8.8 diff --git a/mkosi.skeleton/etc/wpa_supplicant/wpa_supplicant.conf b/mkosi.skeleton/etc/wpa_supplicant/wpa_supplicant.conf new file mode 100644 index 0000000..1e1bbff --- /dev/null +++ b/mkosi.skeleton/etc/wpa_supplicant/wpa_supplicant.conf @@ -0,0 +1,6 @@ +network={ + ssid="linksys" + scan_ssid=1 + key_mgmt=WPA-PSK + psk="password" +} diff --git a/mkosi.skeleton/post-install.sh b/mkosi.skeleton/post-install.sh new file mode 100755 index 0000000..19a4f94 --- /dev/null +++ b/mkosi.skeleton/post-install.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +BOOT_UUID=${1} +ROOT_UUID=${2} + +function log() { + # In this case we are not passing command line arguments to 'echo' + # but instead an output string + # shellcheck disable=SC2145 + echo "[$(tput setaf 2)$(tput bold)info$(tput sgr0)] ${@}" +} + +log "Installing Firmware, UEFI Bootloader and Linux Asahi kernel" +apt update +apt install -y firmware-linux m1n1 linux-image-asahi +apt clean +rm -rf /var/lib/apt/lists/* + +log "Creating /efi/EFI/BOOT/" +mkdir -p /efi/EFI/BOOT +cp /usr/lib/grub/arm64-efi/monolithic/grubaa64.efi /efi/EFI/BOOT/bootaa64.efi + +#cat > /efi/EFI/boot/grub.cfg < /efi/EFI/BOOT/grub.cfg < /efi/EFI/debian/grub.cfg < /boot/grub/grub.cfg < /etc/hostname + +log "Changing 'root' user password" +passwd root + +log "Creating 'asahi' user and setting new password" +useradd -m -s /bin/bash asahi +passwd asahi