diff options
-rw-r--r-- | INSTALL.usb | 14 | ||||
-rw-r--r-- | README.md | 64 | ||||
-rw-r--r-- | TODO | 32 | ||||
-rw-r--r-- | data/issue | 25 | ||||
-rw-r--r-- | data/issue.in | 27 | ||||
-rw-r--r-- | data/splash.png | bin | 100743 -> 401199 bytes | |||
-rw-r--r-- | dracut/adduser.sh | 4 | ||||
-rw-r--r-- | dracut/getty-autologin.sh | 11 | ||||
-rw-r--r-- | dracut/getty-serial.sh | 12 | ||||
-rw-r--r-- | dracut/module-setup.sh | 2 | ||||
-rw-r--r-- | dracut/services.sh | 17 | ||||
-rw-r--r-- | extra/balder10.img | bin | 0 -> 1474560 bytes | |||
-rw-r--r-- | extra/grub2.iso | bin | 0 -> 8196096 bytes | |||
-rw-r--r-- | extra/ipxe.iso | bin | 0 -> 686080 bytes | |||
-rw-r--r-- | extra/memtest86+-5.01.iso | bin | 0 -> 1839104 bytes | |||
-rw-r--r-- | extra/mhdd32ver4.6.iso | bin | 0 -> 1533952 bytes | |||
-rw-r--r-- | grub/grub_void.cfg.in | 14 | ||||
-rw-r--r-- | hrmpf.packages | 503 | ||||
-rw-r--r-- | isolinux/isolinux.cfg.in | 49 | ||||
-rwxr-xr-x | mkhrmpf.sh | 16 | ||||
-rw-r--r-- | mklive.sh.in | 33 |
21 files changed, 741 insertions, 82 deletions
diff --git a/INSTALL.usb b/INSTALL.usb new file mode 100644 index 0000000..c0627f9 --- /dev/null +++ b/INSTALL.usb @@ -0,0 +1,14 @@ +# Rough steps to install on USB with a FAT partition, from a booted ISO: + +We assume /dev/sda is the USB stick. + + fdisk /dev/sda + # mark as bootable! + mkfs.vfat -n VOID_LIVE /dev/sda1 + mount /dev/sda1 /mnt + rsync -avP -x /run/initramfs/live/ /mnt/ + mv /mnt/boot/isolinux /mnt/boot/syslinux + mv /mnt/boot/syslinux/isolinux.cfg /mnt/boot/syslinux/syslinux.cfg + syslinux -d boot -i /dev/sda1 + dd if=/usr/share/syslinux/mbr.bin of=/dev/sda conv=notrunc + diff --git a/README.md b/README.md index aa22405..017efd0 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,56 @@ -## The Void Linux image/live/rootfs maker and installer + _ __ + | |_ _ _ _ __ _ __ / _| + | ' \| '_| ' \| '_ \ _| + |_||_|_| |_|_|_| .__/_| + |_| -This repository contains utilities for Void Linux: - - * installer (The Void Linux el-cheapo installer for x86) - * mklive (The Void Linux live image maker for x86) - - * mkimage (The Void Linux image maker for ARM platforms) - * mkrootfs (The Void Linux rootfs maker for ARM platforms) +Welcome to the hrmpf rescue system, built on Void Linux. +This project is based on void-mklive. #### Dependencies - * xbps>=0.45 - * qemu-user-static binaries (for mkrootfs) +* xbps>=0.45 +* GNU bash -#### Usage +#### Features -Type +* Loads of console standard tools, with a focus on: + * system rescue + * maintainance + * diagnosis + * networking + * security + * ad-hoc setups + * tiny bits of entertainment if you have to wait for something - $ make +* Missing software easily installable via XBPS. -and then see the usage output: +* Non-Linux extra images (only via ISOLINUX): + * memtest86+ + * iPXE + * FreeDOS + * MHDD32 hard disk analysis + * Bare GRUB 2 - $ ./mklive.sh -h - $ ./mkrootfs.sh -h - $ ./mkimage.sh -h +* ISO image can be burned on CD or written raw on USB stick. -#### Examples +* Load to RAM option, also bootable as MEMDISK. -Build a native live image with runit and keyboard set to 'fr': +* A plain Bash as default shell without annoying fancy configuration. - # ./mklive.sh -k fr +#### Minimum requirements -Build an i686 (on x86\_64) live image with some additional packages: +* x86-64/EM64T CPU +* 160 MB RAM + +#### Usage - # ./mklive.sh -a i686 -p 'vim rtorrent' +To build your own: -Build an x86\_64 musl live image with packages stored in a local repository: + % make + % ./mkhrmpf.sh + % linux32 ./mkhrmpf.sh - # ./mklive.sh -a x86_64-musl -r /path/to/host/binpkgs +Download pre-built images at +<https://github.com/chneukirchen/hrmpf/releases>. -See the usage output for more information :-) diff --git a/TODO b/TODO new file mode 100644 index 0000000..ce75b71 --- /dev/null +++ b/TODO @@ -0,0 +1,32 @@ +- syslog to tty12 +- forensic mode (don't touch disks) +- hrmpf96 (64+32 image, best in the same squashfs and switch_root into + bindmount) +- artwork! +- install to usb + +fdisk +mkfs.vfat -n VOID_LIVE +mount /dev/sda1 /mnt +rsync -avP -x /run/initramfs/live/ /mnt/ +# or here: fatlabel /dev/sda1 VOID_LIVE +sed -i /SAMPLE/d /etc/mtools.conf +syslinux -d boot -i /dev/sda1 +mkdir /mnt/boot/syslinux +mv /mnt/boot/isolinux /mnt/boot/syslinux +mv /mnt/boot/syslinux/isolinux.cfg /mnt/boot/syslinux/syslinux.cfg +dd if=/usr/lib/syslinux/bios/mbr.bin of=hrmpf.img conv=notrunc + + +Possibly interesting packages found in grml not yet in void: + +bacula? +blktrace? no kernel support +buffer? +centerim? +chkrootkit? +clonezilla? +daemon? daemonize +hwinfo? +ipmitool? +ipsec-tools? diff --git a/data/issue b/data/issue deleted file mode 100644 index 9117c72..0000000 --- a/data/issue +++ /dev/null @@ -1,25 +0,0 @@ -############################################################################### - -Welcome to the Void Linux Live system. Two users are available to log in: - - - root:voidlinux - - anon:voidlinux - -The `anon` user additionally has `sudo(8)` permissions to run any command -without a password. - -To start the installation please type: - - # void-installer - -and follow the on-screen instructions. To install additional software make -sure to configure your network interface and then use: - - - xbps-install(8) to install/update packages - - xbps-query(8) to query for package info - -Thanks for using Void Linux. - - http://www.voidlinux.eu - -############################################################################### diff --git a/data/issue.in b/data/issue.in new file mode 100644 index 0000000..c4afdc2 --- /dev/null +++ b/data/issue.in @@ -0,0 +1,27 @@ + _ __ +| |_ _ _ _ __ _ __ / _| +| ' \\| '_| ' \\| '_ \\ _| +|_||_|_| |_|_|_| .__/_| @@VERSION@@ + |_| + +Welcome to the hrmpf rescue system, built on Void Linux. +There are two accounts: + + - root:voidlinux + - anon:voidlinux + +The `anon` user additionally has `sudo(8)` permissions to run any command +without a password. + +You can also use this disk to install Void: + + # void-installer + +and follow the on-screen instructions. To install additional software make +sure to configure your network interface and then use: + + - xbps-install(8) to install/update packages + - xbps-query(8) to query for package info + - xbps-reconfigure -a to build ZFS modules + +Enjoy! diff --git a/data/splash.png b/data/splash.png index 639d2ef..bcc58b1 100644 --- a/data/splash.png +++ b/data/splash.png Binary files differdiff --git a/dracut/adduser.sh b/dracut/adduser.sh index dbcbd35..e59fca1 100644 --- a/dracut/adduser.sh +++ b/dracut/adduser.sh @@ -4,7 +4,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh -echo void-live > ${NEWROOT}/etc/hostname +echo hrmpf > ${NEWROOT}/etc/hostname AUTOLOGIN=$(getarg live.autologin) USERNAME=$(getarg live.user) @@ -54,3 +54,5 @@ fi if [ -n "$AUTOLOGIN" ]; then sed -i "s,GETTY_ARGS=\"--noclear\",GETTY_ARGS=\"--noclear -a $USERNAME\",g" ${NEWROOT}/etc/sv/agetty-tty1/run fi + +chroot ${NEWROOT} usermod -s /bin/bash root diff --git a/dracut/getty-autologin.sh b/dracut/getty-autologin.sh new file mode 100644 index 0000000..842c768 --- /dev/null +++ b/dracut/getty-autologin.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +USERNAME=$(getarg live.user) +[ -z "$USERNAME" ] && USERNAME=anon + +printf '%s\n' '#!/bin/sh' "exec setsid agetty --noclear --autologin root 38400 tty1 linux" >${NEWROOT}/etc/sv/agetty-tty1/run +printf '%s\n' '#!/bin/sh' "exec setsid agetty --autologin root --login-pause 38400 \${PWD##*-} linux" >${NEWROOT}/etc/sv/agetty-generic/run diff --git a/dracut/getty-serial.sh b/dracut/getty-serial.sh new file mode 100644 index 0000000..0b85af5 --- /dev/null +++ b/dracut/getty-serial.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +CONSOLE=$(getarg console) +case "$CONSOLE" in +*ttyS0*) + ln -s /etc/sv/agetty-ttyS0 ${NEWROOT}/etc/runit/runsvdir/default/ + ;; +esac diff --git a/dracut/module-setup.sh b/dracut/module-setup.sh index df148f5..abdf7f8 100644 --- a/dracut/module-setup.sh +++ b/dracut/module-setup.sh @@ -25,6 +25,8 @@ install() { inst_hook pre-pivot 01 "$moddir/adduser.sh" inst_hook pre-pivot 02 "$moddir/display-manager-autologin.sh" + inst_hook pre-pivot 02 "$moddir/getty-autologin.sh" + inst_hook pre-pivot 02 "$moddir/getty-serial.sh" inst_hook pre-pivot 03 "$moddir/copy-initramfs.sh" inst_hook pre-pivot 04 "$moddir/locale.sh" inst_hook pre-pivot 05 "$moddir/services.sh" diff --git a/dracut/services.sh b/dracut/services.sh index 50461ff..33dda75 100644 --- a/dracut/services.sh +++ b/dracut/services.sh @@ -11,19 +11,6 @@ for f in ${SERVICES}; do ln -sf /etc/sv/$f $NEWROOT/etc/runit/runsvdir/default/ done -dhcpcd=1 -for f in connmand NetworkManager wicd; do - if [ -e $SERVICEDIR/$f ]; then - unset dhcpcd - fi -done - -# Enable all services by default... with some exceptions. -for f in $SERVICEDIR/*; do - _service=${f##*/} - case "${_service}" in - agetty-console|agetty-generic|agetty-serial|agetty-tty[SAU]*|sulogin|dhcpcd-*|iptables|ip6tables|wpa_supplicant|pulseaudio|lvmetad|dmeventd|mdadm) ;; # ignored - dhcpcd) [ -n "$dhcpcd" ] && ln -sf ${f##$NEWROOT} $NEWROOT/etc/runit/runsvdir/default/;; - *) ln -sf ${f##$NEWROOT} $NEWROOT/etc/runit/runsvdir/default/;; - esac +for f in acpid dhcpcd gpm sshd udevd; do + ln -sf /etc/sv/$f $NEWROOT/etc/runit/runsvdir/default/ done diff --git a/extra/balder10.img b/extra/balder10.img new file mode 100644 index 0000000..7f5a5fd --- /dev/null +++ b/extra/balder10.img Binary files differdiff --git a/extra/grub2.iso b/extra/grub2.iso new file mode 100644 index 0000000..7b127cb --- /dev/null +++ b/extra/grub2.iso Binary files differdiff --git a/extra/ipxe.iso b/extra/ipxe.iso new file mode 100644 index 0000000..b7c9910 --- /dev/null +++ b/extra/ipxe.iso Binary files differdiff --git a/extra/memtest86+-5.01.iso b/extra/memtest86+-5.01.iso new file mode 100644 index 0000000..671bf06 --- /dev/null +++ b/extra/memtest86+-5.01.iso Binary files differdiff --git a/extra/mhdd32ver4.6.iso b/extra/mhdd32ver4.6.iso new file mode 100644 index 0000000..c00250e --- /dev/null +++ b/extra/mhdd32ver4.6.iso Binary files differdiff --git a/grub/grub_void.cfg.in b/grub/grub_void.cfg.in index a2cda85..4a199c2 100644 --- a/grub/grub_void.cfg.in +++ b/grub/grub_void.cfg.in @@ -17,8 +17,8 @@ if loadfont "(${voidlive})/boot/grub/fonts/unicode.pf2" ; then insmod gfxterm set gfxmode="auto" - terminal_input console - terminal_output gfxterm + terminal_input console serial + terminal_output gfxterm serial insmod png background_image "(${voidlive})/boot/isolinux/@@SPLASHIMAGE@@" @@ -43,4 +43,14 @@ if [ cpuid -l ]; then locale.LANG=@@LOCALE@@ @@BOOT_CMDLINE@@ rd.live.ram initrd (${voidlive})/boot/initrd } + menuentry "@@BOOT_TITLE@@ @@KERNVER@@ (@@ARCH@@) (Serial)" { + set gfxpayload="keep" + linux (${voidlive})/boot/vmlinuz \ + root=live:CDLABEL=VOID_LIVE ro init=/sbin/init \ + rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 gpt add_efi_memmap \ + vconsole.unicode=1 vconsole.keymap=@@KEYMAP@@ \ + locale.LANG=@@LOCALE@@ @@BOOT_CMDLINE@@ \ + console=tty0 console=ttyS0,115200n8 + initrd (${voidlive})/boot/initrd + } fi diff --git a/hrmpf.packages b/hrmpf.packages new file mode 100644 index 0000000..c5e6865 --- /dev/null +++ b/hrmpf.packages @@ -0,0 +1,503 @@ +# diagnosis +acpi +atop +blktrace +bonnie++ +cpuburn +dmidecode +dstat +extrace +f3 +fatrace +fio +hdapsd +hddtemp +htop +i2c-tools +idle3-tools +ioping +ioprof +iotop +ipmitool +lm_sensors +lshw +lsof +ltrace +mcelog +msr-tools +nethogs +pciutils +powertop +read-edid +smartmontools +strace +stress +sysstat +tiptop +tpm-tools +usbutils + +# networking +aiccu +arpwatch +autossh +bind-utils +bmon +bwm-ng +bridge-utils +ddclient +dhcpcd +ebtables +ethtool +fping +grepcidr +horst +hostapd +ifenslave +iftop +ifstatus +inadyn +inetutils-hostname +inetutils-talk +iodine +ipcalc +iperf +iprange +iproute2 +ipset +iptables +iptraf-ng +iputils +iw +ldns +lft +liboping +libressl-netcat +miniupnpc +miruo +mosh +msmtp +mtr +ndisc6 +net-snmp +net-tools +nfs-utils +nftables +ngrep +nload +nmon +ntp +openbsd-netcat +openssh +pchar +polysh +ppp +pptpclient +procmail +radvd +rfkill +rpcbind +s6-dns +s6-networking +shorewall +shorewall6 +sipcalc +slurm +socat +swaks +tcpdump +tcpflow +tcptrack +tlsdate +tor +traceroute +vde2 +vpnc +wavemon +whois +wireless_tools +wol +wpa_supplicant +wvdial + +# general system tools +aha +alsa-lib +alsa-utils +ascii +at +attr +bc +beep +buffer +busybox +byobu +cdrtools +cmark +colordiff +cpulimit +cpupower +crda +cronie +curl +daemonize +dateutils +db +debootstrap +detox +di +dialog +diffutils +dos2unix +dtach +duff +dvtm +efmd +entr +execline +faketime +fbgrab +fbset +fdupes +file +findutils +firejail +fzy +gawk +gcal +gpm +grep +hostmux +icdiff +inotify-tools +irqbalance +jo +kbd +kbd-data +kexec-tools +less +linux-firmware +logrotate +lr +lrzsz +lxc +mawk +mbuffer +mc +metalog +miller +minised +ministat +mmv +msrc_base +multitail +ncdu +nocache +nq +numactl +odo +opendoas +oue +outils +par +parallel +pax-utils +perl +pflask-git +picocom +pm-utils +pmr +progress +pv +python +quota +ranger +rdfind +reptyr +rlwrap +s6 +sample +schedtool +screen +sispmctl +snooze +socklog-void +sudo +su-exec +tab +the_silver_searcher +time +tmux +tree +ttyrec +util-linux +wgetpaste +which +xe +xjobs +xmlstarlet +xtools + +# filesystems & storage +btrfs-progs +cryptsetup +dmraid +dosfstools +dumpet +e2fsprogs +exfat-utils +ext4magic +fuse +fuse-exfat +fuse-sshfs +gptfdisk +hdparm +hfsprogs +jfsutils +kpartx +lvm2 +mdadm +mergerfs +mhddfs +mtools +nbd +ntfs-3g +nwipe +open-iscsi +partclone +parted +s3cmd +s3fs-fuse +sdparm +sg3_utils +simple-mtpfs +squashfs-tools +sysfsutils +tc-play +tgt +xfsdump +xfsprogs +zerofree + +# bootloader +efibootmgr +efivar +grub +grub-i386-efi +grub-x86_64-efi +gummiboot +lilo +ms-sys +syslinux +vboot-utils + +# archives +bsdtar +bzip2 +cabextract +cksfv +cpio +dpkg +gzip +lbzip2 +lrzip +lzip +lzop +p7zip +par2cmdline +pax +pbzip2 +pigz +pixz +rpmextract +sharutils +tar +unp +unrar +unzip +xz +zip +zstd + +# security +acme-client +apg +ccrypt +dnsmap +ent +ettercap +gnupg +gnupg2 +hashcat +haveged +john +keyutils +kismet +libressl +minisign +nmap +p0f +passwdqc +pwgen +reop +rng-tools +scrypt +testssl.sh +zmap + +# development +autoconf +automake +binutils +bison +cpanminus +cvs +flex +gcc +gdb +gettext +git +git-perl +glibc-devel +libtool +m4 +make +mercurial +patch +pkg-config +rcs +redo +smake +texinfo + +# rescue & forensics +antiword +biew +binwalk +bvi +dcraw +ddrescue +dhex +extundelete +fbpdf +fbv +flashrom +foremost +hashdeep +ht +ired +jhead +mtree +pev +rhash +rkhunter +sleuthkit +ssdeep +testdisk +tweak +vbindiff + +# entertainment +cmus +cmus-flac +cmus-libao +cmus-mpc +crawl +ddate +libao-sndio +mpg123 +nethack +sndio +vitetris +vorbis-tools + +# backup +attic +backupninja +borg +bup +burp-client +burp-server +csync +csync2 +dar +duplicity +mt-st +obnam +rdiff-backup +rdumpfs +rsnapshot +rsync +snapraid +unison +zbackup +zpaq + +# shells +dash +es +ksh +mksh +pdmenu +posh +rc +tcsh +zsh + +# text editors +ed +emacs +ex-vi +jupp +mg +nano +neatvi +nvi +vim + +# clients +edbrowse +elinks +ii +inetutils-ftp +inetutils-telnet +irssi +ldapvi +lftp +links +lynx +mcabber +mpop +mutt +ncftp +rtorrent +s-nail +sic +tin +tnftp +trn +w3m + +# servers +dnsmasq +fastd +inetutils-inetd +nginx +nsd +opensmtpd +openvpn +polipo +privoxy +rsyslog +stunnel +tftp-hpa +tinyproxy +unbound +xinetd +zerotier-one + +# office +ledger +sc +sc-im +when diff --git a/isolinux/isolinux.cfg.in b/isolinux/isolinux.cfg.in index 69de967..671b592 100644 --- a/isolinux/isolinux.cfg.in +++ b/isolinux/isolinux.cfg.in @@ -1,24 +1,21 @@ -UI vesamenu.c32 +SERIAL 0 115200 +UI menu.c32 PROMPT 0 TIMEOUT 100 ONTIMEOUT linux +MENU TITLE Welcome to the hrmpf rescue system, built on Void Linux MENU TABMSG Press ENTER to boot or TAB to edit a menu entry MENU AUTOBOOT BIOS default device boot in # second{,s}... MENU BACKGROUND @@SPLASHIMAGE@@ MENU WIDTH 78 MENU MARGIN 1 -MENU ROWS 4 +MENU ROWS 12 MENU VSHIFT 2 -MENU TIMEOUTROW 8 -MENU TABMSGROW 2 -MENU CMDLINEROW 11 -MENU HELPMSGROW 16 -MENU HELPMSGENDROW 29 -MENU COLOR title * #FF5255FF * -MENU COLOR border * #00000000 #00000000 none -MENU COLOR sel * #ffffffff #FF5255FF * +#MENU COLOR title * #FF5255FF * +#MENU COLOR border * #00000000 #00000000 none +#MENU COLOR sel * #ffffffff #FF5255FF * LABEL linux MENU LABEL @@BOOT_TITLE@@ @@KERNVER@@ @@ARCH@@ @@ -28,6 +25,38 @@ LABEL linuxram MENU LABEL @@BOOT_TITLE@@ @@KERNVER@@ @@ARCH@@ (RAM) KERNEL /boot/vmlinuz APPEND initrd=/boot/initrd root=live:CDLABEL=VOID_LIVE init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=@@KEYMAP@@ locale.LANG=@@LOCALE@@ @@BOOT_CMDLINE@@ rd.live.ram +LABEL linuxtext +MENU LABEL @@BOOT_TITLE@@ @@KERNVER@@ @@ARCH@@ (Text mode/Serial) +KERNEL /boot/vmlinuz +APPEND initrd=/boot/initrd root=live:CDLABEL=VOID_LIVE init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=@@KEYMAP@@ locale.LANG=@@LOCALE@@ @@BOOT_CMDLINE@@ modprobe.blacklist=bochs_drm nomodeset console=tty0 console=ttyS0,115200n8 +LABEL hdt +MENU LABEL HDT (Hardware Detection Tool) +KERNEL hdt.c32 +LABEL memtest86+ +MENU LABEL memtest86+ 5.01 +KERNEL memdisk +INITRD /boot/memtest86+-5.01.iso +APPEND iso +LABEL mhdd32 +MENU LABEL MHDD32 v4.6 Hard Drive Analysis Tool +KERNEL memdisk +INITRD /boot/mhdd32ver4.6.iso +APPEND iso +LABEL ipxe +MENU LABEL iPXE 1.0.0+ +KERNEL memdisk +INITRD /boot/ipxe.iso +APPEND iso +LABEL balder +MENU LABEL Balder10 FreeDOS +KERNEL memdisk +INITRD /boot/balder10.img +APPEND raw +LABEL grub +MENU LABEL Bare GRUB 2 +KERNEL memdisk +APPEND iso +INITRD /boot/grub2.iso LABEL c MENU LABEL Boot first HD found by BIOS COM32 chain.c32 diff --git a/mkhrmpf.sh b/mkhrmpf.sh new file mode 100755 index 0000000..68938e5 --- /dev/null +++ b/mkhrmpf.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +./mklive.sh \ + -T "hrmpf live/rescue system" \ + -C "loglevel=6 printk.time=1 consoleblank=0 net.ifnames=0" \ + -r http://repo.voidlinux.eu/current \ + -r http://repo.voidlinux.eu/current/nonfree \ + -S 1024 \ + -B extra/balder10.img \ + -B extra/mhdd32ver4.6.iso \ + -B extra/ipxe.iso \ + -B extra/memtest86+-5.01.iso \ + -B extra/grub2.iso \ + -p "$(grep '^[^#].' hrmpf.packages)" \ + -A "gawk tnftp inetutils-hostname libressl-netcat dash vim-common" \ + -U "spl zfs" diff --git a/mklive.sh.in b/mklive.sh.in index ed710f9..c387fa7 100644 --- a/mklive.sh.in +++ b/mklive.sh.in @@ -66,6 +66,7 @@ Usage: $PROGNAME [options] Options: -a <xbps-arch> Set XBPS_ARCH (do not use it unless you know what it is) + -A "pkg pkgN" Set xbps-alternatives for packages. -b <system-pkg> Set an alternative base-system package (defaults to base-system). -r <repo-url> Use this XBPS repository (may be specified multiple times). -c <cachedir> Use this XBPS cache directory (/var/cache/xbps if unset). @@ -76,11 +77,13 @@ Options: -S <freesize> Allocate this free size (MB) for the rootfs. -o <file> Output file name for the ISO image (auto if unset). -p "pkg pkgN ..." Install additional packages into the ISO image. + -U "pkg pkgN ..." Install additional unconfigured packages into the ISO image. -I <includedir> Include directory structure under given path into rootfs -C "cmdline args" Add additional kernel command line arguments. -T "title" Modify the bootloader title. -K Do not remove builddir. + -B <file> Add file to /boot The $PROGNAME script generates a live image of the Void Linux distribution. This ISO image can be written to a CD/DVD-ROM or any USB stick. @@ -131,6 +134,17 @@ install_packages() { fi chroot $ROOTFS env -i xbps-reconfigure -a + xbps-query -r $ROOTFS -l >installed.pkgs + for a in $ALTERNATIVES; do + xbps-alternatives -r $ROOTFS -s $a + done + xbps-alternatives -r $ROOTFS -l >installed.alternatives + + if [ "$UNCONF_PACKAGE_LIST" ]; then + XBPS_ARCH=$BASE_ARCH ${XBPS_INSTALL_CMD} -r $ROOTFS \ + $XBPS_REPOSITORY $XBPS_CACHEDIR -y -U ${UNCONF_PACKAGE_LIST} + fi + if [ -x installer.sh ]; then install -Dm755 installer.sh $ROOTFS/usr/sbin/void-installer else @@ -159,6 +173,9 @@ generate_initramfs() { mv $ROOTFS/boot/initrd $BOOT_DIR cp $ROOTFS/boot/vmlinuz-$KERNELVERSION $BOOT_DIR/vmlinuz + if [ "$BOOT_FILES" ]; then + cp $BOOT_FILES $BOOT_DIR + fi } cleanup_rootfs() { @@ -177,9 +194,14 @@ generate_isolinux_boot() { cp -f $SYSLINUX_DATADIR/isolinux.bin "$ISOLINUX_DIR" cp -f $SYSLINUX_DATADIR/ldlinux.c32 "$ISOLINUX_DIR" cp -f $SYSLINUX_DATADIR/libcom32.c32 "$ISOLINUX_DIR" - cp -f $SYSLINUX_DATADIR/vesamenu.c32 "$ISOLINUX_DIR" + cp -f $SYSLINUX_DATADIR/menu.c32 "$ISOLINUX_DIR" + cp -f $SYSLINUX_DATADIR/hdt.c32 "$ISOLINUX_DIR" cp -f $SYSLINUX_DATADIR/libutil.c32 "$ISOLINUX_DIR" + cp -f $SYSLINUX_DATADIR/libmenu.c32 "$ISOLINUX_DIR" + cp -f $SYSLINUX_DATADIR/libgpl.c32 "$ISOLINUX_DIR" cp -f $SYSLINUX_DATADIR/chain.c32 "$ISOLINUX_DIR" + cp -f $SYSLINUX_DATADIR/memdisk "$ISOLINUX_DIR" + cp -f /usr/share/hwdata/pci.ids "$ISOLINUX_DIR" cp -f isolinux/isolinux.cfg.in "$ISOLINUX_DIR"/isolinux.cfg cp -f ${SPLASH_IMAGE} "$ISOLINUX_DIR" @@ -292,10 +314,12 @@ generate_iso_image() { # # main() # -while getopts "a:b:r:c:C:T:Kk:l:i:I:s:S:o:p:h" opt; do +while getopts "a:A:B:b:r:c:C:T:Kk:l:i:I:s:S:o:p:U:h" opt; do case $opt in a) BASE_ARCH="$OPTARG";; + A) ALTERNATIVES="$OPTARG";; b) BASE_SYSTEM_PKG="$OPTARG";; + B) BOOT_FILES="$BOOT_FILES $OPTARG";; r) XBPS_REPOSITORY="--repository=$OPTARG $XBPS_REPOSITORY";; c) XBPS_CACHEDIR="--cachedir=$OPTARG";; K) readonly KEEP_BUILDDIR=1;; @@ -307,6 +331,7 @@ while getopts "a:b:r:c:C:T:Kk:l:i:I:s:S:o:p:h" opt; do S) ROOTFS_FREESIZE="$OPTARG";; o) OUTPUT_FILE="$OPTARG";; p) PACKAGE_LIST="$OPTARG";; + U) UNCONF_PACKAGE_LIST="$OPTARG";; C) BOOT_CMDLINE="$OPTARG";; T) BOOT_TITLE="$OPTARG";; h) usage;; @@ -379,14 +404,14 @@ _linux_series=$(XBPS_ARCH=$BASE_ARCH $XBPS_QUERY_CMD -r $ROOTFS ${XBPS_REPOSITOR _kver=$(XBPS_ARCH=$BASE_ARCH $XBPS_QUERY_CMD -r $ROOTFS ${XBPS_REPOSITORY:=-R} -p pkgver ${_linux_series}) KERNELVERSION=$($XBPS_UHELPER_CMD getpkgversion ${_kver}) -: ${OUTPUT_FILE="void-live-${BASE_ARCH}-${KERNELVERSION}-$(date +%Y%m%d).iso"} +: ${OUTPUT_FILE="hrmpf-${BASE_ARCH}-${KERNELVERSION}-$(date +%Y%m%d).iso"} print_step "Installing software to generate the image: ${REQUIRED_PKGS} ..." install_prereqs mkdir -p "$ROOTFS"/etc [ -s data/motd ] && cp data/motd $ROOTFS/etc -[ -s data/issue ] && cp data/issue $ROOTFS/etc +[ -s data/issue.in ] && sed "s/@@VERSION@@/hrmpf-${BASE_ARCH}-${KERNELVERSION}-$(date +%Y%m%d)/" data/issue.in >$ROOTFS/etc/issue print_step "Installing void pkgs into the rootfs: ${PACKAGE_LIST} ..." install_packages |