From 19f63f33a235996ae05431d9615bf05578c51c96 Mon Sep 17 00:00:00 2001 From: Ward from fusion-voyager-3 Date: Sun, 11 Aug 2024 00:55:03 +0300 Subject: [PATCH] This is ridiclous but i saw it as a solution 5 times in stack overflow --- .github/release-nest-v3-nvidia-iso | 2 +- build.sh | 61 +++++++++---------- data/refind/EFI/boot/refind.conf | 5 +- los.sh | 25 ++++++++ .../data/refind/EFI/boot/refind.conf | 6 +- .../hooks/2-link-uname-to-kernel.chroot | 15 ----- old.sh | 30 +++++++++ 7 files changed, 94 insertions(+), 50 deletions(-) create mode 100644 los.sh delete mode 100755 nvidia-enablement/hooks/2-link-uname-to-kernel.chroot create mode 100644 old.sh diff --git a/.github/release-nest-v3-nvidia-iso b/.github/release-nest-v3-nvidia-iso index 7813681..62f9457 100644 --- a/.github/release-nest-v3-nvidia-iso +++ b/.github/release-nest-v3-nvidia-iso @@ -1 +1 @@ -5 \ No newline at end of file +6 \ No newline at end of file diff --git a/build.sh b/build.sh index 0e0df31..fac598f 100755 --- a/build.sh +++ b/build.sh @@ -50,47 +50,44 @@ mksquashfs \ -Xbcj x86 # Copy Kernel to live (Disabled, Copy Kernels to refind instead) -#cp "$ROOTFS_PATH/boot"/vmlinuz-* \ -# "$LIVE_BOOT_LIVE_PATH/vmlinuz" && \ -#cp "$ROOTFS_PATH/boot"/initrd.img-* \ -# "$LIVE_BOOT_LIVE_PATH/initrd" && \ -#cp ./data/refind/refind_linux.conf \ -# "$LIVE_BOOT_LIVE_PATH/refind_linux.conf" +cp "$ROOTFS_PATH/boot"/vmlinuz-* \ + "$LIVE_BOOT_LIVE_PATH/vmlinuz" && \ +cp "$ROOTFS_PATH/boot"/initrd.img-* \ + "$LIVE_BOOT_LIVE_PATH/initrd" && \ +cp ./data/refind/refind_linux.conf \ + "$LIVE_BOOT_LIVE_PATH/refind_linux.conf" -# Generate bootable EFI Image from refind +REFIND_SIZE=$(du -s -B1 ./data/refind | cut -f1) +LIVE_SIZE=$(du -s -B1 $LIVE_BOOT_LIVE_PATH | cut -f1) +ISO_SIZE=$(($REFIND_SIZE + $LIVE_SIZE)) -# Copy kernel to refind -mkdir -p ./data/refind/EFI -cp -vf "$ROOTFS_PATH/boot"/vmlinuz-"$ISO_KERNEL"* "./data/refind/EFI/vmlinuz" -cp -vf "$ROOTFS_PATH/boot"/initrd.img-"$ISO_KERNEL"* "./data/refind/EFI/initrd" +DD_BOOT_IMAGE="./efiboot.img" +DD_LIVE_IMAGE="./live.img" -dd if=/dev/zero of="$LIVE_BOOT_PATH/efiboot.img" bs=1 count=$(du -s -B1 ./data/refind | cut -f1) -mkfs.vfat -F 32 "$LIVE_BOOT_PATH/efiboot.img" +# Create Refind Image +dd if=/dev/zero of="$DD_BOOT_IMAGE" bs=1 count=$REFIND_SIZE +mkfs.vfat -F 16 "$DD_BOOT_IMAGE" for directory in $(find ./data/refind/EFI/ -type d | cut -d'/' -f4-) do - mmd -i "$LIVE_BOOT_PATH/efiboot.img" ::"$(echo $directory | tr '[:lower:]' '[:upper:]' | sed 's:/*$::')" + mmd -i "$DD_BOOT_IMAGE" ::"$(echo $directory | tr '[:lower:]' '[:upper:]' | sed 's:/*$::')" done for file in $(find ./data/refind/EFI/ -type f) do - mcopy -i "$LIVE_BOOT_PATH/efiboot.img" $file ::"$(echo $file | cut -d'/' -f4- | tr '[:lower:]' '[:upper:]')" + mcopy -i "$DD_BOOT_IMAGE" $file ::"$(echo $file | cut -d'/' -f4- | tr '[:lower:]' '[:upper:]')" done -# Create Bootable UEFI Full Image -mkdir -p ./output +# Create Live medium image +dd if=/dev/zero of="$DD_LIVE_IMAGE" bs=1 count=$LIVE_SIZE +mkfs.ext4 "$DD_LIVE_IMAGE" +for directory in $(find $LIVE_BOOT_LIVE_PATH -type d | cut -d'/' -f4-) +do + mmd -i "$DD_LIVE_IMAGE" ::"$(echo $directory | tr '[:lower:]' '[:upper:]' | sed 's:/*$::')" +done + +for file in $(find $LIVE_BOOT_LIVE_PATH -type f) +do + mcopy -i "$DD_LIVE_IMAGE" $file ::"$(echo $file | cut -d'/' -f4- | tr '[:lower:]' '[:upper:]')" +done -xorriso \ - -as mkisofs \ - -iso-level 3 \ - -V "PikaOS 4" \ - -e --interval:appended_partition_2:all:: \ - -append_partition 2 0xef "$LIVE_BOOT_PATH/efiboot.img" \ - -J -joliet-long \ - -no-emul-boot \ - -isohybrid-gpt-basdat \ - -o "./output/$ISO_IMAGE".iso \ - "$LIVE_BOOT_DATA_PATH" - -# Generate an integrity sum -touch "./output/$ISO_IMAGE".md5 -md5sum "./output/$ISO_IMAGE".iso > "./output/$ISO_IMAGE".md5 +cat $DD_BOOT_IMAGE $DD_LIVE_IMAGE > "./output/$ISO_IMAGE".iso \ No newline at end of file diff --git a/data/refind/EFI/boot/refind.conf b/data/refind/EFI/boot/refind.conf index fb593d1..3c47ae8 100644 --- a/data/refind/EFI/boot/refind.conf +++ b/data/refind/EFI/boot/refind.conf @@ -331,7 +331,7 @@ showtools install,bootorder,shell,memtest,gdisk,apple_recovery,csr_rotate,window # On UEFI PCs, default is internal,external,optical,manual # On Macs, default is internal,hdbios,external,biosexternal,optical,cd,manual # -scanfor manual +#scanfor internal,external,optical,manual,firmware # By default, rEFInd relies on the UEFI firmware to detect BIOS-mode boot # devices. This sometimes doesn't detect all the available devices, though. @@ -647,6 +647,9 @@ csr_values 10,77 # except when you must pass a forward slash to the loader, as when # passing a root= option to a Linux kernel. +# Below are several sample boot stanzas. All are disabled by default. +# Find one similar to what you need, copy it, remove the "disabled" line, +# and adjust the entries to suit your needs. menuentry "PikaOS Live Image" { icon EFI/BOOT/REFIND-DARK/ICONS/OS_PIKAOS.PNG loader EFI/VMLINUZ diff --git a/los.sh b/los.sh new file mode 100644 index 0000000..52cd585 --- /dev/null +++ b/los.sh @@ -0,0 +1,25 @@ +los() ( + img="$1" + dev="$(sudo losetup --show -f -P "$img")" + echo "$dev" + for part in "$dev"?*; do + if [ "$part" = "${dev}p*" ]; then + part="${dev}" + fi + dst="/mnt/$(basename "$part")" + echo "$dst" + sudo mkdir -p "$dst" + sudo mount "$part" "$dst" + done +) +losd() ( + dev="/dev/loop$1" + for part in "$dev"?*; do + if [ "$part" = "${dev}p*" ]; then + part="${dev}" + fi + dst="/mnt/$(basename "$part")" + sudo umount "$dst" + done + sudo losetup -d "$dev" +) \ No newline at end of file diff --git a/nvidia-enablement/data/refind/EFI/boot/refind.conf b/nvidia-enablement/data/refind/EFI/boot/refind.conf index a0d6744..31406a8 100644 --- a/nvidia-enablement/data/refind/EFI/boot/refind.conf +++ b/nvidia-enablement/data/refind/EFI/boot/refind.conf @@ -331,7 +331,7 @@ showtools install,bootorder,shell,memtest,gdisk,apple_recovery,csr_rotate,window # On UEFI PCs, default is internal,external,optical,manual # On Macs, default is internal,hdbios,external,biosexternal,optical,cd,manual # -scanfor manual +#scanfor internal,external,optical,manual,firmware # By default, rEFInd relies on the UEFI firmware to detect BIOS-mode boot # devices. This sometimes doesn't detect all the available devices, though. @@ -647,6 +647,10 @@ csr_values 10,77 # except when you must pass a forward slash to the loader, as when # passing a root= option to a Linux kernel. +# Below are several sample boot stanzas. All are disabled by default. +# Find one similar to what you need, copy it, remove the "disabled" line, +# and adjust the entries to suit your needs. + menuentry "PikaOS Live Image" { icon EFI/BOOT/REFIND-DARK/ICONS/OS_PIKAOS.PNG loader EFI/VMLINUZ diff --git a/nvidia-enablement/hooks/2-link-uname-to-kernel.chroot b/nvidia-enablement/hooks/2-link-uname-to-kernel.chroot deleted file mode 100755 index e7b385d..0000000 --- a/nvidia-enablement/hooks/2-link-uname-to-kernel.chroot +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -. /chroot_scripts/info.sh - -if [ -z $ISO_KERNEL ] -then - exit 1 -fi - -echo "Workaround: Link chroot kernel to host kernel..." -ln -sfv /boot/config-$ISO_KERNEL /boot/config-$(uname -r) -ln -sfv /boot/initrd.img-$ISO_KERNEL /boot/initrd.img-$(uname -r) -ln -sfv /usr/src/linux-headers-$ISO_KERNEL /usr/src/linux-headers-$(uname -r) -ln -sfv /boot/System.map-$ISO_KERNEL /boot/System.map-$(uname -r) -ln -sfv /boot/vmlinuz-$ISO_KERNEL /boot/vmlinuz-$(uname -r) \ No newline at end of file diff --git a/old.sh b/old.sh new file mode 100644 index 0000000..166db4b --- /dev/null +++ b/old.sh @@ -0,0 +1,30 @@ +dd if=/dev/zero of="$LIVE_BOOT_PATH/efiboot.img" bs=1 count=$(du -s -B1 ./data/refind | cut -f1) +mkfs.vfat -F 32 "$LIVE_BOOT_PATH/efiboot.img" +for directory in $(find ./data/refind/EFI/ -type d | cut -d'/' -f4-) +do + mmd -i "$LIVE_BOOT_PATH/efiboot.img" ::"$(echo $directory | tr '[:lower:]' '[:upper:]' | sed 's:/*$::')" +done + +for file in $(find ./data/refind/EFI/ -type f) +do + mcopy -i "$LIVE_BOOT_PATH/efiboot.img" $file ::"$(echo $file | cut -d'/' -f4- | tr '[:lower:]' '[:upper:]')" +done + +# Create Bootable UEFI Full Image +mkdir -p ./output + +xorriso \ + -as mkisofs \ + -iso-level 3 \ + -V "PikaOS 4" \ + -e --interval:appended_partition_2:all:: \ + -append_partition 2 0xef "$LIVE_BOOT_PATH/efiboot.img" \ + -J -joliet-long \ + -no-emul-boot \ + -isohybrid-gpt-basdat \ + -o "./output/$ISO_IMAGE".iso \ + "$LIVE_BOOT_DATA_PATH" + +# Generate an integrity sum +touch "./output/$ISO_IMAGE".md5 +md5sum "./output/$ISO_IMAGE".iso > "./output/$ISO_IMAGE".md5 \ No newline at end of file