├── .gitignore ├── README.md ├── docker └── createrootfs │ ├── README.md │ ├── createrootfs.py │ └── setup.sh └── livecd ├── airootfs ├── etc │ ├── fstab │ ├── hostname │ ├── locale.conf │ ├── machine-id │ ├── systemd │ │ ├── scripts │ │ │ └── choose-mirror │ │ └── system │ │ │ ├── choose-mirror.service │ │ │ ├── etc-pacman.d-gnupg.mount │ │ │ ├── getty@tty1.service.d │ │ │ └── autologin.conf │ │ │ └── pacman-init.service │ └── udev │ │ └── rules.d │ │ └── 81-dhcpcd.rules └── root │ ├── .automated_script.sh │ ├── .zlogin │ └── customize_airootfs.sh ├── build.sh ├── efiboot └── loader │ ├── entries │ ├── archiso-x86_64-cd.conf │ ├── archiso-x86_64-usb.conf │ ├── uefi-shell-v1-x86_64.conf │ └── uefi-shell-v2-x86_64.conf │ └── loader.conf ├── isolinux └── isolinux.cfg ├── mkinitcpio.conf ├── packages ├── pacman.conf └── syslinux ├── archiso.cfg ├── archiso_head.cfg ├── archiso_pxe64.cfg ├── archiso_pxe_inc.cfg ├── archiso_sys64.cfg ├── archiso_sys_inc.cfg ├── archiso_tail.cfg ├── splash.png └── syslinux.cfg /.gitignore: -------------------------------------------------------------------------------- 1 | /livecd/work/ 2 | /livecd/out/ 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | archbuild 2 | ========= 3 | 4 | Arch Linux based build kit. 5 | -------------------------------------------------------------------------------- /docker/createrootfs/README.md: -------------------------------------------------------------------------------- 1 | # ArchLinux rootfs 2 | 3 | 1. Create a rootfs with `createrootfs.py`. 4 | 2. Copy `setup.sh` inside the rootfs. 5 | 3. Chroot the rootfs and run `setup.sh`. 6 | -------------------------------------------------------------------------------- /docker/createrootfs/createrootfs.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # This file is part of Liri. 4 | # 5 | # Copyright (C) 2017 Pier Luigi Fiorini 6 | # 7 | # $BEGIN_LICENSE:GPL3+$ 8 | # 9 | # This program is free software: you can redistribute it and/or modify 10 | # it under the terms of the GNU General Public License as published by 11 | # the Free Software Foundation, either version 3 of the License, or 12 | # (at your option) any later version. 13 | # 14 | # This program is distributed in the hope that it will be useful, 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | # GNU General Public License for more details. 18 | # 19 | # You should have received a copy of the GNU General Public License 20 | # along with this program. If not, see . 21 | # 22 | # $END_LICENSE$ 23 | # 24 | 25 | import sys 26 | import os 27 | import shutil 28 | 29 | ARCH_LINUX_MIRROR = 'https://mirrors.lug.mtu.edu/archlinux' 30 | ARCH_LINUX_ARCH = 'x86_64' 31 | 32 | 33 | class CommandError(Exception): 34 | """ 35 | Exception raised when a command has failed. 36 | """ 37 | pass 38 | 39 | 40 | def download_file(url, dest_path): 41 | """ 42 | Download file from `url` into `dest_path` destination location. 43 | """ 44 | import requests 45 | import shutil 46 | r = requests.get(url, stream=True) 47 | if r.status_code == 200: 48 | with open(dest_path, 'wb') as f: 49 | total = r.headers.get('Content-Length') 50 | print('Downloading %s' % url) 51 | if total is None: 52 | r.raw.decode_content = True 53 | shutil.copyfileobj(r.raw, f) 54 | else: 55 | total = int(total) 56 | written = 0 57 | for data in r.iter_content(chunk_size=4096): 58 | f.write(data) 59 | written += len(data) 60 | done = int(50 * written / total) 61 | sys.stdout.write('\r[{}{}]'.format('=' * done, ' ' * (50 - done))) 62 | sys.stdout.flush() 63 | sys.stdout.write('\n') 64 | return True 65 | return False 66 | 67 | 68 | def find_iso(): 69 | """ 70 | Find an Arch Linux bootstrap ISO published in the last month, download 71 | the tarball and return its filename. 72 | """ 73 | import calendar 74 | import datetime 75 | today = datetime.date.today() 76 | one_month_ago = today - datetime.timedelta(days=calendar.monthrange(today.year, today.month)[1]) 77 | dates = [one_month_ago + datetime.timedelta(days=x) for x in range((today - one_month_ago).days + 1)] 78 | print('Searching for last archive...') 79 | for date in dates: 80 | iso_date = date.strftime('%Y.%m.%d') 81 | archive_filename = 'archlinux-bootstrap-{}-{}.tar.gz'.format(iso_date, ARCH_LINUX_ARCH) 82 | url = '{}/iso/{}/{}'.format(ARCH_LINUX_MIRROR, iso_date, archive_filename) 83 | if download_file(url, archive_filename): 84 | return archive_filename 85 | return None 86 | 87 | 88 | def replace_in_file(filename, search, replace): 89 | """ 90 | Replace `search` with `replace` on file `filename`. 91 | """ 92 | with open(filename, 'r') as f: 93 | filedata = f.read() 94 | filedata = filedata.replace(search, replace) 95 | with open(filename, 'w') as f: 96 | f.write(filedata) 97 | 98 | 99 | def append_to_file(filename, text): 100 | """ 101 | Append `text` to file `filename`. 102 | """ 103 | with open(filename, 'a') as f: 104 | f.write(text) 105 | 106 | 107 | def setup_dev(root_dir): 108 | """ 109 | Create a static /dev directory for containers. 110 | """ 111 | dev_dir = os.path.join(root_dir, 'dev') 112 | devices = { 113 | 'null': {'mode': 666, 'args': 'c 1 3'}, 114 | 'zero': {'mode': 666, 'args': 'c 1 5'}, 115 | 'random': {'mode': 666, 'args': 'c 1 8'}, 116 | 'urandom': {'mode': 666, 'args': 'c 1 9'}, 117 | 'tty': {'mode': 666, 'args': 'c 5 0'}, 118 | 'console': {'mode': 600, 'args': 'c 5 1'}, 119 | 'tty0': {'mode': 666, 'args': 'c 4 0'}, 120 | 'full': {'mode': 666, 'args': 'c 1 7'}, 121 | 'initctl': {'mode': 600, 'args': 'p'}, 122 | 'ptmx': {'mode': 666, 'args': 'c 5 2'}, 123 | } 124 | shutil.rmtree(dev_dir) 125 | os.makedirs(dev_dir) 126 | os.system('mkdir -m 755 {}'.format(os.path.join(dev_dir, 'pts'))) 127 | os.system('mkdir -m 1777 {}'.format(os.path.join(dev_dir, 'shm'))) 128 | os.symlink('/proc/self/fd', os.path.join(dev_dir, 'fd')) 129 | for device in devices: 130 | os.system('mknod -m {mode} {path}/{name} {args}'.format(name=device, path=dev_dir, mode=devices[device]['mode'], args=devices[device]['args'])) 131 | 132 | 133 | def setup_rootfs(archive_filename, nameserver=None, nosignedpackages=False, addliriosrepo=False): 134 | """ 135 | Set OS root up uncompressing the `archive_filename` tar archive. 136 | """ 137 | import tarfile 138 | # Remove previously unpacked tar 139 | root_dir = 'root.' + ARCH_LINUX_ARCH 140 | if os.path.exists(root_dir): 141 | shutil.rmtree(root_dir) 142 | # Extract base archive 143 | print('Extracting {} into {}'.format(archive_filename, root_dir)) 144 | tar = tarfile.open(archive_filename, 'r') 145 | tar.extractall() 146 | tar.close() 147 | pacmanconf_filename = os.path.join(root_dir, 'etc', 'pacman.conf') 148 | mirror_filename = os.path.join(root_dir, 'etc', 'pacman.d', 'mirrorlist') 149 | # Do not require signed packages 150 | if nosignedpackages is True: 151 | replace_in_file(pacmanconf_filename, 'SigLevel = Required DatabaseOptional', 'SigLevel = Never') 152 | # Add Liri OS repository 153 | if addliriosrepo is True: 154 | append_to_file(pacmanconf_filename, '\n[liri-unstable]\nSigLevel = Optional TrustAll\nServer = https://repo.liri.io/archlinux/unstable/$arch\n') 155 | # Add mirror 156 | append_to_file(mirror_filename, 'Server = {}/$repo/os/$arch\n'.format(ARCH_LINUX_MIRROR)) 157 | # Add Google nameserver to resolv.conf 158 | if nameserver is not None: 159 | resolvconf_filename = os.path.join(root_dir, 'etc', 'resolv.conf') 160 | append_to_file(resolvconf_filename, 'nameserver 8.8.8.8') 161 | # Setup /dev 162 | setup_dev(root_dir) 163 | 164 | 165 | if __name__ == '__main__': 166 | import argparse 167 | 168 | parser = argparse.ArgumentParser(description='Create Arch Linux base container') 169 | parser.add_argument('--arch', dest='arch', type=str, 170 | help='architecture (default: %s)' % ARCH_LINUX_ARCH) 171 | parser.add_argument('--mirror', dest='mirror', type=str, 172 | help='alternative Arch Linux mirror (default: %s)' % ARCH_LINUX_MIRROR) 173 | parser.add_argument('--archive', dest='archive', type=str, 174 | help='use this archive instead of downloading a new one') 175 | parser.add_argument('--nameserver', dest='nameserver', type=str, 176 | help='use an alternative nameserver') 177 | parser.add_argument('--siglevel-never', dest='nosignedpackages', action='store_true', 178 | help='do not require packages to be signed') 179 | parser.add_argument('--lirios-repo', dest='addliriosrepo', action='store_true', 180 | help='add the Liri OS repository') 181 | 182 | args = parser.parse_args() 183 | 184 | if args.arch: 185 | ARCH_LINUX_ARCH = args.arch 186 | if args.mirror: 187 | ARCH_LINUX_MIRROR = args.mirror 188 | if args.archive: 189 | archive_filename = args.archive 190 | else: 191 | archive_filename = find_iso() 192 | if archive_filename: 193 | setup_rootfs(archive_filename, nameserver=args.nameserver, 194 | nosignedpackages=args.nosignedpackages, 195 | addliriosrepo=args.addliriosrepo) 196 | else: 197 | print('Unable to find an Arch Linux ISO!', file=sys.stderr) 198 | sys.exit(1) 199 | -------------------------------------------------------------------------------- /docker/createrootfs/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # This file is part of Liri. 4 | # 5 | # Copyright (C) 2017 Pier Luigi Fiorini 6 | # 7 | # $BEGIN_LICENSE:GPL3+$ 8 | # 9 | # This program is free software: you can redistribute it and/or modify 10 | # it under the terms of the GNU General Public License as published by 11 | # the Free Software Foundation, either version 3 of the License, or 12 | # (at your option) any later version. 13 | # 14 | # This program is distributed in the hope that it will be useful, 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | # GNU General Public License for more details. 18 | # 19 | # You should have received a copy of the GNU General Public License 20 | # along with this program. If not, see . 21 | # 22 | # $END_LICENSE$ 23 | # 24 | 25 | set -e 26 | 27 | # Update keys 28 | pacman-key --init 29 | pacman-key --populate archlinux 30 | 31 | # Update packages 32 | pacman -Syu --noconfirm 33 | 34 | # Install sed 35 | pacman -S --noconfirm sed 36 | 37 | # Setup locale 38 | ln -sf /usr/share/zoneinfo/UTC /etc/localtime 39 | echo en_US.UTF-8 UTF-8 >> /etc/locale.gen 40 | #locale-gen 41 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/fstab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liri-archive/archbuild/cab2ecdea6150f0128f1f937ad939d8ef08a90c5/livecd/airootfs/etc/fstab -------------------------------------------------------------------------------- /livecd/airootfs/etc/hostname: -------------------------------------------------------------------------------- 1 | lirios 2 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/locale.conf: -------------------------------------------------------------------------------- 1 | LANG=en_US.UTF-8 2 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/machine-id: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liri-archive/archbuild/cab2ecdea6150f0128f1f937ad939d8ef08a90c5/livecd/airootfs/etc/machine-id -------------------------------------------------------------------------------- /livecd/airootfs/etc/systemd/scripts/choose-mirror: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | get_cmdline() { 4 | local param 5 | for param in $(< /proc/cmdline); do 6 | case "${param}" in 7 | $1=*) echo "${param##*=}"; 8 | return 0 9 | ;; 10 | esac 11 | done 12 | } 13 | 14 | mirror=$(get_cmdline mirror) 15 | [[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv) 16 | [[ $mirror ]] || exit 0 17 | 18 | mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig 19 | cat >/etc/pacman.d/mirrorlist << EOF 20 | # 21 | # Arch Linux repository mirrorlist 22 | # Generated by archiso 23 | # 24 | 25 | Server = ${mirror%%/}/\$repo/os/\$arch 26 | EOF 27 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/systemd/system/choose-mirror.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Choose mirror from the kernel command line 3 | ConditionKernelCommandLine=mirror 4 | 5 | [Service] 6 | Type=oneshot 7 | ExecStart=/etc/systemd/scripts/choose-mirror 8 | 9 | [Install] 10 | WantedBy=multi-user.target 11 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Temporary /etc/pacman.d/gnupg directory 3 | 4 | [Mount] 5 | What=tmpfs 6 | Where=/etc/pacman.d/gnupg 7 | Type=tmpfs 8 | Options=mode=0755 9 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf: -------------------------------------------------------------------------------- 1 | [Service] 2 | ExecStart= 3 | ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux 4 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/systemd/system/pacman-init.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Initializes Pacman keyring 3 | Wants=haveged.service 4 | After=haveged.service 5 | Requires=etc-pacman.d-gnupg.mount 6 | After=etc-pacman.d-gnupg.mount 7 | 8 | [Service] 9 | Type=oneshot 10 | RemainAfterExit=yes 11 | ExecStart=/usr/bin/pacman-key --init 12 | ExecStart=/usr/bin/pacman-key --populate archlinux 13 | 14 | [Install] 15 | WantedBy=multi-user.target 16 | -------------------------------------------------------------------------------- /livecd/airootfs/etc/udev/rules.d/81-dhcpcd.rules: -------------------------------------------------------------------------------- 1 | ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service" 2 | -------------------------------------------------------------------------------- /livecd/airootfs/root/.automated_script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | script_cmdline () 4 | { 5 | local param 6 | for param in $(< /proc/cmdline); do 7 | case "${param}" in 8 | script=*) echo "${param#*=}" ; return 0 ;; 9 | esac 10 | done 11 | } 12 | 13 | automated_script () 14 | { 15 | local script rt 16 | script="$(script_cmdline)" 17 | if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then 18 | if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then 19 | wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null 20 | rt=$? 21 | else 22 | cp "${script}" /tmp/startup_script 23 | rt=$? 24 | fi 25 | if [[ ${rt} -eq 0 ]]; then 26 | chmod +x /tmp/startup_script 27 | /tmp/startup_script 28 | fi 29 | fi 30 | } 31 | 32 | if [[ $(tty) == "/dev/tty1" ]]; then 33 | automated_script 34 | fi 35 | -------------------------------------------------------------------------------- /livecd/airootfs/root/.zlogin: -------------------------------------------------------------------------------- 1 | ~/.automated_script.sh 2 | -------------------------------------------------------------------------------- /livecd/airootfs/root/customize_airootfs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e -u 4 | 5 | sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen 6 | locale-gen 7 | 8 | ln -sf /usr/share/zoneinfo/UTC /etc/localtime 9 | 10 | usermod -s /usr/bin/zsh root 11 | cp -aT /etc/skel/ /root/ 12 | chmod 700 /root 13 | 14 | passwd -d root 15 | 16 | if ! getent passwd liveuser ; then 17 | useradd -c 'Live User' -m -G wheel -U liveuser 18 | fi 19 | passwd -d liveuser 20 | 21 | if [[ -d /etc/sudoers.d ]]; then 22 | echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/00-livemedia 23 | fi 24 | 25 | sed -i 's/#\(PermitRootLogin \).\+/\1yes/' /etc/ssh/sshd_config 26 | sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist 27 | sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf 28 | 29 | sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf 30 | sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf 31 | sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf 32 | 33 | sed -i 's/hosts: files dns myhostname/hosts: files mdns_minimal [NOTFOUND=return] dns myhostname/' /etc/nsswitch.conf 34 | 35 | systemctl enable pacman-init.service choose-mirror.service 36 | systemctl enable acpid.service avahi-daemon.service accounts-daemon.service upower.service NetworkManager.service sddm.service thermald.service 37 | systemctl disable systemd-networkd.service systemd-resolved.service 38 | systemctl set-default graphical.target 39 | 40 | plymouth-set-default-theme lirios 41 | 42 | rm -f /etc/sddm.conf 43 | mkdir -p /usr/lib/sddm/sddm.conf.d 44 | cat > /usr/lib/sddm/sddm.conf.d/00-lirios.conf < /usr/lib/sddm/sddm.conf.d/01-livemedia.conf <> /etc/pacman.conf < Set an iso filename (prefix)" 24 | echo " Default: ${iso_name}" 25 | echo " -V Set an iso version (in filename)" 26 | echo " Default: ${iso_version}" 27 | echo " -L Set an iso label (disk label)" 28 | echo " Default: ${iso_label}" 29 | echo " -D Set an install_dir (directory inside iso)" 30 | echo " Default: ${install_dir}" 31 | echo " -w Set the working directory" 32 | echo " Default: ${work_dir}" 33 | echo " -o Set the output directory" 34 | echo " Default: ${out_dir}" 35 | echo " -v Enable verbose output" 36 | echo " -f Force rebuild" 37 | echo " -h This help message" 38 | exit ${1} 39 | } 40 | 41 | # Helper function to run make_*() only one time per architecture. 42 | run_once() { 43 | if [[ ! -e ${work_dir}/build.${1}_${arch} ]]; then 44 | $1 45 | touch ${work_dir}/build.${1}_${arch} 46 | fi 47 | } 48 | 49 | # Setup custom pacman.conf with current cache directories. 50 | make_pacman_conf() { 51 | local _cache_dirs 52 | _cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')) 53 | sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${_cache_dirs[@]})|g" ${script_path}/pacman.conf > ${work_dir}/pacman.conf 54 | } 55 | 56 | # Base installation, plus needed packages (airootfs) 57 | make_basefs() { 58 | setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" init 59 | setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "haveged intel-ucode memtest86+ mkinitcpio-nfs-utils nbd zsh" install 60 | } 61 | 62 | # Additional packages (airootfs) 63 | make_packages() { 64 | setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "$(grep -h -v ^# ${script_path}/packages)" install 65 | } 66 | 67 | # Needed packages for x86_64 EFI boot 68 | make_packages_efi() { 69 | setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "efitools" install 70 | } 71 | 72 | # Copy mkinitcpio archiso hooks and build initramfs (airootfs) 73 | make_setup_mkinitcpio() { 74 | local _hook 75 | mkdir -p ${work_dir}/${arch}/airootfs/etc/initcpio/hooks 76 | mkdir -p ${work_dir}/${arch}/airootfs/etc/initcpio/install 77 | for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do 78 | cp /usr/lib/initcpio/hooks/${_hook} ${work_dir}/${arch}/airootfs/etc/initcpio/hooks 79 | cp /usr/lib/initcpio/install/${_hook} ${work_dir}/${arch}/airootfs/etc/initcpio/install 80 | done 81 | sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" ${work_dir}/${arch}/airootfs/etc/initcpio/install/archiso_shutdown 82 | cp /usr/lib/initcpio/install/archiso_kms ${work_dir}/${arch}/airootfs/etc/initcpio/install 83 | cp /usr/lib/initcpio/archiso_shutdown ${work_dir}/${arch}/airootfs/etc/initcpio 84 | cp ${script_path}/mkinitcpio.conf ${work_dir}/${arch}/airootfs/etc/mkinitcpio-archiso.conf 85 | gnupg_fd= 86 | if [[ ${gpg_key} ]]; then 87 | gpg --export ${gpg_key} >${work_dir}/gpgkey 88 | exec 17<>${work_dir}/gpgkey 89 | fi 90 | ARCHISO_GNUPG_FD=${gpg_key:+17} setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run 91 | if [[ ${gpg_key} ]]; then 92 | exec 17<&- 93 | fi 94 | } 95 | 96 | # Customize installation (airootfs) 97 | make_customize_airootfs() { 98 | cp -af ${script_path}/airootfs ${work_dir}/${arch} 99 | 100 | curl -o ${work_dir}/${arch}/airootfs/etc/pacman.d/mirrorlist 'https://www.archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on' 101 | 102 | setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -r '/root/customize_airootfs.sh' run 103 | rm ${work_dir}/${arch}/airootfs/root/customize_airootfs.sh 104 | } 105 | 106 | # Prepare kernel/initramfs ${install_dir}/boot/ 107 | make_boot() { 108 | mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch} 109 | cp ${work_dir}/${arch}/airootfs/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img 110 | cp ${work_dir}/${arch}/airootfs/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz 111 | } 112 | 113 | # Add other aditional/extra files to ${install_dir}/boot/ 114 | make_boot_extra() { 115 | cp ${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/memtest 116 | cp ${work_dir}/${arch}/airootfs/usr/share/licenses/common/GPL2/license.txt ${work_dir}/iso/${install_dir}/boot/memtest.COPYING 117 | cp ${work_dir}/${arch}/airootfs/boot/intel-ucode.img ${work_dir}/iso/${install_dir}/boot/intel_ucode.img 118 | cp ${work_dir}/${arch}/airootfs/usr/share/licenses/intel-ucode/LICENSE ${work_dir}/iso/${install_dir}/boot/intel_ucode.LICENSE 119 | } 120 | 121 | # Prepare /${install_dir}/boot/syslinux 122 | make_syslinux() { 123 | mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux 124 | for _cfg in ${script_path}/syslinux/*.cfg; do 125 | sed "s|%ARCHISO_LABEL%|${iso_label}|g; 126 | s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/iso/${install_dir}/boot/syslinux/${_cfg##*/} 127 | done 128 | cp ${script_path}/syslinux/splash.png ${work_dir}/iso/${install_dir}/boot/syslinux 129 | cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/*.c32 ${work_dir}/iso/${install_dir}/boot/syslinux 130 | cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/iso/${install_dir}/boot/syslinux 131 | cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/memdisk ${work_dir}/iso/${install_dir}/boot/syslinux 132 | mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux/hdt 133 | gzip -c -9 ${work_dir}/${arch}/airootfs/usr/share/hwdata/pci.ids > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/pciids.gz 134 | gzip -c -9 ${work_dir}/${arch}/airootfs/usr/lib/modules/*-ARCH/modules.alias > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz 135 | } 136 | 137 | # Prepare /isolinux 138 | make_isolinux() { 139 | mkdir -p ${work_dir}/iso/isolinux 140 | sed "s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg 141 | cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ 142 | cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ 143 | cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ 144 | } 145 | 146 | # Prepare /EFI 147 | make_efi() { 148 | mkdir -p ${work_dir}/iso/EFI/boot 149 | cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi 150 | cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/iso/EFI/boot/ 151 | 152 | cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/iso/EFI/boot/loader.efi 153 | 154 | mkdir -p ${work_dir}/iso/loader/entries 155 | cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ 156 | cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/ 157 | cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/ 158 | 159 | sed "s|%ARCHISO_LABEL%|${iso_label}|g; 160 | s|%INSTALL_DIR%|${install_dir}|g" \ 161 | ${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf 162 | 163 | # EFI Shell 2.0 for UEFI 2.3+ 164 | curl -o ${work_dir}/iso/EFI/shellx64_v2.efi https://raw.githubusercontent.com/tianocore/edk2/master/ShellBinPkg/UefiShell/X64/Shell.efi 165 | # EFI Shell 1.0 for non UEFI 2.3+ 166 | curl -o ${work_dir}/iso/EFI/shellx64_v1.efi https://raw.githubusercontent.com/tianocore/edk2/master/EdkShellBinPkg/FullShell/X64/Shell_Full.efi 167 | } 168 | 169 | # Prepare efiboot.img::/EFI for "El Torito" EFI boot mode 170 | make_efiboot() { 171 | mkdir -p ${work_dir}/iso/EFI/archiso 172 | truncate -s 64M ${work_dir}/iso/EFI/archiso/efiboot.img 173 | mkfs.fat -n ARCHISO_EFI ${work_dir}/iso/EFI/archiso/efiboot.img 174 | 175 | mkdir -p ${work_dir}/efiboot 176 | mount ${work_dir}/iso/EFI/archiso/efiboot.img ${work_dir}/efiboot 177 | 178 | mkdir -p ${work_dir}/efiboot/EFI/archiso 179 | cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/archiso/vmlinuz.efi 180 | cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img 181 | 182 | cp ${work_dir}/iso/${install_dir}/boot/intel_ucode.img ${work_dir}/efiboot/EFI/archiso/intel_ucode.img 183 | 184 | mkdir -p ${work_dir}/efiboot/EFI/boot 185 | cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi 186 | cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/efiboot/EFI/boot/ 187 | 188 | cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi 189 | 190 | mkdir -p ${work_dir}/efiboot/loader/entries 191 | cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/ 192 | cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/ 193 | cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/ 194 | 195 | sed "s|%ARCHISO_LABEL%|${iso_label}|g; 196 | s|%INSTALL_DIR%|${install_dir}|g" \ 197 | ${script_path}/efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf 198 | 199 | cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/ 200 | cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/ 201 | 202 | umount -d ${work_dir}/efiboot 203 | } 204 | 205 | # Build airootfs filesystem image 206 | make_prepare() { 207 | cp -a -l -f ${work_dir}/${arch}/airootfs ${work_dir} 208 | setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist 209 | setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" ${gpg_key:+-g ${gpg_key}} prepare 210 | rm -rf ${work_dir}/airootfs 211 | # rm -rf ${work_dir}/${arch}/airootfs (if low space, this helps) 212 | } 213 | 214 | # Build ISO 215 | make_iso() { 216 | local _iso_filename="${iso_name}-${iso_version}.iso" 217 | mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -L "${iso_label}" -o "${out_dir}" iso "${_iso_filename}" 218 | pushd ${out_dir} >/dev/null 219 | sha1sum "${_iso_filename}" > "${_iso_filename}.sha1sum" 220 | sha256sum "${_iso_filename}" > "${_iso_filename}.sha256sum" 221 | popd >/dev/null 222 | } 223 | 224 | if [[ ${EUID} -ne 0 ]]; then 225 | echo "This script must be run as root." 226 | _usage 1 227 | fi 228 | 229 | if [[ ${arch} != x86_64 ]]; then 230 | echo "This script needs to be run on x86_64" 231 | _usage 1 232 | fi 233 | 234 | while getopts 'N:V:L:D:w:o:g:vfh' arg; do 235 | case "${arg}" in 236 | N) iso_name="${OPTARG}" ;; 237 | V) iso_version="${OPTARG}" ;; 238 | L) iso_label="${OPTARG}" ;; 239 | D) install_dir="${OPTARG}" ;; 240 | w) work_dir="${OPTARG}" ;; 241 | o) out_dir="${OPTARG}" ;; 242 | g) gpg_key="${OPTARG}" ;; 243 | v) verbose="-v" ;; 244 | f) rebuild=1 ;; 245 | h) _usage 0 ;; 246 | *) 247 | echo "Invalid argument '${arg}'" 248 | _usage 1 249 | ;; 250 | esac 251 | done 252 | 253 | mkdir -p ${work_dir} 254 | 255 | if [[ ${rebuild} -eq 1 ]]; then 256 | rm -f ${work_dir}/build.make_* 257 | fi 258 | 259 | run_once make_pacman_conf 260 | 261 | # Do all stuff for each airootfs 262 | for arch in x86_64; do 263 | run_once make_basefs 264 | run_once make_packages 265 | done 266 | 267 | run_once make_packages_efi 268 | 269 | for arch in x86_64; do 270 | run_once make_customize_airootfs 271 | run_once make_setup_mkinitcpio 272 | done 273 | 274 | for arch in x86_64; do 275 | run_once make_boot 276 | done 277 | 278 | # Do all stuff for "iso" 279 | run_once make_boot_extra 280 | run_once make_syslinux 281 | run_once make_isolinux 282 | run_once make_efi 283 | run_once make_efiboot 284 | 285 | for arch in x86_64; do 286 | run_once make_prepare 287 | done 288 | 289 | run_once make_iso 290 | -------------------------------------------------------------------------------- /livecd/efiboot/loader/entries/archiso-x86_64-cd.conf: -------------------------------------------------------------------------------- 1 | title Arch Linux archiso x86_64 UEFI CD 2 | linux /EFI/archiso/vmlinuz.efi 3 | initrd /EFI/archiso/intel_ucode.img 4 | initrd /EFI/archiso/archiso.img 5 | options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% 6 | -------------------------------------------------------------------------------- /livecd/efiboot/loader/entries/archiso-x86_64-usb.conf: -------------------------------------------------------------------------------- 1 | title Arch Linux archiso x86_64 UEFI USB 2 | linux /%INSTALL_DIR%/boot/x86_64/vmlinuz 3 | initrd /%INSTALL_DIR%/boot/intel_ucode.img 4 | initrd /%INSTALL_DIR%/boot/x86_64/archiso.img 5 | options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% 6 | -------------------------------------------------------------------------------- /livecd/efiboot/loader/entries/uefi-shell-v1-x86_64.conf: -------------------------------------------------------------------------------- 1 | title UEFI Shell x86_64 v1 2 | efi /EFI/shellx64_v1.efi 3 | -------------------------------------------------------------------------------- /livecd/efiboot/loader/entries/uefi-shell-v2-x86_64.conf: -------------------------------------------------------------------------------- 1 | title UEFI Shell x86_64 v2 2 | efi /EFI/shellx64_v2.efi 3 | -------------------------------------------------------------------------------- /livecd/efiboot/loader/loader.conf: -------------------------------------------------------------------------------- 1 | timeout 3 2 | default archiso-x86_64 3 | -------------------------------------------------------------------------------- /livecd/isolinux/isolinux.cfg: -------------------------------------------------------------------------------- 1 | PATH /%INSTALL_DIR%/boot/syslinux/ 2 | DEFAULT loadconfig 3 | 4 | LABEL loadconfig 5 | CONFIG /%INSTALL_DIR%/boot/syslinux/archiso.cfg 6 | APPEND /%INSTALL_DIR%/ 7 | -------------------------------------------------------------------------------- /livecd/mkinitcpio.conf: -------------------------------------------------------------------------------- 1 | HOOKS=(base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard plymouth) 2 | COMPRESSION="xz" 3 | -------------------------------------------------------------------------------- /livecd/packages: -------------------------------------------------------------------------------- 1 | # Base packages 2 | arch-install-scripts 3 | b43-fwcutter 4 | btrfs-progs 5 | clonezilla 6 | crda 7 | ddrescue 8 | dhclient 9 | dialog 10 | dmraid 11 | dnsmasq 12 | dnsutils 13 | dosfstools 14 | elinks 15 | ethtool 16 | exfat-utils 17 | f2fs-tools 18 | fsarchiver 19 | gnu-netcat 20 | gptfdisk 21 | grml-zsh-config 22 | grub 23 | hdparm 24 | ipw2100-fw 25 | ipw2200-fw 26 | lftp 27 | linux-lts 28 | linux-atm 29 | lsscsi 30 | mtools 31 | ndisc6 32 | nfs-utils 33 | nilfs-utils 34 | ntfs-3g 35 | ntp 36 | openconnect 37 | openssh 38 | openvpn 39 | partclone 40 | parted 41 | partimage 42 | ppp 43 | pptpclient 44 | refind-efi 45 | rp-pppoe 46 | rsync 47 | sdparm 48 | sg3_utils 49 | smartmontools 50 | speedtouch 51 | sudo 52 | tcpdump 53 | testdisk 54 | usb_modeswitch 55 | vim-minimal 56 | vpnc 57 | wget 58 | wireless_tools 59 | wpa_actiond 60 | wvdial 61 | xl2tpd 62 | zd1211-firmware 63 | # Hardware 64 | acpi 65 | acpid 66 | networkmanager 67 | upower 68 | udisks2 69 | pulseaudio-alsa 70 | pulseaudio-bluetooth 71 | pulseaudio-zeroconf 72 | xf86-video-amdgpu 73 | xf86-video-ati 74 | xf86-video-dummy 75 | xf86-video-fbdev 76 | xf86-video-intel 77 | xf86-video-nouveau 78 | xf86-video-openchrome 79 | xf86-video-sisusb 80 | xf86-video-vesa 81 | xf86-video-vmware 82 | xf86-video-voodoo 83 | xf86-input-elographics 84 | xf86-input-evdev 85 | xf86-input-keyboard 86 | xf86-input-libinput 87 | xf86-input-mouse 88 | xf86-input-synaptics 89 | xf86-input-vmmouse 90 | xf86-input-void 91 | xf86-input-wacom 92 | open-vm-tools 93 | thermald 94 | # Printing 95 | cups 96 | ghostscript 97 | gsfonts 98 | gutenprint 99 | foomatic-db 100 | foomatic-db-engine 101 | foomatic-db-gutenprint-ppds 102 | foomatic-db-nonfree 103 | foomatic-db-nonfree-ppds 104 | foomatic-db-ppds 105 | hplip 106 | splix 107 | cups-pdf 108 | # Scanner 109 | sane 110 | # Xorg (for SDDM) 111 | xorg-server 112 | xorg-xauth 113 | # Boot splash 114 | plymouth 115 | # Zeroconf 116 | avahi 117 | nss-mdns 118 | # Desktop 119 | accountsservice 120 | sddm 121 | weston 122 | liri-shell-git 123 | liri-appcenter-git 124 | liri-files-git 125 | liri-settings-git 126 | liri-terminal-git 127 | liri-calculator-git 128 | liri-browser-git 129 | liri-text-git 130 | # Themes 131 | liri-themes-git 132 | liri-wallpapers-git 133 | material-gtk-theme-git 134 | paper-icon-theme-git 135 | # Installer 136 | calamares 137 | liri-calamares-branding-git 138 | os-prober 139 | squashfs-tools 140 | -------------------------------------------------------------------------------- /livecd/pacman.conf: -------------------------------------------------------------------------------- 1 | # 2 | # /etc/pacman.conf 3 | # 4 | # See the pacman.conf(5) manpage for option and repository directives 5 | 6 | # 7 | # GENERAL OPTIONS 8 | # 9 | [options] 10 | # The following paths are commented out with their default values listed. 11 | # If you wish to use different paths, uncomment and update the paths. 12 | #RootDir = / 13 | #DBPath = /var/lib/pacman/ 14 | #CacheDir = /var/cache/pacman/pkg/ 15 | #LogFile = /var/log/pacman.log 16 | #GPGDir = /etc/pacman.d/gnupg/ 17 | HoldPkg = pacman glibc 18 | #XferCommand = /usr/bin/curl -C - -f %u > %o 19 | #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u 20 | #CleanMethod = KeepInstalled 21 | #UseDelta = 0.7 22 | Architecture = auto 23 | 24 | # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup 25 | #IgnorePkg = 26 | #IgnoreGroup = 27 | 28 | #NoUpgrade = 29 | #NoExtract = 30 | 31 | # Misc options 32 | #UseSyslog 33 | #Color 34 | #TotalDownload 35 | # We cannot check disk space from within a chroot environment 36 | #CheckSpace 37 | #VerbosePkgLists 38 | 39 | # By default, pacman accepts packages signed by keys that its local keyring 40 | # trusts (see pacman-key and its man page), as well as unsigned packages. 41 | SigLevel = Required DatabaseOptional 42 | LocalFileSigLevel = Optional 43 | #RemoteFileSigLevel = Required 44 | 45 | # NOTE: You must run `pacman-key --init` before first using pacman; the local 46 | # keyring can then be populated with the keys of all official Arch Linux 47 | # packagers with `pacman-key --populate archlinux`. 48 | 49 | # 50 | # REPOSITORIES 51 | # - can be defined here or included from another file 52 | # - pacman will search repositories in the order defined here 53 | # - local/custom mirrors can be added here or in separate files 54 | # - repositories listed first will take precedence when packages 55 | # have identical names, regardless of version number 56 | # - URLs will have $repo replaced by the name of the current repo 57 | # - URLs will have $arch replaced by the name of the architecture 58 | # 59 | # Repository entries are of the format: 60 | # [repo-name] 61 | # Server = ServerName 62 | # Include = IncludePath 63 | # 64 | # The header [repo-name] is crucial - it must be present and 65 | # uncommented to enable the repo. 66 | # 67 | 68 | # The testing repositories are disabled by default. To enable, uncomment the 69 | # repo name header and Include lines. You can add preferred servers immediately 70 | # after the header, and they will be used before the default mirrors. 71 | 72 | #[testing] 73 | #Include = /etc/pacman.d/mirrorlist 74 | 75 | [core] 76 | Include = /etc/pacman.d/mirrorlist 77 | 78 | [extra] 79 | Include = /etc/pacman.d/mirrorlist 80 | 81 | #[community-testing] 82 | #Include = /etc/pacman.d/mirrorlist 83 | 84 | [community] 85 | Include = /etc/pacman.d/mirrorlist 86 | 87 | # An example of a custom package repository. See the pacman manpage for 88 | # tips on creating your own repositories. 89 | #[custom] 90 | #SigLevel = Optional TrustAll 91 | #Server = file:///home/custompkgs 92 | 93 | [liri-unstable] 94 | SigLevel = Optional TrustAll 95 | Server = https://repo.liri.io/archlinux/unstable/$arch/ 96 | -------------------------------------------------------------------------------- /livecd/syslinux/archiso.cfg: -------------------------------------------------------------------------------- 1 | DEFAULT select 2 | 3 | LABEL select 4 | COM32 boot/syslinux/whichsys.c32 5 | APPEND -pxe- pxe -sys- sys -iso- sys 6 | 7 | LABEL pxe 8 | CONFIG boot/syslinux/archiso_pxe_inc.cfg 9 | 10 | LABEL sys 11 | CONFIG boot/syslinux/archiso_sys_inc.cfg 12 | -------------------------------------------------------------------------------- /livecd/syslinux/archiso_head.cfg: -------------------------------------------------------------------------------- 1 | SERIAL 0 38400 2 | UI boot/syslinux/vesamenu.c32 3 | MENU TITLE Liri OS 4 | MENU BACKGROUND boot/syslinux/splash.png 5 | 6 | MENU WIDTH 78 7 | MENU MARGIN 4 8 | MENU ROWS 7 9 | MENU VSHIFT 10 10 | MENU TABMSGROW 14 11 | MENU CMDLINEROW 14 12 | MENU HELPMSGROW 16 13 | MENU HELPMSGENDROW 29 14 | 15 | # Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu 16 | 17 | MENU COLOR border 30;44 #40ffffff #a0000000 std 18 | MENU COLOR title 1;36;44 #9033ccff #a0000000 std 19 | MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all 20 | MENU COLOR unsel 37;44 #50ffffff #a0000000 std 21 | MENU COLOR help 37;40 #c0ffffff #a0000000 std 22 | MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std 23 | MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std 24 | MENU COLOR msg07 37;40 #90ffffff #a0000000 std 25 | MENU COLOR tabmsg 31;40 #30ffffff #00000000 std 26 | -------------------------------------------------------------------------------- /livecd/syslinux/archiso_pxe64.cfg: -------------------------------------------------------------------------------- 1 | LABEL arch64_nbd 2 | TEXT HELP 3 | Boot the Liri OS live medium (Using NBD). 4 | It allows you to install Liri OS or perform system maintenance. 5 | ENDTEXT 6 | MENU LABEL Boot Liri OS (NBD) 7 | LINUX boot/x86_64/vmlinuz 8 | INITRD boot/intel_ucode.img,boot/x86_64/archiso.img 9 | APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} quiet splash 10 | SYSAPPEND 3 11 | 12 | LABEL arch64_nfs 13 | TEXT HELP 14 | Boot the Liri OS live medium (Using NFS). 15 | It allows you to install Liri OS or perform system maintenance. 16 | ENDTEXT 17 | MENU LABEL Boot Liri OS (NFS) 18 | LINUX boot/x86_64/vmlinuz 19 | INITRD boot/intel_ucode.img,boot/x86_64/archiso.img 20 | APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt quiet splash 21 | SYSAPPEND 3 22 | 23 | LABEL arch64_http 24 | TEXT HELP 25 | Boot the Liri OS live medium (Using HTTP). 26 | It allows you to install Liri OS or perform system maintenance. 27 | ENDTEXT 28 | MENU LABEL Boot Liri OS (HTTP) 29 | LINUX boot/x86_64/vmlinuz 30 | INITRD boot/intel_ucode.img,boot/x86_64/archiso.img 31 | APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ quiet splash 32 | SYSAPPEND 3 33 | -------------------------------------------------------------------------------- /livecd/syslinux/archiso_pxe_inc.cfg: -------------------------------------------------------------------------------- 1 | INCLUDE boot/syslinux/archiso_head.cfg 2 | INCLUDE boot/syslinux/archiso_pxe64.cfg 3 | INCLUDE boot/syslinux/archiso_tail.cfg 4 | -------------------------------------------------------------------------------- /livecd/syslinux/archiso_sys64.cfg: -------------------------------------------------------------------------------- 1 | LABEL arch64 2 | TEXT HELP 3 | Boot the Liri OS live medium. 4 | It allows you to install Liri OS or perform system maintenance. 5 | ENDTEXT 6 | MENU LABEL Boot Liri OS 7 | LINUX boot/x86_64/vmlinuz 8 | INITRD boot/intel_ucode.img,boot/x86_64/archiso.img 9 | APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet splash 10 | -------------------------------------------------------------------------------- /livecd/syslinux/archiso_sys_inc.cfg: -------------------------------------------------------------------------------- 1 | INCLUDE boot/syslinux/archiso_head.cfg 2 | INCLUDE boot/syslinux/archiso_sys64.cfg 3 | INCLUDE boot/syslinux/archiso_tail.cfg 4 | -------------------------------------------------------------------------------- /livecd/syslinux/archiso_tail.cfg: -------------------------------------------------------------------------------- 1 | LABEL existing 2 | TEXT HELP 3 | Boot an existing operating system. 4 | Press TAB to edit the disk and partition number to boot. 5 | ENDTEXT 6 | MENU LABEL Boot existing OS 7 | COM32 boot/syslinux/chain.c32 8 | APPEND hd0 0 9 | 10 | # http://www.memtest.org/ 11 | LABEL memtest 12 | MENU LABEL Run Memtest86+ (RAM test) 13 | LINUX boot/memtest 14 | 15 | # http://hdt-project.org/ 16 | LABEL hdt 17 | MENU LABEL Hardware Information (HDT) 18 | COM32 boot/syslinux/hdt.c32 19 | APPEND modules_alias=boot/syslinux/hdt/modalias.gz pciids=boot/syslinux/hdt/pciids.gz 20 | 21 | LABEL reboot 22 | MENU LABEL Reboot 23 | COM32 boot/syslinux/reboot.c32 24 | 25 | LABEL poweroff 26 | MENU LABEL Power Off 27 | COM32 boot/syslinux/poweroff.c32 28 | -------------------------------------------------------------------------------- /livecd/syslinux/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liri-archive/archbuild/cab2ecdea6150f0128f1f937ad939d8ef08a90c5/livecd/syslinux/splash.png -------------------------------------------------------------------------------- /livecd/syslinux/syslinux.cfg: -------------------------------------------------------------------------------- 1 | DEFAULT loadconfig 2 | 3 | LABEL loadconfig 4 | CONFIG archiso.cfg 5 | APPEND ../../ 6 | --------------------------------------------------------------------------------