diff options
93 files changed, 578 insertions, 241 deletions
@@ -18,10 +18,12 @@ A presentation in Chinese is at https://wehack.space/vimacs/liveusb-builder.odp. You need these packages on your GNU/Linux system to use liveusb-builder. -- udevil: for mounting iso files +- libarchive: for ISO image extraction +- udisks2 (optional,recommended): for mounting USB disk partitions without being root +- udevil (optional): for mounting USB disk partitions and ISO images without being root - wget: for downloading - syslinux (recommended): bootloader for legacy BIOS -- GRUB: bootloader for leagacy BIOS if there's no syslinux, and bootloader for UEFI +- GRUB: bootloader for legacy BIOS if there's no syslinux, and bootloader for UEFI For Arch Linux users, just install [liveusb-builder-git](https://aur.archlinux.org/packages/liveusb-builder-git/) from AUR. @@ -41,11 +43,19 @@ I've already used this method to successfully install Windows 7, OpenBSD 6.7, an ## Usage +First, you need to have a partitioned USB drive. For the best legacy BIOS compatibility, it's recommended to use MSDOS (MBR) partition table. Because most UEFI firmware only supports FAT32 partitions, you need a FAT32 partition on the USB drive, and put the boot files into this partition. + ### The easier way: one FAT32 partition -First mount your USB drive partition. I recommend using udevil so that you can write files without as root. +Suppose your USB stick device is /dev/sdb and the partition on the device is /dev/sdb1. + +```bash +# install Arch, Mint (x86_64 with MATE Desktop) and Fedora 32 to USB +./buildlive --root=/dev/sdb1 arch mint/mate fedora/32 +``` -Then run buildlive script as follows, suppose your USB is /dev/sdb and /dev/sdb1 is mount to /media/sdb1: +The other way is to mount your USB drive partition first. I recommend using udevil so that you can write files without as root. +Then run buildlive script as follows, suppose /dev/sdb1 is mount to /media/sdb1: ```bash # install Arch, Mint (x86_64 with MATE Desktop) and Fedora 32 to USB @@ -125,10 +135,18 @@ At last, make the Live USB (we install Arch and Fedora 32 in it): $ ./buildlive --boot /media/boot --root /media/root arch fedora/32 ``` +## Experimental features + +I've made some experimental features that are not yet merged to the main source tree. + +- [ia32efi-test](https://github.com/mytbk/liveusb-builder/commits/ia32efi-test): support IA32 EFI + ## Status The resulting USB stick works on QEMU with PC BIOS (SeaBIOS), UEFI (OVMF), libreboot (i440fx, GRUB txtmode) as firmware. +The script ``testusb.sh`` can be used to test a USB stick with QEMU. + ## Related work You can search keyword ``multiboot`` on GitHub and find some related projects. Listed below is some related work I know or find. @@ -17,21 +17,13 @@ DOWNLOAD_ONLY=0 UMOUNT_BOOT=0 UMOUNT_ROOT=0 CLEAN_USB=0 +BOOTLOADER_ONLY=0 . functions.sh -msg() { - echo -e "$1" >&2 -} - -fatalerror() { - msg "\x1b[1;31m$1\x1b[0m" - exit 1 -} - usage() { >&2 cat << EOF -$0 [--root <path>] [options] [distro 1] [distro 2] ... +$0 [--root <path>] [options] [--distro=<metadist> <isofile>] [distro] ... use $0 -L to list available distros options: --root <path> @@ -39,6 +31,7 @@ options: --boot <path> --boot=<path>: set the path to put the kernel and loader files --clean: clean the old live USB files before installing + --bootloader-only: only install the boot loader --no-grub: do not install GRUB loader (still generate grub.cfg) --grubcfg: do not do real install, only generate grub.cfg file --downloadonly: only download the ISO files @@ -52,7 +45,7 @@ try_mount() { then if ! findmnt "$1" > /dev/null then - udevil mount "$1" > /dev/null + mount_block "$1" > /dev/null mnt=$(findmnt -n -o TARGET "$1") else mnt=$(findmnt -n -o TARGET "$1") @@ -63,6 +56,9 @@ try_mount() { echo "$mnt" } +detect_block_mount_tool 2>/dev/null +detect_iso_mount_tool 2>/dev/null + unset ISOPATH CFGFILE="$HOME/.liveusb-builder" test -f "$CFGFILE" && source "$CFGFILE" || true @@ -91,6 +87,9 @@ do --dev=*) DEVNAME=${1/--dev=} ;; + --bootloader-only) + BOOTLOADER_ONLY=1 + ;; --no-grub) INSTALL_GRUB=0 ;; @@ -103,6 +102,20 @@ do --clean) CLEAN_USB=1 ;; + --distro=*) + metadist="${1/--distro=}" + if [ ! -f "distro/$metadist/meta" ] + then + fatalerror "distro/$metadist/meta not found" + fi + shift + isofn="$1" + if [ ! -f "$isofn" ] + then + fatalerror "File $isofn not found" + fi + DISTROLIST=(${DISTROLIST[@]} "/meta@$metadist@$isofn") + ;; *=*|-*) usage exit 1 @@ -158,7 +171,7 @@ if [[ "$DOWNLOAD_ONLY" == 0 ]]; then msg "Files will be copy to $ROOTPATH" fi -if [[ "${#DISTROLIST[@]}" == 0 ]]; then +if [[ "$BOOTLOADER_ONLY" == 0 && "${#DISTROLIST[@]}" == 0 ]]; then usage exit 1 fi @@ -174,6 +187,17 @@ fi for i in ${DISTROLIST[@]} do + if [[ "$i" == /meta@* ]] + then + # FIXME: we assume the meta file path and the iso file name + # does not have '@' character + ISOFILE="$(echo "$i" | cut -d@ -f3)" + ISOLIST=("${ISOLIST[@]}" "$ISOFILE") + # TODO: we just use the file name as the ISO name + # can we do it better? + ISONAMELIST=("${ISONAMELIST[@]}" "$(basename "$ISOFILE")") + continue + fi process_isoinfo "$i" ISOLIST=("${ISOLIST[@]}" "$ISOFILE") ISONAMELIST=("${ISONAMELIST[@]}" "$ISONAME") @@ -199,16 +223,28 @@ do DISTRO="${DISTROLIST[$i-1]}" ISO_FILEPATH="$ISOPATH/$ISOFILE" - set_distro "$DISTRO" - export DISTRONAME KEYWORD # for grub and syslinux generation - - process_distro "$DISTRO" + if [[ "$DISTRO" == /meta@* ]] + then + metadir="$(echo "$DISTRO" | cut -d@ -f2)" + _meta=meta_ + ISO_FILEPATH="$ISOFILE" + DISTRO="$metadir" + set_distro "$metadir" + KEYWORD="$ISONAME" + source "distro/$metadir/meta" + else + _meta= + ISO_FILEPATH="$ISOPATH/$ISOFILE" + set_distro "$DISTRO" + export DISTRONAME KEYWORD # for grub and syslinux generation + process_distro "$DISTRO" + fi if [ "$GRUBCFG_ONLY" == 0 ]; then install_live fi - gen_grubcfg "$DISTRO" >> "$GRUBCFG" - gen_syslinux "$DISTRO" >> "$SYSLINUXCFG" + ${_meta}gen_grubcfg "$DISTRO" >> "$GRUBCFG" + ${_meta}gen_syslinux "$DISTRO" >> "$SYSLINUXCFG" done if [ "$GRUBCFG_ONLY" == 1 ]; then @@ -226,9 +262,9 @@ fi if [ "$UMOUNT_BOOT" == 1 ]; then msg 'Trying to umount the boot mountpoint, you may need to wait for sync() to complete.' - udevil umount "$BOOTPATH" + unmount_block "$BOOTPATH" fi if [ "$UMOUNT_ROOT" == 1 -a "$ROOTPATH" != "$BOOTPATH" ]; then msg 'Trying to umount the root mountpoint, you may need to wait for sync() to complete.' - udevil umount "$ROOTPATH" + unmount_block "$ROOTPATH" fi diff --git a/distro/arch/entry1 b/distro/arch/entry1 index 38dfcd3..07656b6 100644 --- a/distro/arch/entry1 +++ b/distro/arch/entry1 @@ -1,7 +1,7 @@ TITLE='Arch Linux x86_64' -KERNEL=/liveusb-kernel/$KEYWORD/x86_64/vmlinuz-linux -INITRD=(/liveusb-kernel/$KEYWORD/intel-ucode.img - /liveusb-kernel/$KEYWORD/amd-ucode.img - /liveusb-kernel/$KEYWORD/x86_64/initramfs-linux.img) +prefix="/liveusb-kernel/$KEYWORD/arch/boot" +KERNEL="$prefix/x86_64/vmlinuz-linux" +INITRD=("$prefix/intel-ucode.img" "$prefix/amd-ucode.img" + "$prefix/x86_64/initramfs-linux.img") OPTION="img_dev=/dev/disk/by-uuid/$UUID img_loop=liveusb-data/$KEYWORD/$ISOFILE" X64=y diff --git a/distro/arch/install.sh b/distro/arch/install.sh index 1321a0b..96e583e 100644 --- a/distro/arch/install.sh +++ b/distro/arch/install.sh @@ -1,9 +1,6 @@ install_live() { - mount_iso install -d "$DATADIR/$KEYWORD" "$KERNELDIR/$KEYWORD" - cp -r "$ISOMNT/arch/boot/x86_64" "$KERNELDIR/$KEYWORD/" + iso_extract "${ISO_FILEPATH}" arch/boot/x86_64 'arch/boot/*.img' "$KERNELDIR/$KEYWORD/" cp "${ISO_FILEPATH}" "$DATADIR/$KEYWORD/" - cp "$ISOMNT/arch/boot/"*.img "$KERNELDIR/$KEYWORD/" - umount_iso } diff --git a/distro/arch/isoinfo b/distro/arch/isoinfo index 3212416..9d51eaf 100644 --- a/distro/arch/isoinfo +++ b/distro/arch/isoinfo @@ -1,11 +1,11 @@ -_isodate=2020.10.01 +_isodate=2023.07.01 ISONAME="$DISTRONAME $_isodate" ISOURL=iso/$_isodate/archlinux-$_isodate-x86_64.iso -SHA1=67c2603d194a004f7010f57c25faa5dcea04a05f +SHA256=1a2c1cdea0118b60525f55ee616e9cd4cf68fe17db906ce3d8e46fd06f9907eb mirrorlist=( https://mirrors.tuna.tsinghua.edu.cn/archlinux -http://mirrors.ustc.edu.cn/archlinux +https://mirrors.ustc.edu.cn/archlinux https://mirror.aur.rocks http://archlinux.de-labrusse.fr http://mirror.cedille.club/archlinux diff --git a/distro/arch/meta b/distro/arch/meta new file mode 100644 index 0000000..fcfe18f --- /dev/null +++ b/distro/arch/meta @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# TODO: detect kernel, initramfs, and ucode filenames + +entry() { + TITLE="$ISONAME" + prefix="/liveusb-kernel/$KEYWORD/arch/boot" + KERNEL="$prefix/x86_64/vmlinuz-linux" + INITRD=("$prefix/intel-ucode.img" "$prefix/amd-ucode.img" + "$prefix/x86_64/initramfs-linux.img") + OPTION="img_dev=/dev/disk/by-uuid/$UUID img_loop=liveusb-data/$KEYWORD/$ISONAME" + X64=y +} + +install_live() { + install -d "$DATADIR/$KEYWORD" "$KERNELDIR/$KEYWORD" + iso_extract "${ISO_FILEPATH}" arch/boot/x86_64 'arch/boot/*.img' "$KERNELDIR/$KEYWORD/" + cp "${ISO_FILEPATH}" "$DATADIR/$KEYWORD/" +} + +entries=(entry) diff --git a/distro/centos/7/isoinfo b/distro/centos/7/isoinfo index 7cf0f37..a355d5f 100644 --- a/distro/centos/7/isoinfo +++ b/distro/centos/7/isoinfo @@ -1,7 +1,8 @@ ISONAME="$DISTRONAME 7 Install DVD" -ISOURL=7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso -SHA256=087a5743dc6fd6706d9b961b8147423ddc029451b938364c760d75440eb7be14 +ISOURL=7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso +SHA256=e33d7b1ea7a9e2f38c8f693215dd85254c3a4fe446f93f563279715b68d07987 mirrorlist=( -https://mirrors.tuna.tsinghua.edu.cn/centos +https://mirrors.ustc.edu.cn/centos/ +https://mirrors.pku.edu.cn/centos/ ) diff --git a/distro/debian/32/cinnamon/entry b/distro/debian/32/cinnamon/entry new file mode 100644 index 0000000..b25f280 --- /dev/null +++ b/distro/debian/32/cinnamon/entry @@ -0,0 +1,2 @@ +_desktop=Cinnamon +source distro/debian/32/entry diff --git a/distro/debian/32/cinnamon/install.sh b/distro/debian/32/cinnamon/install.sh new file mode 100644 index 0000000..a48726f --- /dev/null +++ b/distro/debian/32/cinnamon/install.sh @@ -0,0 +1,2 @@ +source distro/debian/32/install.sh + diff --git a/distro/debian/32/cinnamon/isoinfo b/distro/debian/32/cinnamon/isoinfo new file mode 100644 index 0000000..88a104a --- /dev/null +++ b/distro/debian/32/cinnamon/isoinfo @@ -0,0 +1,3 @@ +_desktop=Cinnamon +_arch=i386 +source distro/debian/isoinfo.common diff --git a/distro/debian/32/entry b/distro/debian/32/entry new file mode 100644 index 0000000..b0f62fa --- /dev/null +++ b/distro/debian/32/entry @@ -0,0 +1,5 @@ +TITLE="Debian 10.10.0 i386 ${_desktop}" +KERNEL=/liveusb-kernel/debian/32/vmlinuz-4.19.0-9-amd64 +INITRD=/liveusb-kernel/debian/32/initrd.img-4.19.0-9-amd64 +OPTION="boot=live findiso=liveusb-data/debian/$ISOFILE" +X64=n diff --git a/distro/debian/32/gnome/entry b/distro/debian/32/gnome/entry new file mode 100644 index 0000000..29e1900 --- /dev/null +++ b/distro/debian/32/gnome/entry @@ -0,0 +1,2 @@ +_desktop=GNOME +source distro/debian/32/entry diff --git a/distro/debian/32/gnome/install.sh b/distro/debian/32/gnome/install.sh new file mode 100644 index 0000000..a48726f --- /dev/null +++ b/distro/debian/32/gnome/install.sh @@ -0,0 +1,2 @@ +source distro/debian/32/install.sh + diff --git a/distro/debian/32/gnome/isoinfo b/distro/debian/32/gnome/isoinfo new file mode 100644 index 0000000..6c55455 --- /dev/null +++ b/distro/debian/32/gnome/isoinfo @@ -0,0 +1,3 @@ +_desktop=GNOME +_arch=i386 +source distro/debian/isoinfo.common diff --git a/distro/debian/32/install.sh b/distro/debian/32/install.sh new file mode 100644 index 0000000..e03fa68 --- /dev/null +++ b/distro/debian/32/install.sh @@ -0,0 +1,7 @@ +install_live() { + install -d "$KERNELDIR/debian/32" "$DATADIR/debian" + cp "${ISO_FILEPATH}" "$DATADIR/debian/" + mount_iso + cp "$ISOMNT/live/vmlinuz"* "$ISOMNT/live/initrd.img"* "$KERNELDIR/debian/32/" + umount_iso +} diff --git a/distro/debian/32/kde/entry b/distro/debian/32/kde/entry new file mode 100644 index 0000000..22ff81a --- /dev/null +++ b/distro/debian/32/kde/entry @@ -0,0 +1,2 @@ +_desktop=KDE +source distro/debian/32/entry diff --git a/distro/debian/32/kde/install.sh b/distro/debian/32/kde/install.sh new file mode 100644 index 0000000..a48726f --- /dev/null +++ b/distro/debian/32/kde/install.sh @@ -0,0 +1,2 @@ +source distro/debian/32/install.sh + diff --git a/distro/debian/32/kde/isoinfo b/distro/debian/32/kde/isoinfo new file mode 100644 index 0000000..5351b1a --- /dev/null +++ b/distro/debian/32/kde/isoinfo @@ -0,0 +1,3 @@ +_desktop=KDE +_arch=i386 +source distro/debian/isoinfo.common diff --git a/distro/debian/32/lxde/entry b/distro/debian/32/lxde/entry new file mode 100644 index 0000000..631cba9 --- /dev/null +++ b/distro/debian/32/lxde/entry @@ -0,0 +1,2 @@ +_desktop=LXDE +source distro/debian/32/entry diff --git a/distro/debian/32/lxde/install.sh b/distro/debian/32/lxde/install.sh new file mode 100644 index 0000000..a48726f --- /dev/null +++ b/distro/debian/32/lxde/install.sh @@ -0,0 +1,2 @@ +source distro/debian/32/install.sh + diff --git a/distro/debian/32/lxde/isoinfo b/distro/debian/32/lxde/isoinfo new file mode 100644 index 0000000..cc14ed7 --- /dev/null +++ b/distro/debian/32/lxde/isoinfo @@ -0,0 +1,3 @@ +_desktop=LXDE +_arch=i386 +source distro/debian/isoinfo.common diff --git a/distro/debian/32/mate/entry b/distro/debian/32/mate/entry new file mode 100644 index 0000000..c2e53a4 --- /dev/null +++ b/distro/debian/32/mate/entry @@ -0,0 +1,2 @@ +_desktop=MATE +source distro/debian/32/entry diff --git a/distro/debian/32/mate/install.sh b/distro/debian/32/mate/install.sh new file mode 100644 index 0000000..a48726f --- /dev/null +++ b/distro/debian/32/mate/install.sh @@ -0,0 +1,2 @@ +source distro/debian/32/install.sh + diff --git a/distro/debian/32/mate/isoinfo b/distro/debian/32/mate/isoinfo new file mode 100644 index 0000000..41fa5ad --- /dev/null +++ b/distro/debian/32/mate/isoinfo @@ -0,0 +1,3 @@ +_desktop=MATE +_arch=i386 +source distro/debian/isoinfo.common diff --git a/distro/debian/32/xfce/entry b/distro/debian/32/xfce/entry new file mode 100644 index 0000000..6c2aa5e --- /dev/null +++ b/distro/debian/32/xfce/entry @@ -0,0 +1,2 @@ +_desktop=Xfce +source distro/debian/32/entry diff --git a/distro/debian/32/xfce/install.sh b/distro/debian/32/xfce/install.sh new file mode 100644 index 0000000..a48726f --- /dev/null +++ b/distro/debian/32/xfce/install.sh @@ -0,0 +1,2 @@ +source distro/debian/32/install.sh + diff --git a/distro/debian/32/xfce/isoinfo b/distro/debian/32/xfce/isoinfo new file mode 100644 index 0000000..bbdb88a --- /dev/null +++ b/distro/debian/32/xfce/isoinfo @@ -0,0 +1,3 @@ +_desktop=Xfce +_arch=i386 +source distro/debian/isoinfo.common diff --git a/distro/debian/64/cinnamon/isoinfo b/distro/debian/64/cinnamon/isoinfo index 4968327..4ca2f33 100644 --- a/distro/debian/64/cinnamon/isoinfo +++ b/distro/debian/64/cinnamon/isoinfo @@ -1,2 +1,3 @@ _desktop=Cinnamon +_arch=amd64 source distro/debian/isoinfo.common diff --git a/distro/debian/64/entry b/distro/debian/64/entry index af7630c..ae36f69 100644 --- a/distro/debian/64/entry +++ b/distro/debian/64/entry @@ -1,4 +1,4 @@ -TITLE="Debian 10.4.0 AMD64 ${_desktop}" +TITLE="Debian 10.10.0 AMD64 ${_desktop}" KERNEL=/liveusb-kernel/debian/64/vmlinuz-4.19.0-9-amd64 INITRD=/liveusb-kernel/debian/64/initrd.img-4.19.0-9-amd64 OPTION="boot=live findiso=liveusb-data/debian/$ISOFILE" diff --git a/distro/debian/64/gnome/isoinfo b/distro/debian/64/gnome/isoinfo index 3ff5a3e..cdefeae 100644 --- a/distro/debian/64/gnome/isoinfo +++ b/distro/debian/64/gnome/isoinfo @@ -1,2 +1,3 @@ _desktop=GNOME +_arch=amd64 source distro/debian/isoinfo.common diff --git a/distro/debian/64/kde/isoinfo b/distro/debian/64/kde/isoinfo index a0713be..216ef77 100644 --- a/distro/debian/64/kde/isoinfo +++ b/distro/debian/64/kde/isoinfo @@ -1,2 +1,3 @@ _desktop=KDE +_arch=amd64 source distro/debian/isoinfo.common diff --git a/distro/debian/64/lxde/isoinfo b/distro/debian/64/lxde/isoinfo index 77fc955..36cac85 100644 --- a/distro/debian/64/lxde/isoinfo +++ b/distro/debian/64/lxde/isoinfo @@ -1,2 +1,3 @@ _desktop=LXDE +_arch=amd64 source distro/debian/isoinfo.common diff --git a/distro/debian/64/mate/isoinfo b/distro/debian/64/mate/isoinfo index e9bc172..43b55f1 100644 --- a/distro/debian/64/mate/isoinfo +++ b/distro/debian/64/mate/isoinfo @@ -1,2 +1,3 @@ _desktop=MATE +_arch=amd64 source distro/debian/isoinfo.common diff --git a/distro/debian/64/xfce/isoinfo b/distro/debian/64/xfce/isoinfo index 3c65a22..8e62417 100644 --- a/distro/debian/64/xfce/isoinfo +++ b/distro/debian/64/xfce/isoinfo @@ -1,2 +1,3 @@ _desktop=Xfce +_arch=amd64 source distro/debian/isoinfo.common diff --git a/distro/debian/SHA512SUMS b/distro/debian/SHA512SUMS index 5ac6ce3..02d0bc0 100644 --- a/distro/debian/SHA512SUMS +++ b/distro/debian/SHA512SUMS @@ -1,32 +1,64 @@ -998c01055684c599660ff8d11b0f89ad23fa943218772179a3284be56c0ca04663676dd4ae2d286072b3f5649842d5b1f28239265cca7ada2f80a2aca5d496f0 debian-live-10.4.0-amd64-cinnamon.contents -6358481387514047f03312a263884b48e5b4f283f0c1578c8eb99b66d2a95e0ac90f12607a3cd337942bb3b66ca2a6c549f63fd1a9c47dd80d186b6cae73bbd7 debian-live-10.4.0-amd64-cinnamon.iso -516914c30a358e7b0abc2b53e30ddf1c409ae8bf47372c6dd0b1d63f9c19cce6199f1beb2d4cba93c545e1cebea9b340fd612f980278630a6b04f1fcb9a1fede debian-live-10.4.0-amd64-cinnamon.log -f7b4748ce99c97e53c45fff14b5e9e4bf45e77d2183cc7dbf1f4c23ccbe5dac5ca084958dfacd0f8e6e8c1b1147a8aa676e857467d62e5c9a0d70357868ad447 debian-live-10.4.0-amd64-cinnamon.packages -998c01055684c599660ff8d11b0f89ad23fa943218772179a3284be56c0ca04663676dd4ae2d286072b3f5649842d5b1f28239265cca7ada2f80a2aca5d496f0 debian-live-10.4.0-amd64-gnome.contents -9677ffe630b522312e19d3be36c50c2c9e0cfdb2865dda76ec178fd973919a738e1468bd564a51eb03125c2b8dd4f1003567cadd74c340f9c56936771cd39878 debian-live-10.4.0-amd64-gnome.iso -d3416e4e4597a381e1e6ef6c18315d25ef00f318696069751f239bab58a8b5bd8f33b1a39e8c324866957a2a1c4ada0d05d4dd183a1c6fc16980d3060365f36a debian-live-10.4.0-amd64-gnome.log -ea7df49283576bcec005edaed285cc41b2a043b2ba636f87fbc14844cff7a81c8d3965c59907421c10e9b7b87db527be223c258a43a1f079833cf55ba5149527 debian-live-10.4.0-amd64-gnome.packages -9e7397090019b831d5aa24fda9249a03ce1c6997cbf966b55c3d70f510c2cc7a9ca018a0c8f3ee5a7b46606e0d87731717ece1692844fbe514e01bce92e168fd debian-live-10.4.0-amd64-kde.contents -e61f59bcae03e19cf15a11ad9819a85d8019dccc87cc6c063c43b9a4a651cb9b1d663053ddfe6acef2f6caa169255c60a87db67bbcb641c37787e2fd4741dd8e debian-live-10.4.0-amd64-kde.iso -68d6303820c11e1041e966b6f45cf80651b745a667fecd8040b62a748c68b46943233f48950f494e762eb8140d080acdbff2e46b08111a56b1c389e9b800c687 debian-live-10.4.0-amd64-kde.log -2db83024642e3b926d0a5d789513b29f3f9517472d910b31fb3ca9bb313c6914bb5ffc83f63fa9caab557d9d17e78074201f71b950a6a70270af89c376414645 debian-live-10.4.0-amd64-kde.packages -8edc3d2495992069e6db2648f59c3a1663cc18808352094c8d2c974cc22a96be206cc8fdc781dd15f08f242376b1b3655fb7ce8e49bfb480806e3a2b1f721805 debian-live-10.4.0-amd64-lxde.contents -f50f074c77dc3adf0d290c1fa3cfd5cd45feb1b7291494b2c8c510c702b126b13907786ddf0a0f528520af5a416766898f6ad4cd228fbff671e6845ff9608dcc debian-live-10.4.0-amd64-lxde.iso -423a11ae182f7bd338391ecde1fd66556d9b69f7df58eca28938ab2bd22cadf79df2fc335f72c32458fa0487a9f99c805a0509c7c13eec3fc610022352730afc debian-live-10.4.0-amd64-lxde.log -a97373b784f29f7a6347e7786587b2e5674f9ee64ffc3007dd2ccbfff6f7fe2f824f7636dd0a7317f7f62e78643132f2755fd62351b8fffe85bc533036abf798 debian-live-10.4.0-amd64-lxde.packages -8edc3d2495992069e6db2648f59c3a1663cc18808352094c8d2c974cc22a96be206cc8fdc781dd15f08f242376b1b3655fb7ce8e49bfb480806e3a2b1f721805 debian-live-10.4.0-amd64-lxqt.contents -438a440287f003feef4c662d9ab8f5e060100bdfc2738efb9fb7b9abadf9e30381037c4ffeb02c91726b8bb0cf11d2d5a0711d2b9f8791ae032c2755029ca95c debian-live-10.4.0-amd64-lxqt.iso -e50f0bc2307742923e0a9885f0faeb6484467ae0be86cab8e38509bca08067312d64b62161833baaba69587d0ca17e4e81247a97b605feb5ca05a8e3f35e7a31 debian-live-10.4.0-amd64-lxqt.log -191c9a40af28d00ac61abc5be92e2ac8a46fd600483f40bdbc406bb0e1f95261809f62144f1198010aff1599acae9c6045b75190ae144fd129290fc8a02bfdd0 debian-live-10.4.0-amd64-lxqt.packages -447bdde16eb4a1ee89ac17250c9ac5678225b45bd064e39a3f60707e9ad5a8e3e770b1754d5e5b884031630377aa38e6e84eab7e839da1494932d0354d007148 debian-live-10.4.0-amd64-mate.contents -e9aeec69742f1dbc52f3adfc908f0b9749cc2f014a9854679df0a4fdfeeeb32be898cdeded05329d5286b5d81ec502f133da7ece2164c57216991ab45bc0e66d debian-live-10.4.0-amd64-mate.iso -c31d103869ddfe6f54e1af4b699c0566e4bbb2531de254a315351dc72c2a486f184bef62841e4b2ad399420eb7101e54f38bf39804d146b6a54930141379bdae debian-live-10.4.0-amd64-mate.log -e8bf93d8893bac2f4e943e36ad715dd422d4447cf178f127826d2a6e299f8d79e07e4ee628be2a8f28e41db4d457eb8100ce0fbe9c233269adeea390fa9e3822 debian-live-10.4.0-amd64-mate.packages -fc9eae42f7357fa2e51d877f609fcf8796edb15f09473018d890a1137ec4b02eb7d6bbf58f7f6920826b935b89fe06b7ca97aa3c10466b972349452aa5310d44 debian-live-10.4.0-amd64-standard.contents -52d892eaf19dca7e9fa5ca05ae69ee80f16adc2c28cb580a884ee3b4b72381d8c89a997a21c0e79f75dc28aae738c8f942d82401299f9fd1bcfea23bc3843708 debian-live-10.4.0-amd64-standard.iso -3dd69569644f06c6a0031099ebb08c878b3e4c919343560f3982a5a664ff9ae32a918d75a5965dca95ecd6b380f5446b449a1e7bee7650fca99b6aef5d44ba97 debian-live-10.4.0-amd64-standard.log -d015fbf3d34a11bf5c6866b24cfb727b850c6b19a11473f34f9c7f7295041fa5533d9228fdee4a3b040b36003b2f8def22fbccb6ae8575db8553e95ff5b8b66d debian-live-10.4.0-amd64-standard.packages -9fdeef676000b6db6f9f4ad94707ae87a781db1a6cda134f1447cf53232811c4a65bf65357acc5ce05dd8e1438a1c1fb32cdb37c9b7e28f69661f964a7ff79f6 debian-live-10.4.0-amd64-xfce.contents -2920f398c5e9036fcec8f71b2f28b0f2a85e3ab805e66088192dc56f679e5f59f26634e8bbde70badc3cf7ce353f54a2757b2017cbc3d3df9fb2b2065b3c1041 debian-live-10.4.0-amd64-xfce.iso -1978131d4dcd537cdbfbe0cba8442c2b4856151eb743a052ffeb521e12fab443ec95bf0952c04fbf7a3254785af42a016f3ab29a61f0a20c2280ff7d6bd8422a debian-live-10.4.0-amd64-xfce.log -40c5fc3e3bc77e5bb1c6dc266bf33c2368e9045868f5f233c8399fbb7692d76c8462e42d602d1db07a4bcfe218d3008887c705e2bdd91f9e1903a438f278ede7 debian-live-10.4.0-amd64-xfce.packages +2204cf6700ac1ed1a47318d9e40fffdfd0f589e2e7525f5943a95de4b6bca09ae8d9de5b55de23b045255c1bedfc67b627026e285e7f4e77abf5815998779173 debian-live-10.10.0-amd64-cinnamon.contents +f3d2933547f7f7731846aed4270d47c88e9700c7c3482fbdc914c7b7ed33f12e07d138d84b6492f41af7d2b520cf49b9cd27c5254de15331f41034ca66c1b4a8 debian-live-10.10.0-amd64-cinnamon.iso +558ef2d73cb64c449fba948b17d64547b8ae3c7f1aa5b31754cae1d7cfb1a25ff00b5b8152df231a058bf407bc61cf05972691892c1deab84a7ee73aa21a18e1 debian-live-10.10.0-amd64-cinnamon.log +35f811450b5d7c0b93fae9305d15efe8c9229eeefd43b058d60da14c1c7ba454609e07307c371534c95be1dbbbd8756eb7b63bf938e17c6493e7a8836c1874f6 debian-live-10.10.0-amd64-cinnamon.packages +2204cf6700ac1ed1a47318d9e40fffdfd0f589e2e7525f5943a95de4b6bca09ae8d9de5b55de23b045255c1bedfc67b627026e285e7f4e77abf5815998779173 debian-live-10.10.0-amd64-gnome.contents +9be098fcbe7fa7f8f061d9e4497ddd32aa4085d0c7db119a80dc79c9cf7d9783b234839a696da427b70a3817938aa01627ef414ffd3c54ab6a4a750bbea81e5f debian-live-10.10.0-amd64-gnome.iso +cc71037d64d7200afaf55a70d48c54ce60d86c6ed9496a338630c50a4f0c9bfe5b27dc6c0db9f196c6933dc4df5683a87c9cd911371defa43486cf63097952e6 debian-live-10.10.0-amd64-gnome.log +577d5b61d519191999f6f26d28be4cc1ab420a308fa4123d2fdce8e81f644c50a699128c1131269a66d16adec68dbc124286fcfa24ff4b3cd11d28d2ff2592f2 debian-live-10.10.0-amd64-gnome.packages +f106d2b17e68824a1c429c26f2183077e9992fda0079ce777dd0f55d52787759a6fe07d5d131581c34c17f477c2473c6ce688d7c3f0c1f7bcec103ac7efa16f5 debian-live-10.10.0-amd64-kde.contents +8e93cfab40af699f08cd81897e1594741214b811f651145ee26994719e205ec9328b15e165f44f39171eb1f25bafdd3f35e9096bec4b61043f9f84c7ec7874be debian-live-10.10.0-amd64-kde.iso +41562bcfe92c7d23ff57221ecb423d36f4c6f0d7e2f2ff17b44ca85080f3a7d86c910ae687a660bfdc3ab8f68e99bcca441080d682a238449c65b4c362b1aa29 debian-live-10.10.0-amd64-kde.log +df99de35a470f802a7d5ae802eb653054f531d468d88ea49ea7351f2d333cf4616c727f6be2cbeb2e601b66a028ad3b8300bc639415ad4e5d69ad3b94b212346 debian-live-10.10.0-amd64-kde.packages +efa506e4489646e558156eb1e9c89e37fa75eece651e786b7cbaae3c0c7d02ff9f19ba2a45feef48820a16a4f5fa4d8ae3d0357b0d1dd8a704a491d899ed4a3e debian-live-10.10.0-amd64-lxde.contents +b4a9e55e55d32428bf0ec7f81ab36795f94367fddb70363eeb174b45e44fbe77745b739a1c8118682efff234f98c1ee7e22288ff289fc0ebbcbe6a3a6c00be28 debian-live-10.10.0-amd64-lxde.iso +8dbc6ecc288db5449e7a9d356cbd97835cf0cd227ce4b676e7c3b23ffd6b32edf6c6acfaeede0892d113062f23d20fbc3c8de0efe361b12c80fe8cbf2cda7acd debian-live-10.10.0-amd64-lxde.log +e7d74e91348ba8a5e8fa5c78b4c0b07224110175af1fb3b2ecccdd4ae0d59f09bf56f1bb266c78398b79bd05f53749774396567e4b7f3d6608abed1eb1a039d3 debian-live-10.10.0-amd64-lxde.packages +efa506e4489646e558156eb1e9c89e37fa75eece651e786b7cbaae3c0c7d02ff9f19ba2a45feef48820a16a4f5fa4d8ae3d0357b0d1dd8a704a491d899ed4a3e debian-live-10.10.0-amd64-lxqt.contents +2673939a529b85322321c5ac81a169d67e1ce8a216881f4873e4c10263bb70f805373f7ae36930c2039fff6eb3d874f1a6a97ebdd90544902d66bfaa654e7329 debian-live-10.10.0-amd64-lxqt.iso +340913301da8be3e2332401a10073832504a5a55d5bd786f00644b254ae13a9bb74e975b4063388aa85ac256f341c0b13890f7fc8bfbcd44b3828d30e289669f debian-live-10.10.0-amd64-lxqt.log +f24111472bbf84bbda5b4e0aa798d52d25d9bce58cbe2b03ac8691f63c71b55c463efe8c8f6caee959f113906ac64bc89db7def4e418da87e8372daffaeb262f debian-live-10.10.0-amd64-lxqt.packages +270bc6d00af345d12a1b69fdcbeff3dbda2f11c4e46dbbef0b425a8b9487c3203fcd164f59b98bd3faa690642463beda72d7cbb23d47299ac3f61d23cbebdfef debian-live-10.10.0-amd64-mate.contents +2216654c795d7f0fed75a43ca420e7bec4370b27572f3e87470bf850b90a1e4a7bde30cdd9aaf9fba681a9c3458322d777d5c6a03a464d8a282e68b772533b42 debian-live-10.10.0-amd64-mate.iso +f0ae601c69b8aae046f59d652deb96bd91bb5fb38d0710c1bf0e75249135832297e7155f4c3aad0afd93a1193480a0ab62b5bf2250c5c296df6fb046ba223714 debian-live-10.10.0-amd64-mate.log +a1c9e4cc2cfdf8417594fd7c334642d7dd01ea102c4bb99b7feeab8aecb86436943562b834d3e3266e01ec12a192aa26bf7048a340b774469e4580941c8b507c debian-live-10.10.0-amd64-mate.packages +2cd7bd744635c918064a413aff468423de431a8c083cba4fef6509e8feb9236fb63f0f5a897c65a5060e46d4002f3896c17f1289b9f20b902359765f97648b6a debian-live-10.10.0-amd64-standard.contents +860ef69250e3e7f96c58defdb0273ba7bb4e1dc2265e263104650284eb39a7f44c8884339221707965dff628b59e26d0469fd71f3525a34129ee916a2d4b1af8 debian-live-10.10.0-amd64-standard.iso +7cc5d1e943152d9c8ea9448ba4b0e5b915348bd4aef2b9b13bbb318574e84168ce4af34f25b9ef85d9b4855228654e3bd95e14bb803fa4a7d11236bb7b494427 debian-live-10.10.0-amd64-standard.log +344928f3a8fc0ad48ab7d56a140137f97e177bf1d87c2923a05a703d3403a793b571d1a4ee98d6057e10457c2c52579818bf6127917d3971c4d325038f17c481 debian-live-10.10.0-amd64-standard.packages +819461f7d6362b3c19a422bb1721d9fcef767f16d5d366403d7f40b7e8b5e8bab293299f0b9d29c7b67aeb7e244c7a3020dd1792f237379b6927669c2cd3782a debian-live-10.10.0-amd64-xfce.contents +1e134422f1a8397efe02fe3608ce0c3a1bc63ca0b3924621c97900d4a380af6dceed61c0079519c0376d31f88921200c8134d2ec8b57e8e821cad8966a3212b8 debian-live-10.10.0-amd64-xfce.iso +740a341c0b173ff9644363b0089a60531ec6cb369aa1ca328ad9c58d06ce02df592441ae7e7ba67efb3f863a3bd912b0c3e3f0c5ba5f421b9d88bc5b224aa8b5 debian-live-10.10.0-amd64-xfce.log +12ffd020c077e948c8344a201cee41897a29e9860787713d2d1a4eddb309ad011556eb6193fc0d6ec726495ef090949e6de70e883f36b9c874dff7921198ecb8 debian-live-10.10.0-amd64-xfce.packages +2c8b98709ea3c823cdf32af79e224b51f826bc2fece0fbd08a8513114905efe13ccab8114228f37bdba5a32abf85d08d63ed5686ca505cdfd1128a3eb2742f83 debian-live-10.10.0-i386-cinnamon.contents +5b319d91bfbfd85bb90a6319b2930a153da0653456ac33d5a7e97b4fc2e7a9147d0cb0259dbaa182118df2756a4bd5fc80f624f0d193db1e5c2faa2f632df1e2 debian-live-10.10.0-i386-cinnamon.iso +c86e145b102bb703aaaeb1bdc60b6ac89957137c1df42c0ae4149274860b659710bf32be88c1d129f7740d8e5bedecbd1b01c121cbd3db284ac9688273253d3d debian-live-10.10.0-i386-cinnamon.log +5f726aa1db3328234128a6aaeb1fe7c5089233a3bd4a06a0bd4c9c28905a30aadd263fd7faffd717a40bac63c008df0035f374d61ade7239f30800e96e9345a8 debian-live-10.10.0-i386-cinnamon.packages +2c8b98709ea3c823cdf32af79e224b51f826bc2fece0fbd08a8513114905efe13ccab8114228f37bdba5a32abf85d08d63ed5686ca505cdfd1128a3eb2742f83 debian-live-10.10.0-i386-gnome.contents +3d2f496d6d9f4c0f5469779b1562fe7f72af49a489cc042dd3f90509e072f2bf394309ec818c6619445da8163d2f361a058244994cef1a36b831d6aa859f47ee debian-live-10.10.0-i386-gnome.iso +e55d3fb773c22106f3ba55e01db66c937be544726ec463a999068f16232fe52c188a99dbade7fe3d3c381f938b21015e0926925677cfb1a12d12388c62d9b6e9 debian-live-10.10.0-i386-gnome.log +f7627ab3dc78a450da368ce3479d3cb6f13b3da726c08e0c4325d6695b13eed32c7d9df7af1230cf27081cbaac5288c9f617a47924122932dcdb1839ee4da166 debian-live-10.10.0-i386-gnome.packages +c37887308032e78ab9a7e87c070b827964c9d60f9b0866ac9b7309815e57685234dff56a2d51acbf41c606509be57b33b9a3a2eeebf0bf639d00d336624965e6 debian-live-10.10.0-i386-kde.contents +b0a0dc98892caac6308eb48de1c34f485f886e2254b8286810985a4ac44902ab26e8854f3c1c165bc82c9122bb5ee7dc4dc5a0e74c16edd36f55557a6a7fcabc debian-live-10.10.0-i386-kde.iso +1dd09b1e8fdcd83172d0e84246dd2939cfac2ee9e5382c087a40084e516142eb5ee5c7e60d1ae161fa44883fcf01d93dcefab562921519738eb40611507b41a5 debian-live-10.10.0-i386-kde.log +67f0956404134dd37729d6d0fdab521165eb2f6005aa80319350057c8e87a14c3d8594d523813429e8acfbe38802b86feaaf0c4d7550a5a9abb9e4e6ba87cbb1 debian-live-10.10.0-i386-kde.packages +4864a98487fc180739d8fd31c81fcd5c4e4d64cb9da230569936236596380bdd99bce6ff171b89855f9de35c2386171f9dc74bc0edb26de00bb250bc04d082dc debian-live-10.10.0-i386-lxde.contents +20e109f63dad53525fcf85a4c1df8bd722bb90431857057749f000fb621275436c167acd87089d70d2fd9a4575a824fa83082be27d96033c7edd6cff43c695b4 debian-live-10.10.0-i386-lxde.iso +41346466d79c10de62b85ab9b29d3f7d7cd58c62a2903ef9d28252ad56ca5289907caf541d47685c274f00d1f4855acf145468a20986fe961a6a1a1a3f0559b5 debian-live-10.10.0-i386-lxde.log +ab4ef075627e9459452fa1f53b0aec0280d2ae08d688835e0ed11e00169f96f4bdd78947b5753e755be0aeafc985501d6714c6de6764dac2b00672ac2c500d5b debian-live-10.10.0-i386-lxde.packages +4864a98487fc180739d8fd31c81fcd5c4e4d64cb9da230569936236596380bdd99bce6ff171b89855f9de35c2386171f9dc74bc0edb26de00bb250bc04d082dc debian-live-10.10.0-i386-lxqt.contents +ad2c8a2d69334735b191b051d412245eac2be883937659742e1305ab00b0741ac9480ab990dcba4300d948277b75a6667888cb840654b4fb61a488c1660e7d93 debian-live-10.10.0-i386-lxqt.iso +357d979e2af1ae902324911543235a517173e1bb8b77bf92e1ac072a17e26379f7b6932d2ac76537e0ddcfcf0b2bfcee93f7ce06f7fada4ed59c8f3da027b29c debian-live-10.10.0-i386-lxqt.log +9da981d3a12810ef96215eef5edf4fc3f089d6fe8f27f7f4434a4fbb92a2e0b5dad5e867ed8a940c6b8b9a82781c3a0effaa3007757e69906f552c907163d89e debian-live-10.10.0-i386-lxqt.packages +9ba7b46460592c8a2a7d28c8e6508fb47a6df7de9c6211da01d8e0f1594cee2713401cff8644d163d1dbd0b548b793963f05f450d5765a76778e40547c1e32f9 debian-live-10.10.0-i386-mate.contents +4af08a762e0f3afebd9e03399a91b1744965515bb00792c8e0d0db1c6985e068b6b1d6395d2d6916893aae12145f3bf4a2535cd25d17ccf8e342a52776a4a96f debian-live-10.10.0-i386-mate.iso +828a24bab77e4558207882180f107c48202d9329d26ca256671542c1e72ef27d0f4d1e82ec84ffd8ac4cbd973d8a608367a28503e0cc3034f5ac077e2ed9e428 debian-live-10.10.0-i386-mate.log +2720124dcb80094805e120d7947617f5835955327f4efc17755a5d6125b5168c3ac864dbd1eae7a6eb0f4a7afc2c6122a7a5f962d02b145e52555263796a1b07 debian-live-10.10.0-i386-mate.packages +808a32b2d905c47acabbd47c45f5737543f2c8096d0ce9dec184d91bf66922912f716febd82dc1ecbc11e94b4a146aaee86ccb1845195902d63768b561343c27 debian-live-10.10.0-i386-standard.contents +503133dfddcf4bcc83d957e2c5ca9a806c911ccd4b18281ea3b01d3451ea7e149410156c1ff83de39fdf105a9821a4105352bb46bb132f5505de477ef9e7cd0d debian-live-10.10.0-i386-standard.iso +d198fa235780b727b5fc6dc2946d1d63dee633075b26c7e50fb10d202fe86346a4f97bba7b2020efe7597d7cdf57ca1c36488eb51c1e1a070c58d1adc275ebd6 debian-live-10.10.0-i386-standard.log +1678f2b15c4304f7523465073aaca171a78996146d52072d0dd939681f44b75b9b544f74ceeeb7265f07620a6a4e741817fe409b2c34ec726555844796de44ee debian-live-10.10.0-i386-standard.packages +7b4647032dd4969c6ab0e46536c0f7faf5f80a9624ce65e569f25727fb31ace28bdb3ae51dc361033e63750f050371c5c57d92a2ba1fcfd321a8315fb220d355 debian-live-10.10.0-i386-xfce.contents +35889dda13cdf3304afaf35c1d20c3e4ec77f5f63626a1118c0419a828c84d40572997ca9dd00820accaff927ab48482d6d33b23be5b679b108ec7c001885d65 debian-live-10.10.0-i386-xfce.iso +900c82bf2c9e394f105fc8826237913145870c8cd2e5b40defc359fc941c15a9605189a7c858aab43d24958d076ab536437ce0df4436824753c71f09a233b3f8 debian-live-10.10.0-i386-xfce.log +029a9f06abefeca693f8ed11de447123e7aa3f763976805221ad230ee875156afb9526b0fe56ee828702a1fa4242f3398f53d8dd349751cb80618df0bbc11e67 debian-live-10.10.0-i386-xfce.packages diff --git a/distro/debian/isoinfo.common b/distro/debian/isoinfo.common index 240dca8..99fded9 100644 --- a/distro/debian/isoinfo.common +++ b/distro/debian/isoinfo.common @@ -1,7 +1,7 @@ -_isover=10.4.0 +_isover=10.10.0 -ISONAME="$DISTRONAME $_isover amd64 ${_desktop}" -ISOURL="${_isover}-live/amd64/iso-hybrid/debian-live-${_isover}-amd64-${_desktop,,}.iso" +ISONAME="$DISTRONAME ${_isover} ${_arch} ${_desktop}" +ISOURL="${_isover}-live/${_arch}/iso-hybrid/debian-live-${_isover}-${_arch}-${_desktop,,}.iso" HASHTOOL=sha512sum HASHFILE=distro/debian/SHA512SUMS VERIFY=hashfile diff --git a/distro/fedora/29/install.sh b/distro/fedora/29/install.sh deleted file mode 100644 index 9d7ac8b..0000000 --- a/distro/fedora/29/install.sh +++ /dev/null @@ -1,2 +0,0 @@ -version=29 -source distro/fedora/install.sh diff --git a/distro/fedora/29/isoinfo b/distro/fedora/29/isoinfo deleted file mode 100644 index 230a362..0000000 --- a/distro/fedora/29/isoinfo +++ /dev/null @@ -1,8 +0,0 @@ -ISONAME="$DISTRONAME 29 Workstation" -ISOURL=releases/29/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-29-1.2.iso -SHA256=653cc283749100e9b46625d23938ff890ae29482bef142f5a0f99c5a5ddc03e9 - -mirrorlist=( -https://mirrors.tuna.tsinghua.edu.cn/fedora -http://mirrors.ustc.edu.cn/fedora/linux -) diff --git a/distro/fedora/30/entry b/distro/fedora/30/entry deleted file mode 100644 index ee0c632..0000000 --- a/distro/fedora/30/entry +++ /dev/null @@ -1,2 +0,0 @@ -version=30 -source distro/fedora/entry.common diff --git a/distro/fedora/30/isoinfo b/distro/fedora/30/isoinfo deleted file mode 100644 index 38052f2..0000000 --- a/distro/fedora/30/isoinfo +++ /dev/null @@ -1,8 +0,0 @@ -ISONAME="$DISTRONAME 30 Workstation" -ISOURL=releases/30/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-30-1.2.iso -SHA256=a4e2c49368860887f1cc1166b0613232d4d5de6b46f29c9756bc7cfd5e13f39f - -mirrorlist=( -https://mirrors.tuna.tsinghua.edu.cn/fedora -http://mirrors.ustc.edu.cn/fedora/linux -) diff --git a/distro/fedora/31/entry b/distro/fedora/31/entry deleted file mode 100644 index 21743bf..0000000 --- a/distro/fedora/31/entry +++ /dev/null @@ -1,2 +0,0 @@ -version=31 -source distro/fedora/entry.common diff --git a/distro/fedora/31/install.sh b/distro/fedora/31/install.sh deleted file mode 100644 index 220ce4a..0000000 --- a/distro/fedora/31/install.sh +++ /dev/null @@ -1,2 +0,0 @@ -version=31 -source distro/fedora/install.sh diff --git a/distro/fedora/31/isoinfo b/distro/fedora/31/isoinfo deleted file mode 100644 index cc62989..0000000 --- a/distro/fedora/31/isoinfo +++ /dev/null @@ -1,8 +0,0 @@ -ISONAME="$DISTRONAME 31 Workstation" -ISOURL=releases/31/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-31-1.9.iso -SHA256=1d73ce30bfb96274c53b09013ea23320f0f64a1b0c663217110a5baf0b2c6528 - -mirrorlist=( -https://mirrors.tuna.tsinghua.edu.cn/fedora -http://mirrors.ustc.edu.cn/fedora/linux -) diff --git a/distro/fedora/32/entry b/distro/fedora/32/entry deleted file mode 100644 index a894f89..0000000 --- a/distro/fedora/32/entry +++ /dev/null @@ -1,2 +0,0 @@ -version=32 -source distro/fedora/entry.common diff --git a/distro/fedora/32/install.sh b/distro/fedora/32/install.sh deleted file mode 100644 index 823da66..0000000 --- a/distro/fedora/32/install.sh +++ /dev/null @@ -1,2 +0,0 @@ -version=32 -source distro/fedora/install.sh diff --git a/distro/fedora/32/isoinfo b/distro/fedora/32/isoinfo deleted file mode 100644 index f03e4bb..0000000 --- a/distro/fedora/32/isoinfo +++ /dev/null @@ -1,8 +0,0 @@ -ISONAME="$DISTRONAME 32 Workstation" -ISOURL=releases/32/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-32-1.6.iso -SHA256=4d0f6653e2e0860c99ffe0ef274a46d875fb85bd2a40cb896dce1ed013566924 - -mirrorlist=( -https://mirrors.tuna.tsinghua.edu.cn/fedora -http://mirrors.ustc.edu.cn/fedora/linux -) diff --git a/distro/fedora/29/entry b/distro/fedora/36/entry index 0837ba5..2bafd81 100644 --- a/distro/fedora/29/entry +++ b/distro/fedora/36/entry @@ -1,2 +1,2 @@ -version=29 +version=36 source distro/fedora/entry.common diff --git a/distro/fedora/30/install.sh b/distro/fedora/36/install.sh index 02157f5..76f025c 100644 --- a/distro/fedora/30/install.sh +++ b/distro/fedora/36/install.sh @@ -1,2 +1,2 @@ -version=30 +version=36 source distro/fedora/install.sh diff --git a/distro/fedora/36/isoinfo b/distro/fedora/36/isoinfo new file mode 100644 index 0000000..d7b9190 --- /dev/null +++ b/distro/fedora/36/isoinfo @@ -0,0 +1,8 @@ +ISONAME="$DISTRONAME 36 Workstation" +ISOURL=releases/36/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-36-1.5.iso +SHA256=80169891cb10c679cdc31dc035dab9aae3e874395adc5229f0fe5cfcc111cc8c + +mirrorlist=( +https://mirrors.tuna.tsinghua.edu.cn/fedora +http://mirrors.ustc.edu.cn/fedora/linux +) diff --git a/distro/gloriousarch/distroinfo b/distro/gloriousarch/distroinfo deleted file mode 100644 index 8fd601c..0000000 --- a/distro/gloriousarch/distroinfo +++ /dev/null @@ -1,2 +0,0 @@ -DISTRONAME='Glorious Arch' -KEYWORD='gloriousarch' diff --git a/distro/gloriousarch/mate/entry1 b/distro/gloriousarch/mate/entry1 deleted file mode 100644 index d9bfd03..0000000 --- a/distro/gloriousarch/mate/entry1 +++ /dev/null @@ -1,7 +0,0 @@ -TITLE='Glorious Arch x86_64 (MATE)' -_name=garch/mate -KERNEL="/liveusb-kernel/$_name/x86_64/vmlinuz" -INITRD=("/liveusb-kernel/$_name/intel_ucode.img" - "/liveusb-kernel/$_name/x86_64/archiso.img") -OPTION="archisodevice=/dev/disk/by-uuid/$UUID archisobasedir=liveusb-data/$_name iomem=relaxed" -X64=y diff --git a/distro/gloriousarch/mate/install.sh b/distro/gloriousarch/mate/install.sh deleted file mode 100644 index 0c0e642..0000000 --- a/distro/gloriousarch/mate/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -_name=garch/mate -install_live() { - mount_iso - install -d "$DATADIR/$_name" - install -d "$KERNELDIR/$_name" - cp -r "$ISOMNT/arch/x86_64" "$DATADIR/$_name/" - cp -r "$ISOMNT/arch/boot/x86_64" "$KERNELDIR/$_name/" - cp "$ISOMNT/arch/boot/intel_ucode.img" "$KERNELDIR/$_name/" - umount_iso -} - diff --git a/distro/gloriousarch/mate/isoinfo b/distro/gloriousarch/mate/isoinfo deleted file mode 100644 index 605d6a4..0000000 --- a/distro/gloriousarch/mate/isoinfo +++ /dev/null @@ -1,9 +0,0 @@ -_isodate=2018-01-25 -_desktop=mate -ISONAME="$DISTRONAME $_desktop $_isodate" -ISOURL=garch-$_desktop-$_isodate.iso -SHA256=c57fcddb431f6f6b490256603596f4ce57057d4932c4b3c194abe8969f1e3289 - -mirrorlist=( -https://sourceforge.net/projects/garchiso/files -) diff --git a/distro/gloriousarch/nox/entry1 b/distro/gloriousarch/nox/entry1 deleted file mode 100644 index 07dcc75..0000000 --- a/distro/gloriousarch/nox/entry1 +++ /dev/null @@ -1,7 +0,0 @@ -TITLE='Glorious Arch x86_64' -_name=garch/nox -KERNEL="/liveusb-kernel/$_name/x86_64/vmlinuz" -INITRD=("/liveusb-kernel/$_name/intel_ucode.img" - "/liveusb-kernel/$_name/x86_64/archiso.img") -OPTION="archisodevice=/dev/disk/by-uuid/$UUID archisobasedir=liveusb-data/$_name iomem=relaxed" -X64=y diff --git a/distro/gloriousarch/nox/install.sh b/distro/gloriousarch/nox/install.sh deleted file mode 100644 index 6992842..0000000 --- a/distro/gloriousarch/nox/install.sh +++ /dev/null @@ -1,11 +0,0 @@ -_name=garch/nox -install_live() { - mount_iso - install -d "$DATADIR/$_name" - install -d "$KERNELDIR/$_name" - cp -r "$ISOMNT/arch/x86_64" "$DATADIR/$_name/" - cp -r "$ISOMNT/arch/boot/x86_64" "$KERNELDIR/$_name/" - cp "$ISOMNT/arch/boot/intel_ucode.img" "$KERNELDIR/$_name/" - umount_iso -} - diff --git a/distro/gloriousarch/nox/isoinfo b/distro/gloriousarch/nox/isoinfo deleted file mode 100644 index 5eee2ff..0000000 --- a/distro/gloriousarch/nox/isoinfo +++ /dev/null @@ -1,9 +0,0 @@ -_isodate=2018-01-25 -_desktop=nox -ISONAME="$DISTRONAME $_desktop $_isodate" -ISOURL=garch-$_desktop-$_isodate.iso -SHA256=d1f98302572e69866d1acd98784db749117bdb66700199a69bc9dcc4bc110cfa - -mirrorlist=( -https://sourceforge.net/projects/garchiso/files -) diff --git a/distro/gloriousarch/xfce/entry1 b/distro/gloriousarch/xfce/entry1 deleted file mode 100644 index 603a46c..0000000 --- a/distro/gloriousarch/xfce/entry1 +++ /dev/null @@ -1,3 +0,0 @@ -. distro/arch/entry1 -TITLE='Glorious Arch x86_64 (Xfce)' -OPTION="$OPTION iomem=relaxed" diff --git a/distro/gloriousarch/xfce/install.sh b/distro/gloriousarch/xfce/install.sh deleted file mode 100644 index cf57eb6..0000000 --- a/distro/gloriousarch/xfce/install.sh +++ /dev/null @@ -1 +0,0 @@ -. distro/arch/install.sh diff --git a/distro/gloriousarch/xfce/isoinfo b/distro/gloriousarch/xfce/isoinfo deleted file mode 100644 index 6b18e93..0000000 --- a/distro/gloriousarch/xfce/isoinfo +++ /dev/null @@ -1,9 +0,0 @@ -_isodate=2019-03-02 -_desktop=xfce -ISONAME="$DISTRONAME $_desktop $_isodate" -ISOURL=garch-$_desktop-$_isodate.iso -SHA256=1e004729ff964f4d45e86a6a91639e42040fee0cbf8533a99cb4233386257343 - -mirrorlist=( -https://sourceforge.net/projects/garchiso/files -) diff --git a/distro/grml/64/entry b/distro/grml/64/entry index 6da9264..63c6345 100644 --- a/distro/grml/64/entry +++ b/distro/grml/64/entry @@ -1,4 +1,4 @@ -ver=2020.06 +ver=2022.11 TITLE="Grml $ver 64-bit full" KERNEL=/liveusb-kernel/grml/64/vmlinuz INITRD=/liveusb-kernel/grml/64/initrd.img diff --git a/distro/grml/64/isoinfo b/distro/grml/64/isoinfo index e7c0665..10eb917 100644 --- a/distro/grml/64/isoinfo +++ b/distro/grml/64/isoinfo @@ -1,7 +1,7 @@ -ver=2020.06 +ver=2022.11 ISONAME="Grml $ver 64-bit full" ISOURL="grml64-full_$ver.iso" -SHA256=a6d8f82f020e33e13ddf71978234a4168506b1dd89c91ce4ebc13ef86025039f +SHA256=8b8e4a548a7dcdcd8f3e93098e740c012b5427cf5f4bc5730ef428a6feddd877 mirrorlist=( http://download.grml.org diff --git a/distro/mint/cinnamon/config b/distro/mint/cinnamon/config new file mode 100644 index 0000000..7173c31 --- /dev/null +++ b/distro/mint/cinnamon/config @@ -0,0 +1,3 @@ +_arch=x86_64 +_ver=21.1 +_de=Cinnamon diff --git a/distro/mint/cinnamon/entry b/distro/mint/cinnamon/entry index fc51998..9ad0df1 100644 --- a/distro/mint/cinnamon/entry +++ b/distro/mint/cinnamon/entry @@ -1,4 +1,2 @@ -_arch=x86_64 -_ver=20 -_de=Cinnamon +source distro/mint/cinnamon/config source distro/mint/entry.common diff --git a/distro/mint/cinnamon/install.sh b/distro/mint/cinnamon/install.sh index 25e3293..41b41ec 100644 --- a/distro/mint/cinnamon/install.sh +++ b/distro/mint/cinnamon/install.sh @@ -1,2 +1,3 @@ -_ver=20/Cinnamon +source distro/mint/cinnamon/config +_ver="${_ver}/${_de}" source distro/mint/install.sh diff --git a/distro/mint/cinnamon/isoinfo b/distro/mint/cinnamon/isoinfo index bde80e6..b74471e 100644 --- a/distro/mint/cinnamon/isoinfo +++ b/distro/mint/cinnamon/isoinfo @@ -1,3 +1,4 @@ +source distro/mint/cinnamon/config source distro/mint/isoinfo.common -ISONAME="$DISTRONAME ${_isover} x86_64 (Cinnamon)" -ISOURL=stable/${_isover}/linuxmint-${_isover}-cinnamon-64bit.iso +ISONAME="$DISTRONAME ${_ver} x86_64 (${_de})" +ISOURL=stable/${_ver}/linuxmint-${_ver}-cinnamon-64bit.iso diff --git a/distro/mint/isoinfo.common b/distro/mint/isoinfo.common index d337744..4c3162d 100644 --- a/distro/mint/isoinfo.common +++ b/distro/mint/isoinfo.common @@ -1,5 +1,3 @@ -_isover=20 - HASHTOOL=sha256sum HASHFILE=distro/mint/sha256sum.txt VERIFY=hashfile diff --git a/distro/mint/mate/config b/distro/mint/mate/config new file mode 100644 index 0000000..8f601df --- /dev/null +++ b/distro/mint/mate/config @@ -0,0 +1,3 @@ +_arch=x86_64 +_ver=21.1 +_de=MATE diff --git a/distro/mint/mate/entry b/distro/mint/mate/entry index 43fd4d6..f99887b 100644 --- a/distro/mint/mate/entry +++ b/distro/mint/mate/entry @@ -1,4 +1,2 @@ -_arch=x86_64 -_ver=20 -_de=MATE +source distro/mint/mate/config source distro/mint/entry.common diff --git a/distro/mint/mate/install.sh b/distro/mint/mate/install.sh index 8be448b..cd85b56 100644 --- a/distro/mint/mate/install.sh +++ b/distro/mint/mate/install.sh @@ -1,2 +1,3 @@ -_ver=20/MATE +source distro/mint/mate/config +_ver="${_ver}/${_de}" source distro/mint/install.sh diff --git a/distro/mint/mate/isoinfo b/distro/mint/mate/isoinfo index 5220815..d7bfb48 100644 --- a/distro/mint/mate/isoinfo +++ b/distro/mint/mate/isoinfo @@ -1,3 +1,4 @@ +source distro/mint/mate/config source distro/mint/isoinfo.common -ISONAME="$DISTRONAME ${_isover} x86_64 (MATE)" -ISOURL=stable/${_isover}/linuxmint-${_isover}-mate-64bit.iso +ISONAME="$DISTRONAME ${_ver} x86_64 (${_de})" +ISOURL=stable/${_ver}/linuxmint-${_ver}-mate-64bit.iso diff --git a/distro/mint/sha256sum.txt b/distro/mint/sha256sum.txt index fc79543..3149122 100644 --- a/distro/mint/sha256sum.txt +++ b/distro/mint/sha256sum.txt @@ -1,3 +1,3 @@ -2f6ae466ec9b7c6255e997b82f162ae88bfe640a8df16d3e2f495b6281120af9 *linuxmint-20-cinnamon-64bit.iso -42fd764b3a3544a36d820f4164bb64aa5a6d982073e6d1afdea4853d3858fc98 *linuxmint-20-mate-64bit.iso -761fb276da9746a068f4c8aa42e8d4981f352db92babe0ef8a08713eeb38246f *linuxmint-20-xfce-64bit.iso +2df322f030d8ff4633360930a92d78829d10e515d2f6975b9bdfd1c0de769aca *linuxmint-21.1-cinnamon-64bit.iso +f7fb9c0500e583c46587402578547ea56125e0a054097f9f464a2500830c8b25 *linuxmint-21.1-mate-64bit.iso +6fea221b5b0272d55de57f3d31498cdf76682f414e60d28131dc428e719efa8b *linuxmint-21.1-xfce-64bit.iso diff --git a/distro/mint/xfce/config b/distro/mint/xfce/config new file mode 100644 index 0000000..68ad3ce --- /dev/null +++ b/distro/mint/xfce/config @@ -0,0 +1,3 @@ +_arch=x86_64 +_ver=21.1 +_de=Xfce diff --git a/distro/mint/xfce/entry b/distro/mint/xfce/entry index 30ba0c9..e896473 100644 --- a/distro/mint/xfce/entry +++ b/distro/mint/xfce/entry @@ -1,4 +1,2 @@ -_arch=x86_64 -_ver=20 -_de=Xfce +source distro/mint/xfce/config source distro/mint/entry.common diff --git a/distro/mint/xfce/install.sh b/distro/mint/xfce/install.sh index d8c22ff..eae0ed6 100644 --- a/distro/mint/xfce/install.sh +++ b/distro/mint/xfce/install.sh @@ -1,2 +1,3 @@ -_ver=20/Xfce +source distro/mint/xfce/config +_ver="${_ver}/${_de}" source distro/mint/install.sh diff --git a/distro/mint/xfce/isoinfo b/distro/mint/xfce/isoinfo index 415c132..4801841 100644 --- a/distro/mint/xfce/isoinfo +++ b/distro/mint/xfce/isoinfo @@ -1,3 +1,4 @@ +source distro/mint/xfce/config source distro/mint/isoinfo.common -ISONAME="$DISTRONAME ${_isover} x86_64 (Xfce)" -ISOURL=stable/${_isover}/linuxmint-${_isover}-xfce-64bit.iso +ISONAME="$DISTRONAME ${_ver} x86_64 (${_de})" +ISOURL=stable/${_ver}/linuxmint-${_ver}-xfce-64bit.iso diff --git a/distro/mx/32/isoinfo b/distro/mx/32/isoinfo index e11bde5..1998306 100644 --- a/distro/mx/32/isoinfo +++ b/distro/mx/32/isoinfo @@ -2,4 +2,4 @@ source distro/mx/isoinfo.common ISONAME="$DISTRONAME Linux $_isover i386" ISOURL="MX-${_isover}_386.iso" -SHA256=78b503114f77d27405feb15e9a2a16ce9e83a745c28d7ec95db98b7e3fbf1d68 +SHA256=187781c59394d086f347b00afe2f75e38e18a1044624998939c8403b40d4975e diff --git a/distro/mx/64/isoinfo b/distro/mx/64/isoinfo index 1c7ed70..96cb492 100644 --- a/distro/mx/64/isoinfo +++ b/distro/mx/64/isoinfo @@ -2,4 +2,4 @@ source distro/mx/isoinfo.common ISONAME="$DISTRONAME Linux $_isover x64" ISOURL="MX-${_isover}_x64.iso" -SHA256=18e880f55d83abb19f042310f46a2738807ed8dd48c86e2ef0a5a083672e9e2d +SHA256=7cf6d7dafe8200e7553f3548121eac077e87f891b5cdb939c0b677b9d7720e4c diff --git a/distro/mx/isoinfo.common b/distro/mx/isoinfo.common index fd69385..c8c05f4 100644 --- a/distro/mx/isoinfo.common +++ b/distro/mx/isoinfo.common @@ -1,4 +1,4 @@ -_isover=19.1 +_isover=19.2 mirrorlist=( https://mirrors.tuna.tsinghua.edu.cn/mxlinux-isos/MX/Final diff --git a/distro/opensuse/meta b/distro/opensuse/meta new file mode 100644 index 0000000..87deffa --- /dev/null +++ b/distro/opensuse/meta @@ -0,0 +1,20 @@ +entry() { + isofn="$(basename "$ISOFILE")" + label="$(get_iso_label "${ISO_FILEPATH}")" + TITLE="$label" + KERNEL=/liveusb-kernel/$KEYWORD/linux + INITRD=/liveusb-kernel/$KEYWORD/initrd + OPTION="root=live:CDLABEL=$label iso-scan/filename=liveusb-data/$KEYWORD/$isofn" + X64=y +} + +install_live() { + mount_iso + install -d "$DATADIR/$KEYWORD" "$KERNELDIR/$KEYWORD" + cp "$ISOMNT/boot/x86_64/loader"/{linux,initrd} \ + "$KERNELDIR/$KEYWORD" + umount_iso + cp "${ISO_FILEPATH}" "$DATADIR/$KEYWORD/" +} + +entries=(entry) diff --git a/distro/ubuntu/16.04/isoinfo b/distro/ubuntu/16.04/isoinfo index 76b7abf..e4e99d0 100644 --- a/distro/ubuntu/16.04/isoinfo +++ b/distro/ubuntu/16.04/isoinfo @@ -1,7 +1,7 @@ -_isover=16.04.6 +_isover=16.04.7 ISONAME="$DISTRONAME ${_isover} amd64" ISOURL="${_isover}/ubuntu-${_isover}-desktop-amd64.iso" -SHA256=e27d13d089a027601099b050fd6080785aae99c1a8eb7848774b8d44f1f679b9 +SHA256=8ba7e2687fb8a2152504475e92e489aace543059fd4ba7ffe10111c42394853b mirrorlist=( https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases diff --git a/distro/ubuntu/18.04/config b/distro/ubuntu/18.04/config index e812e5b..f52075a 100644 --- a/distro/ubuntu/18.04/config +++ b/distro/ubuntu/18.04/config @@ -1,3 +1,3 @@ -_ver=18.04 +_ver=18.04.5 VMLINUZ=vmlinuz INITRD=initrd diff --git a/distro/ubuntu/18.04/isoinfo b/distro/ubuntu/18.04/isoinfo index dd633b5..ff251c9 100644 --- a/distro/ubuntu/18.04/isoinfo +++ b/distro/ubuntu/18.04/isoinfo @@ -1,7 +1,8 @@ -_isover=18.04.3 -ISONAME="$DISTRONAME ${_isover} amd64" -ISOURL="${_isover}/ubuntu-${_isover}-desktop-amd64.iso" -SHA256=add4614b6fe3bb8e7dddcaab0ea97c476fbd4ffe288f2a4912cb06f1a47dcfa0 +source distro/ubuntu/18.04/config + +ISONAME="$DISTRONAME ${_ver} amd64" +ISOURL="${_ver}/ubuntu-${_ver}-desktop-amd64.iso" +SHA256=f295570badb09a606d97ddfc3421d7bf210b4a81c07ba81e9c040eda6ddea6a0 mirrorlist=( https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases diff --git a/distro/ubuntu/20.04/config b/distro/ubuntu/20.04/config new file mode 100644 index 0000000..64846db --- /dev/null +++ b/distro/ubuntu/20.04/config @@ -0,0 +1,3 @@ +_ver=20.04.2.0 +VMLINUZ=vmlinuz +INITRD=initrd diff --git a/distro/ubuntu/20.04/entry b/distro/ubuntu/20.04/entry new file mode 100644 index 0000000..0c74917 --- /dev/null +++ b/distro/ubuntu/20.04/entry @@ -0,0 +1,2 @@ +source distro/ubuntu/20.04/config +source distro/ubuntu/entry diff --git a/distro/ubuntu/20.04/install.sh b/distro/ubuntu/20.04/install.sh new file mode 100644 index 0000000..1128dfb --- /dev/null +++ b/distro/ubuntu/20.04/install.sh @@ -0,0 +1,2 @@ +source distro/ubuntu/20.04/config +source distro/ubuntu/install.sh diff --git a/distro/ubuntu/20.04/isoinfo b/distro/ubuntu/20.04/isoinfo new file mode 100644 index 0000000..e2924a8 --- /dev/null +++ b/distro/ubuntu/20.04/isoinfo @@ -0,0 +1,11 @@ +source distro/ubuntu/20.04/config + +ISONAME="$DISTRONAME ${_ver} amd64" +ISOURL="${_ver}/ubuntu-${_ver}-desktop-amd64.iso" +SHA256=93bdab204067321ff131f560879db46bee3b994bf24836bb78538640f689e58f + +mirrorlist=( +http://releases.ubuntu.com +http://mirrors.ustc.edu.cn/ubuntu-releases +https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases +) diff --git a/distro/ubuntu/22.04/config b/distro/ubuntu/22.04/config new file mode 100644 index 0000000..05d6f4b --- /dev/null +++ b/distro/ubuntu/22.04/config @@ -0,0 +1,3 @@ +_ver=22.04.2 +VMLINUZ=vmlinuz +INITRD=initrd diff --git a/distro/ubuntu/22.04/entry b/distro/ubuntu/22.04/entry new file mode 100644 index 0000000..aaa6cb7 --- /dev/null +++ b/distro/ubuntu/22.04/entry @@ -0,0 +1,2 @@ +source distro/ubuntu/22.04/config +source distro/ubuntu/entry diff --git a/distro/ubuntu/22.04/install.sh b/distro/ubuntu/22.04/install.sh new file mode 100644 index 0000000..88496fc --- /dev/null +++ b/distro/ubuntu/22.04/install.sh @@ -0,0 +1,2 @@ +source distro/ubuntu/22.04/config +source distro/ubuntu/install.sh diff --git a/distro/ubuntu/22.04/isoinfo b/distro/ubuntu/22.04/isoinfo new file mode 100644 index 0000000..5e3f0db --- /dev/null +++ b/distro/ubuntu/22.04/isoinfo @@ -0,0 +1,11 @@ +source distro/ubuntu/22.04/config + +ISONAME="$DISTRONAME ${_ver} amd64" +ISOURL="${_ver}/ubuntu-${_ver}-desktop-amd64.iso" +SHA256=b98dac940a82b110e6265ca78d1320f1f7103861e922aa1a54e4202686e9bbd3 + +mirrorlist=( +http://releases.ubuntu.com +http://mirrors.ustc.edu.cn/ubuntu-releases +https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases +) diff --git a/distro/ubuntu/meta b/distro/ubuntu/meta new file mode 100644 index 0000000..c051049 --- /dev/null +++ b/distro/ubuntu/meta @@ -0,0 +1,36 @@ +entry() { + if test -z "${ubt_kernel}" -o -z "${ubt_initrd}" + then + msg "warn: kernel image or initramfs not found." + msg " the Ubuntu based entry may not work." + fi + isofn="$(basename "$ISOFILE")" + TITLE="$ISONAME" + KERNEL="/liveusb-kernel/${KEYWORD}/${ubt_kernel}" + INITRD="/liveusb-kernel/${KEYWORD}/${ubt_initrd}" + OPTION="file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/liveusb-data/${KEYWORD}/${isofn}" + X64=y +} + +install_live() { + install -d "$KERNELDIR/${KEYWORD}" "$DATADIR/${KEYWORD}" + mount_iso + ubt_kernel=($(find "$ISOMNT/casper/" -maxdepth 1 -name 'vmlinuz*')) + if [ "${#ubt_kernel[@]}" != 1 ]; then + fatalerror "panic: more than one kernel image found." + else + ubt_kernel="$(basename ${ubt_kernel[0]})" + fi + ubt_initrd=($(find "$ISOMNT/casper/" -maxdepth 1 -name 'initrd*')) + if [ "${#ubt_initrd[@]}" != 1 ]; then + fatalerror "panic: more than one initramfs image found." + else + ubt_initrd="$(basename ${ubt_initrd[0]})" + fi + cp "$ISOMNT/casper/${ubt_kernel}" "$ISOMNT/casper/${ubt_initrd}" \ + "$KERNELDIR/${KEYWORD}/" + umount_iso + cp "$ISOFILE" "$DATADIR/${KEYWORD}/" +} + +entries=(entry) diff --git a/functions.sh b/functions.sh index dba6d9d..b967388 100644 --- a/functions.sh +++ b/functions.sh @@ -1,6 +1,26 @@ # Copyright (C) 2016-2018 Iru Cai <mytbk920423@gmail.com> # SPDX-License-Identifier: GPL-3.0-or-later +msg() { + echo -e "$1" >&2 +} + +fatalerror() { + msg "\x1b[1;31m$1\x1b[0m" + exit 1 +} + +as-root() { + echo as-root "$*" + if [ "$UID" == 0 ]; then + "$@" + elif type -p sudo > /dev/null; then + sudo "$@" + elif type -p su > /dev/null; then + su -c "$*" + fi +} + checksum_verify() { local _hashtool _hashsum _cksum if [ -n "$SHA512" ]; then @@ -61,6 +81,45 @@ process_distro() { # ISOMNT="/media/$ISOFILE" } +# output_grub_entry +# output_syslinux_entry +# usage: first source the entry, then call this +# +# variables in entryfile: +# - UUID: the UUID of the partition +# - ISOFILE: the file name of iso +# +# parameters in entry file: +# - TITLE: GRUB menu entry title +# - KERNEL: path to kernel image +# - INITRD: path to initramfs/initrd image +# - OPTION: kernel command line +# - X64: y/n, indicates whether it's 64-bit +# +output_grub_entry() { + cat << EOF +menuentry '$TITLE' { + linux $KERNEL $OPTION + initrd ${INITRD[@]} +} + +EOF +} + +# we also need $LABEL when calling this +output_syslinux_entry() { + _INITRD=$(echo ${INITRD[*]}|sed 's/ /,/g') + + cat << EOF +LABEL $LABEL +MENU LABEL $TITLE +LINUX $KERNEL +INITRD $_INITRD +APPEND $OPTION + +EOF +} + gen_grubcfg() { local entry allentries allentries=("distro/$1/entry"*) @@ -69,13 +128,50 @@ gen_grubcfg() { fi for entry in "${allentries[@]}" do - UUID="$UUID" ISOFILE="$ISOFILE" ./mkgrubcfg.sh "$entry" + unset INITRD # because it can be an array or just a string + + source "$entry" + UUID="$UUID" ISOFILE="$ISOFILE" output_grub_entry done if [ ${#allentries[@]} -gt 1 ]; then echo '}' fi } +meta_gen_grubcfg() { + local entry + source "distro/$1/meta" + if [ ${#entries[@]} -gt 1 ]; then + echo "submenu '$ISONAME' {" + fi + for entry in "${entries[@]}" + do + unset INITRD # because it can be an array or just a string + + "$entry" + UUID="$UUID" ISOFILE="$ISOFILE" output_grub_entry + done + if [ ${#entries[@]} -gt 1 ]; then + echo '}' + fi +} + +meta_gen_syslinux() { + local entry count name + source "distro/$1/meta" + name=$(echo $1|sed 's/\//_/g') + count=0 + for entry in "${entries[@]}" + do + unset INITRD # because it can be an array or just a string + + "$entry" + UUID="$UUID" ISOFILE="$ISOFILE" LABEL="${name}_${count}" \ + output_syslinux_entry + count=$(($count+1)) + done +} + gen_syslinux() { local entry allentries count name allentries=("distro/$1/entry"*) @@ -83,8 +179,11 @@ gen_syslinux() { count=0 for entry in "${allentries[@]}" do - UUID="$UUID" ISOFILE="$ISOFILE" LABEL="$name$count" \ - ./mksyslinux.sh "$entry" + unset INITRD # because it can be an array or just a string + + source "$entry" + UUID="$UUID" ISOFILE="$ISOFILE" LABEL="${name}_${count}" \ + output_syslinux_entry count=$(($count+1)) done } @@ -115,6 +214,69 @@ get_iso_label() { file -b "$1" | cut -d\' -f2 } +# We try to a proper mount tool to mount block devices and iso files, +# if we cannot find it, use the system mount tool. +# Both udisks2 and udevil can mount block devices, but only udevil +# can mount iso files. +detect_block_mount_tool() { + if (udisksctl status | grep DEVICE > /dev/null); then + BLOCKMOUNT=udisks2 + elif (udevil | grep 'udevil version' > /dev/null); then + BLOCKMOUNT=udevil + else + BLOCKMOUNT=system + fi +} + +detect_iso_mount_tool() { + if (udevil | grep 'udevil version' > /dev/null); then + ISOMOUNT=udevil + else + ISOMOUNT=system + fi +} + +udevil_mount() { + udevil mount "$1" +} + +udevil_unmount() { + udevil umount "$1" +} + +udisks2_mount() { + udisksctl mount -b "$1" +} + +udisks2_unmount() { + local mnt_source + mnt_source="$(findmnt -n -o SOURCE "$1")" + udisksctl unmount -b "${mnt_source}" +} + +system_mount() { + local mountpoint + local uid + mountpoint="$(mktemp -d)" + uid="$(id -u)" + # first try uid= option of mount(1) + if ! as-root mount -o "uid=$uid" "$1" "$mountpoint" 2> /dev/null; then + as-root mount "$1" "$mountpoint" + fi +} + +system_unmount() { + as-root umount "$1" +} + +mount_block() { + ${BLOCKMOUNT}_mount "$1" +} + +unmount_block() { + ${BLOCKMOUNT}_unmount "$1" +} + mount_iso() { LOOPDEV=$(/sbin/losetup -n -O NAME -j "${ISO_FILEPATH}") if [[ -n "$LOOPDEV" ]] @@ -123,7 +285,7 @@ mount_iso() { umount_iso fi - udevil mount "${ISO_FILEPATH}" + ${ISOMOUNT}_mount "${ISO_FILEPATH}" LOOPDEV=$(/sbin/losetup -n -O NAME -j "${ISO_FILEPATH}") if [[ -n "$LOOPDEV" ]] then @@ -132,7 +294,21 @@ mount_iso() { } umount_iso() { - udevil umount "$ISOMNT" + ${ISOMOUNT}_unmount "$ISOMNT" +} + +# iso_extract: extract files from iso image to destination path +# usage: iso_extract <isofile> <patterns> <dest> +iso_extract() { + local isofile="$1" + local patterns=() + shift + while [ "$#" -gt 1 ]; do + patterns+=("$1") + shift + done + local dest="$1" + bsdtar -x -f "$isofile" -C "$dest" "${patterns[@]}" } getuuid() { @@ -154,17 +330,6 @@ getdiskbypart() { done } -as-root() { - echo as-root "$*" - if [ "$UID" == 0 ]; then - "$@" - elif type -p sudo > /dev/null; then - sudo "$@" - elif type -p su > /dev/null; then - su -c "$*" - fi -} - syslinux_header() { cat << EOF UI menu.c32 diff --git a/testusb.sh b/testusb.sh new file mode 100755 index 0000000..2cca502 --- /dev/null +++ b/testusb.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Copyright (C) 2021 Iru Cai <mytbk920423@gmail.com> +# SPDX-License-Identifier: GPL-3.0-or-later + +# Test the live USB in QEMU, you need to run this script as root +if [ "$1" == uefi ]; then + bios=(-bios /usr/share/edk2-ovmf/x64/OVMF.fd) + shift +else + bios=() +fi + +qemu-system-x86_64 -enable-kvm -cpu host -m 2G "${bios[@]}" -drive "file=$1,format=raw" |