代码拉取完成,页面将自动刷新
#! /bin/bash
[ ${USER} = root ] && {
cat << EOF
Do not run as root!
EOF
exit 29
}
[ -d "$(dirname ${0%/[^/]*})/squashfs-root" ] || {
cat << EOF
"$(dirname ${0%/[^/]*})/squashfs-root" does not exist.
EOF
exit 29
}
[ -d binary ] && rm -rf binary
[ -d /tmp/iso ] && rmdir /tmp/iso
mkdir binary /tmp/iso
[ -f "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso" ] && {
sudo mount -o ro,uid=${UID},gid=${GROUPS[0]} $(sudo losetup --show -P -f "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso") /tmp/iso
tar cvf - -C /tmp/iso boot/grub .disk EFI isolinux oem | tar xf - -C binary
tar cvf - --exclude filesystem.squashfs -C /tmp/iso live/packages_{default,choice}.json | tar xf - -C binary
find binary -perm 444 -exec chmod 644 {} \;
find binary -perm 555 -exec chmod 755 {} \;
[ -f binary/isolinux/add.cfg ] && rm binary/isolinux/add.cfg
[ -f binary/isolinux/boot.cat ] && rm binary/isolinux/boot.cat
tar cvf - -C "$(dirname ${0%/[^/]*})/squashfs-root/usr/lib/ISOLINUX" isolinux.bin | tar xf - -C binary/isolinux
sudo umount --detach-loop /tmp/iso
rmdir /tmp/iso
mv "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso" "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso.orig"
}
find binary/boot/grub/x86_64-efi -type f \( -name '*.lst' -o -name '*.mod' \) -delete
( cd "$(dirname ${0%/[^/]*})/squashfs-root/usr/lib/grub/x86_64-efi" ; find -type f \( -name '*.lst' -o -name '*.mod' \) -exec tar cvf - {} \+ ) | tar xf - -C binary/boot/grub/x86_64-efi
tar cvf - -C "$(dirname ${0%/[^/]*})/squashfs-root/usr/lib/shim" shimx64.efi.signed | tar xf - -C binary/EFI/BOOT
tar cvf - -C "$(dirname ${0%/[^/]*})/squashfs-root/usr/lib/grub/x86_64-efi-signed" gcdx64.efi.signed | tar xf - -C binary/EFI/BOOT
[ -f binary/EFI/BOOT/BOOTx64.EFI ] && rm binary/EFI/BOOT/BOOTx64.EFI
[ -f binary/EFI/BOOT/grubx64.efi ] && rm binary/EFI/BOOT/grubx64.efi
mv binary/EFI/BOOT/{shimx64.efi.signed,BOOTx64.EFI}
mv binary/EFI/BOOT/{gcdx64.efi.signed,grubx64.efi}
[ -f binary/boot/efi.img ] && rm binary/boot/efi.img
mkfs.msdos -C binary/boot/efi.img $((($(du -s -BK binary/EFI/BOOT | sed -e 's/K.*//')+16+55)/32*32))
[ -d efi.img ] || mkdir efi.img
sudo mount -o uid=${UID},gid=${GROUPS[0]} $(sudo losetup --show -f binary/boot/efi.img) efi.img
tar cvf - -C binary EFI | tar xf - -C efi.img
mkdir -p efi.img/boot/grub
cat << "EOF" > efi.img/boot/grub/grub.cfg
search --set=root --file /live/vmlinuz
set prefix=($root)/boot/grub
configfile ($root)/boot/grub/grub.cfg
EOF
sudo umount --detach-loop efi.img
rmdir efi.img
[ -f binary/live/filesystem.squashfs ] && rm binary/live/filesystem.squashfs
for i in /tmp/workdir /tmp/overlay squashfs-root ; do
[ -d ${i} ] && sudo rm -rf ${i}
[ -d ${i} ] || mkdir ${i}
done
sudo mount -t overlay -o lowerdir="$(dirname ${0%/[^/]*})/squashfs-root",upperdir=/tmp/overlay,workdir=/tmp/workdir overlay squashfs-root
[ -d squashfs-root/lib/live/mount/medium ] || sudo mkdir -p squashfs-root/lib/live/mount/medium
mkfs.msdos -C /tmp/live.img $((128*1024))
sudo mount -o uid=${UID},gid=${GROUPS[0]} $(sudo losetup --show -f /tmp/live.img) squashfs-root/lib/live/mount/medium
[ -d squashfs-root/lib/live/mount/medium/live ] || sudo mkdir -p squashfs-root/lib/live/mount/medium/live
sudo tar cvf - -C /etc resolv.conf hosts | sudo tar xf - -C squashfs-root/etc
sudo mount --bind /dev squashfs-root/dev
sudo mount -t proc none squashfs-root/proc
sudo mount -t sysfs none squashfs-root/sys
sudo mount -t devpts none squashfs-root/dev/pts
dbus-uuidgen | sudo tee squashfs-root/var/lib/dbus/machine-id
sudo env HOME=/root LC_ALL=C chroot squashfs-root dpkg-divert --local --rename --add /sbin/initctl
sudo ln -s /bin/true squashfs-root/sbin/initctl
for i in squashfs-root/lib/modules/[0-9]* ; do true ; done
sudo env HOME=/root LC_ALL=C chroot squashfs-root live-update-initramfs -k $(basename ${i}) -u -v
unset i
tar cvf - -C squashfs-root/lib/live/mount/medium live | tar xf - -C binary
ln binary/live/vmlinuz{,.efi}
mv binary/live/initrd.{img,lz}
sudo umount --detach-loop squashfs-root/lib/live/mount/medium
rm /tmp/live.img
sudo find squashfs-root -depth -maxdepth 3 -type d -exec mountpoint -q {} \; -exec umount {} \;
sudo rm -rf /tmp/overlay /tmp/workdir /tmp/squashfs-root
sudo env HOME=/root LC_ALL=C chroot "$(dirname ${0%/[^/]*})/squashfs-root" dpkg-query -W --showformat='${Package} ${Version}\n' > binary/live/filesystem.manifest
ln binary/live/filesystem.manifest binary/live/filesystem.manifest-desktop
sudo mksquashfs "$(dirname ${0%/[^/]*})/squashfs-root" binary/live/filesystem.squashfs -comp xz
sudo chown ${UID}:${GROUPS[0]} binary/live/filesystem.squashfs
printf $(sudo du -sx --block-size=1 "$(dirname ${0%/[^/]*})/squashfs-root" | cut -f1) > binary/live/filesystem.size
( cd binary ; find \! -name md5sum.txt -type f -print0 | xargs -0 md5sum | grep -v 'isolinux/isolinux.bin\|filesystem.module' | tee md5sum.txt )
cat << "EOF" > binary/boot/grub/grub.cfg
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5
background_image /boot/grub/background.png
menuentry "Deepin Live Desktop " {
set gfxpayload=keep
linux /live/vmlinuz.efi boot=live union=overlay modprobe.blacklist=nvidia,nvidia_drm,nvidia_modeset locales=en_US.UTF-8 console=tty toram --
initrd /live/initrd.lz
}
menuentry "Deepin Live Desktop (Nvidia including Prime) " {
set gfxpayload=keep
linux /live/vmlinuz.efi boot=live union=overlay snd-intel-dspcfg.dsp_driver=1 locales=en_US.UTF-8 console=tty systemd.unit=nvidia.target --
initrd /live/initrd.lz
}
menuentry "Deepin Live Desktop (Nvidia 3D as Primary GPU) " {
set gfxpayload=keep
linux /live/vmlinuz.efi boot=live union=overlay snd-intel-dspcfg.dsp_driver=1 locales=en_US.UTF-8 console=tty primary-display=nvidia nvidia-drm.modeset=1 systemd.unit=nvidia.target --
initrd /live/initrd.lz
}
menuentry 'Deepin Live Desktop (Safe graphics)'{
set gfxpayload=keep
linux /live/vmlinuz.efi boot=live union=overlay snd-intel-dspcfg.dsp_driver=1 locales=en_US.UTF-8 console=tty nomodeset toram --
initrd /live/initrd.lz
boot
}
EOF
cat << "EOF" > binary/isolinux/live.cfg
label live
menu label ^Deepin Live with Desktop
menu default
linux /live/vmlinuz
initrd /live/initrd.lz
append boot=live components union=overlay modprobe.blacklist=nvidia,nvidia_drm,nvidia_modeset locales=en_US.UTF-8 toram
label live-prime
menu label ^Deepin Live with Desktop (Nvidia including Prime)
menu default
linux /live/vmlinuz
initrd /live/initrd.lz
append boot=live components union=overlay snd-intel-dspcfg.dsp_driver=1 locales=en_US.UTF-8 systemd.unit=nvidia.target
label live-primary
menu label ^Deepin Live with Desktop (Nvidia 3D as Primary GPU)
menu default
linux /live/vmlinuz
initrd /live/initrd.lz
append boot=live components union=overlay snd-intel-dspcfg.dsp_driver=1 locales=en_US.UTF-8 primary-display=nvidia nvidia.modeset=1 systemd.unit=nvidia.target
label live-safe
menu label ^Deepin Live with Desktop (Safe graphics)
linux /live/vmlinuz
initrd /live/initrd.lz
append boot=live components nomodeset union=overlay snd-intel-dspcfg.dsp_driver=1 locales=en_US.UTF-8 toram
EOF
xorriso -as mkisofs \
-R -r -J -joliet-long -l -cache-inodes -iso-level 3 -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 \
-A "" -p "@xorriso@" -P "" -V "deepin 20" --modification-date="$(date --utc --date=@0 +%Y%m%d%H%m%S00)" -v \
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot \
-e boot/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus \
-o "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso" binary
[ -f "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso" ] || \
mv "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso.orig" "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso"
[ -f "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso" ] && [ -f "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso.orig" ] && \
rm "$(dirname ${0%/[^/]*})/Downloads/Deepin-Live.iso.orig"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。