Add the default archiso
releng
template
This commit is contained in:
parent
2d2a23a006
commit
7890495c90
84 changed files with 1192 additions and 0 deletions
1
archiso/airootfs/etc/hostname
Normal file
1
archiso/airootfs/etc/hostname
Normal file
|
@ -0,0 +1 @@
|
||||||
|
archiso
|
1
archiso/airootfs/etc/locale.conf
Normal file
1
archiso/airootfs/etc/locale.conf
Normal file
|
@ -0,0 +1 @@
|
||||||
|
LANG=C.UTF-8
|
1
archiso/airootfs/etc/localtime
Symbolic link
1
archiso/airootfs/etc/localtime
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/usr/share/zoneinfo/UTC
|
3
archiso/airootfs/etc/mkinitcpio.conf.d/archiso.conf
Normal file
3
archiso/airootfs/etc/mkinitcpio.conf.d/archiso.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
HOOKS=(base udev microcode modconf kms memdisk archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs block filesystems keyboard)
|
||||||
|
COMPRESSION="xz"
|
||||||
|
COMPRESSION_OPTIONS=(-9e)
|
8
archiso/airootfs/etc/mkinitcpio.d/linux.preset
Normal file
8
archiso/airootfs/etc/mkinitcpio.d/linux.preset
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# mkinitcpio preset file for the 'linux' package on archiso
|
||||||
|
|
||||||
|
PRESETS=('archiso')
|
||||||
|
|
||||||
|
ALL_kver='/boot/vmlinuz-linux'
|
||||||
|
archiso_config='/etc/mkinitcpio.conf.d/archiso.conf'
|
||||||
|
|
||||||
|
archiso_image="/boot/initramfs-linux.img"
|
7
archiso/airootfs/etc/modprobe.d/broadcom-wl.conf
Normal file
7
archiso/airootfs/etc/modprobe.d/broadcom-wl.conf
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# The broadcom-wl package requires some modules to be disabled in order to use
|
||||||
|
# wl. Since the ISO image needs to cover many hardware cases, this file
|
||||||
|
# overrides the default blacklist in /usr/lib/modprobe.d/
|
||||||
|
#
|
||||||
|
# If you need to use wl, you may need to delete this file, then `rmmod` any
|
||||||
|
# already-loaded modules that are now blacklisted before proceeding to modprobe
|
||||||
|
# wl itself.
|
11
archiso/airootfs/etc/motd
Normal file
11
archiso/airootfs/etc/motd
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
To install [38;2;23;147;209mArch Linux[0m follow the installation guide:
|
||||||
|
https://wiki.archlinux.org/title/Installation_guide
|
||||||
|
|
||||||
|
For Wi-Fi, authenticate to the wireless network using the [35miwctl[0m utility.
|
||||||
|
For mobile broadband (WWAN) modems, connect with the [35mmmcli[0m utility.
|
||||||
|
Ethernet, WLAN and WWAN interfaces using DHCP should work automatically.
|
||||||
|
|
||||||
|
After connecting to the internet, the installation guide can be accessed
|
||||||
|
via the convenience script [35mInstallation_guide[0m.
|
||||||
|
|
||||||
|
[41m [41m [41m [40m [44m [40m [41m [46m [45m [41m [46m [43m [41m [44m [45m [40m [44m [40m [41m [44m [41m [41m [46m [42m [41m [44m [43m [41m [45m [40m [40m [44m [40m [41m [44m [42m [41m [46m [44m [41m [46m [47m [0m
|
13
archiso/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook
Normal file
13
archiso/airootfs/etc/pacman.d/hooks/uncomment-mirrors.hook
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# remove from airootfs!
|
||||||
|
[Trigger]
|
||||||
|
Operation = Install
|
||||||
|
Operation = Upgrade
|
||||||
|
Type = Package
|
||||||
|
Target = pacman-mirrorlist
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description = Uncommenting all mirrors in /etc/pacman.d/mirrorlist...
|
||||||
|
When = PostTransaction
|
||||||
|
Depends = pacman-mirrorlist
|
||||||
|
Depends = sed
|
||||||
|
Exec = /usr/bin/sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist
|
|
@ -0,0 +1,18 @@
|
||||||
|
# remove from airootfs!
|
||||||
|
# As a workaround for https://bugs.archlinux.org/task/49347 , remove pacman hooks specific to the ISO build process.
|
||||||
|
# If not, they would be used when pacstrap is run in the live environment.
|
||||||
|
|
||||||
|
[Trigger]
|
||||||
|
Operation = Install
|
||||||
|
Operation = Upgrade
|
||||||
|
Operation = Remove
|
||||||
|
Type = Package
|
||||||
|
Target = *
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description = Work around FS#49347 by removing custom pacman hooks that are only required during ISO build...
|
||||||
|
When = PostTransaction
|
||||||
|
Depends = sh
|
||||||
|
Depends = coreutils
|
||||||
|
Depends = grep
|
||||||
|
Exec = /bin/sh -c "rm -- $(grep -Frl 'remove from airootfs' /etc/pacman.d/hooks/)"
|
1
archiso/airootfs/etc/passwd
Normal file
1
archiso/airootfs/etc/passwd
Normal file
|
@ -0,0 +1 @@
|
||||||
|
root:x:0:0:root:/root:/usr/bin/zsh
|
1
archiso/airootfs/etc/resolv.conf
Symbolic link
1
archiso/airootfs/etc/resolv.conf
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/run/systemd/resolve/stub-resolv.conf
|
1
archiso/airootfs/etc/shadow
Normal file
1
archiso/airootfs/etc/shadow
Normal file
|
@ -0,0 +1 @@
|
||||||
|
root::14871::::::
|
3
archiso/airootfs/etc/ssh/sshd_config.d/10-archiso.conf
Normal file
3
archiso/airootfs/etc/ssh/sshd_config.d/10-archiso.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Allow root login using password authentication
|
||||||
|
PasswordAuthentication yes
|
||||||
|
PermitRootLogin yes
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Journal]
|
||||||
|
Storage=volatile
|
|
@ -0,0 +1,4 @@
|
||||||
|
[Login]
|
||||||
|
HandleSuspendKey=ignore
|
||||||
|
HandleHibernateKey=ignore
|
||||||
|
HandleLidSwitch=ignore
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Network]
|
||||||
|
IPv6PrivacyExtensions=yes
|
24
archiso/airootfs/etc/systemd/network/20-ethernet.network
Normal file
24
archiso/airootfs/etc/systemd/network/20-ethernet.network
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
[Match]
|
||||||
|
# Matching with "Type=ether" causes issues with containers because it also matches virtual Ethernet interfaces (veth*).
|
||||||
|
# See https://bugs.archlinux.org/task/70892
|
||||||
|
# Instead match by globbing the network interface name.
|
||||||
|
Name=en*
|
||||||
|
Name=eth*
|
||||||
|
|
||||||
|
[Link]
|
||||||
|
RequiredForOnline=routable
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
DHCP=yes
|
||||||
|
MulticastDNS=yes
|
||||||
|
|
||||||
|
# systemd-networkd does not set per-interface-type default route metrics
|
||||||
|
# https://github.com/systemd/systemd/issues/17698
|
||||||
|
# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband.
|
||||||
|
# Use values from NetworkManager. From nm_device_get_route_metric_default in
|
||||||
|
# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c
|
||||||
|
[DHCPv4]
|
||||||
|
RouteMetric=100
|
||||||
|
|
||||||
|
[IPv6AcceptRA]
|
||||||
|
RouteMetric=100
|
20
archiso/airootfs/etc/systemd/network/20-wlan.network
Normal file
20
archiso/airootfs/etc/systemd/network/20-wlan.network
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
[Match]
|
||||||
|
Name=wl*
|
||||||
|
|
||||||
|
[Link]
|
||||||
|
RequiredForOnline=routable
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
DHCP=yes
|
||||||
|
MulticastDNS=yes
|
||||||
|
|
||||||
|
# systemd-networkd does not set per-interface-type default route metrics
|
||||||
|
# https://github.com/systemd/systemd/issues/17698
|
||||||
|
# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband.
|
||||||
|
# Use values from NetworkManager. From nm_device_get_route_metric_default in
|
||||||
|
# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c
|
||||||
|
[DHCPv4]
|
||||||
|
RouteMetric=600
|
||||||
|
|
||||||
|
[IPv6AcceptRA]
|
||||||
|
RouteMetric=600
|
19
archiso/airootfs/etc/systemd/network/20-wwan.network
Normal file
19
archiso/airootfs/etc/systemd/network/20-wwan.network
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[Match]
|
||||||
|
Name=ww*
|
||||||
|
|
||||||
|
[Link]
|
||||||
|
RequiredForOnline=routable
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
DHCP=yes
|
||||||
|
|
||||||
|
# systemd-networkd does not set per-interface-type default route metrics
|
||||||
|
# https://github.com/systemd/systemd/issues/17698
|
||||||
|
# Explicitly set route metric, so that Ethernet is preferred over Wi-Fi and Wi-Fi is preferred over mobile broadband.
|
||||||
|
# Use values from NetworkManager. From nm_device_get_route_metric_default in
|
||||||
|
# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/src/core/devices/nm-device.c
|
||||||
|
[DHCPv4]
|
||||||
|
RouteMetric=700
|
||||||
|
|
||||||
|
[IPv6AcceptRA]
|
||||||
|
RouteMetric=700
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Default systemd-resolved configuration for archiso
|
||||||
|
|
||||||
|
[Resolve]
|
||||||
|
MulticastDNS=yes
|
|
@ -0,0 +1 @@
|
||||||
|
/dev/null
|
10
archiso/airootfs/etc/systemd/system/choose-mirror.service
Normal file
10
archiso/airootfs/etc/systemd/system/choose-mirror.service
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Choose mirror from the kernel command line
|
||||||
|
ConditionKernelCommandLine=mirror
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/bin/choose-mirror
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/cloud-config.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/cloud-final.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/cloud-init-local.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/cloud-init.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/ModemManager.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-networkd.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-resolved.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-timesyncd.service
|
|
@ -0,0 +1,8 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Temporary /etc/pacman.d/gnupg directory
|
||||||
|
|
||||||
|
[Mount]
|
||||||
|
What=tmpfs
|
||||||
|
Where=/etc/pacman.d/gnupg
|
||||||
|
Type=tmpfs
|
||||||
|
Options=mode=0755,noswap
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin root - $TERM
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Unmute All Sound Card Controls For Use With The Live Arch Environment
|
||||||
|
# This needs to run after the audio device becomes available.
|
||||||
|
Wants=systemd-udev-settle.service
|
||||||
|
After=systemd-udev-settle.service sound.target
|
||||||
|
ConditionKernelCommandLine=accessibility=on
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/bin/livecd-sound -u
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sound.target
|
20
archiso/airootfs/etc/systemd/system/livecd-talk.service
Normal file
20
archiso/airootfs/etc/systemd/system/livecd-talk.service
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Screen reader service
|
||||||
|
After=livecd-alsa-unmuter.service
|
||||||
|
Before=getty@tty1.service
|
||||||
|
ConditionKernelCommandLine=accessibility=on
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
TTYPath=/dev/tty13
|
||||||
|
ExecStartPre=/usr/bin/chvt 13
|
||||||
|
ExecStart=/usr/local/bin/livecd-sound -p
|
||||||
|
ExecStartPost=/usr/bin/chvt 1
|
||||||
|
ExecStartPost=systemctl start espeakup.service
|
||||||
|
StandardInput=tty
|
||||||
|
TTYVHangup=yes
|
||||||
|
TTYVTDisallocate=yes
|
||||||
|
RemainAfterExit=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/ModemManager.service
|
|
@ -0,0 +1 @@
|
||||||
|
../choose-mirror.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/hv_fcopy_daemon.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/hv_kvp_daemon.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/hv_vss_daemon.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/iwd.service
|
|
@ -0,0 +1 @@
|
||||||
|
/etc/systemd/system/livecd-talk.service
|
|
@ -0,0 +1 @@
|
||||||
|
../pacman-init.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/reflector.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/sshd.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-networkd.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-resolved.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/vboxservice.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/vmtoolsd.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/vmware-vmblock-fuse.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-networkd-wait-online.service
|
15
archiso/airootfs/etc/systemd/system/pacman-init.service
Normal file
15
archiso/airootfs/etc/systemd/system/pacman-init.service
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Initializes Pacman keyring
|
||||||
|
Requires=etc-pacman.d-gnupg.mount
|
||||||
|
After=etc-pacman.d-gnupg.mount time-sync.target
|
||||||
|
BindsTo=etc-pacman.d-gnupg.mount
|
||||||
|
Before=archlinux-keyring-wkd-sync.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=yes
|
||||||
|
ExecStart=/usr/bin/pacman-key --init
|
||||||
|
ExecStart=/usr/bin/pacman-key --populate
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,6 @@
|
||||||
|
[Unit]
|
||||||
|
ConditionKernelCommandLine=!mirror
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=10
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/pcscd.socket
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-networkd.socket
|
|
@ -0,0 +1 @@
|
||||||
|
../livecd-alsa-unmuter.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-time-wait-sync.service
|
|
@ -0,0 +1 @@
|
||||||
|
/usr/lib/systemd/system/systemd-timesyncd.service
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Allow systemd-networkd-wait-online to succeed with one interface, otherwise, if multiple network interfaces exist,
|
||||||
|
# network-online.target gets needlessly delayed.
|
||||||
|
# See https://wiki.archlinux.org/title/systemd-networkd#systemd-networkd-wait-online
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any
|
8
archiso/airootfs/etc/xdg/reflector/reflector.conf
Normal file
8
archiso/airootfs/etc/xdg/reflector/reflector.conf
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# Reflector configuration file for the systemd service.
|
||||||
|
|
||||||
|
--save /etc/pacman.d/mirrorlist
|
||||||
|
--ipv4
|
||||||
|
--ipv6
|
||||||
|
--protocol https
|
||||||
|
--latest 20
|
||||||
|
--sort rate
|
44
archiso/airootfs/root/.automated_script.sh
Executable file
44
archiso/airootfs/root/.automated_script.sh
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
script_cmdline() {
|
||||||
|
local param
|
||||||
|
for param in $(</proc/cmdline); do
|
||||||
|
case "${param}" in
|
||||||
|
script=*)
|
||||||
|
echo "${param#*=}"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
automated_script() {
|
||||||
|
local script rt
|
||||||
|
script="$(script_cmdline)"
|
||||||
|
if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then
|
||||||
|
if [[ "${script}" =~ ^((http|https|ftp|tftp)://) ]]; then
|
||||||
|
# there's no synchronization for network availability before executing this script
|
||||||
|
printf '%s: waiting for network-online.target\n' "$0"
|
||||||
|
until systemctl --quiet is-active network-online.target; do
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
printf '%s: downloading %s\n' "$0" "${script}"
|
||||||
|
curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script
|
||||||
|
rt=$?
|
||||||
|
else
|
||||||
|
cp "${script}" /tmp/startup_script
|
||||||
|
rt=$?
|
||||||
|
fi
|
||||||
|
if [[ ${rt} -eq 0 ]]; then
|
||||||
|
chmod +x /tmp/startup_script
|
||||||
|
printf '%s: executing automated script\n' "$0"
|
||||||
|
# note that script is executed when other services (like pacman-init) may be still in progress, please
|
||||||
|
# synchronize to "systemctl is-system-running --wait" when your script depends on other services
|
||||||
|
/tmp/startup_script
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $(tty) == "/dev/tty1" ]]; then
|
||||||
|
automated_script
|
||||||
|
fi
|
4
archiso/airootfs/root/.gnupg/scdaemon.conf
Normal file
4
archiso/airootfs/root/.gnupg/scdaemon.conf
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
disable-ccid
|
||||||
|
disable-pinpad
|
||||||
|
pcsc-driver /usr/lib/libpcsclite.so
|
||||||
|
pcsc-shared
|
6
archiso/airootfs/root/.zlogin
Normal file
6
archiso/airootfs/root/.zlogin
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# fix for screen readers
|
||||||
|
if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then
|
||||||
|
setopt SINGLE_LINE_ZLE
|
||||||
|
fi
|
||||||
|
|
||||||
|
~/.automated_script.sh
|
5
archiso/airootfs/usr/local/bin/Installation_guide
Executable file
5
archiso/airootfs/usr/local/bin/Installation_guide
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
exec lynx 'https://wiki.archlinux.org/title/Installation_guide'
|
29
archiso/airootfs/usr/local/bin/choose-mirror
Executable file
29
archiso/airootfs/usr/local/bin/choose-mirror
Executable file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
get_cmdline() {
|
||||||
|
local param
|
||||||
|
for param in $(</proc/cmdline); do
|
||||||
|
case "${param}" in
|
||||||
|
"${1}="*)
|
||||||
|
echo "${param##*=}"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
mirror="$(get_cmdline mirror)"
|
||||||
|
[[ "$mirror" == 'auto' ]] && mirror="$(get_cmdline archiso_http_srv)"
|
||||||
|
[[ -n "$mirror" ]] || exit 0
|
||||||
|
|
||||||
|
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig
|
||||||
|
cat >/etc/pacman.d/mirrorlist <<EOF
|
||||||
|
#
|
||||||
|
# Arch Linux repository mirrorlist
|
||||||
|
# Generated by archiso
|
||||||
|
#
|
||||||
|
|
||||||
|
Server = ${mirror%%/}/\$repo/os/\$arch
|
||||||
|
EOF
|
239
archiso/airootfs/usr/local/bin/livecd-sound
Executable file
239
archiso/airootfs/usr/local/bin/livecd-sound
Executable file
|
@ -0,0 +1,239 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<-_EOF_
|
||||||
|
live cd sound helper script.
|
||||||
|
Usage: livecdsound [OPTION]
|
||||||
|
OPTIONS
|
||||||
|
-u, --unmute unmute all sound cards
|
||||||
|
-p, --pick select a card for speetch output
|
||||||
|
-h, --help Show this usage message
|
||||||
|
|
||||||
|
_EOF_
|
||||||
|
}
|
||||||
|
|
||||||
|
bugout() {
|
||||||
|
printf "/usr/local/bin/livecdsound: programming error"
|
||||||
|
stat_fail
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_card_indices() {
|
||||||
|
if [[ -f /proc/asound/cards ]]; then
|
||||||
|
sed -n -e's/^[[:space:]]*\([0-7]\)[[:space:]].*/\1/p' /proc/asound/cards
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# The following functions try to set many controls.
|
||||||
|
# No card has all the controls and so some of the attempts are bound to fail.
|
||||||
|
# Because of this, the functions can't return useful status values.
|
||||||
|
|
||||||
|
# $1 <card id>
|
||||||
|
# $2 <control>
|
||||||
|
# $3 <level>
|
||||||
|
unmute_and_set_level() {
|
||||||
|
[[ -n "$3" && -n "$2" && -n "$1" ]] || bugout
|
||||||
|
systemd-cat -t "livecdsound" printf "Setting: %s on card: %s to %s\n" "$2" "$1" "$3"
|
||||||
|
systemd-cat -t "livecdsound" amixer -c "$1" set "$2" "$3" unmute
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1 <card id>
|
||||||
|
# $2 <control>
|
||||||
|
mute_and_zero_level() {
|
||||||
|
[[ -n "$1" && -n "$2" ]] || bugout
|
||||||
|
systemd-cat -t "livecdsound" printf "Muting control: %s on card: %s\n" "$2" "$1"
|
||||||
|
systemd-cat -t "livecdsound" amixer -c "$1" set "$2" "0%" mute
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1 <card ID>
|
||||||
|
# $2 <control>
|
||||||
|
# $3 "on" | "off"
|
||||||
|
switch_control() {
|
||||||
|
[[ -n "$3" && -n "$1" ]] || bugout
|
||||||
|
systemd-cat -t "livecdsound" printf "Switching control: %s on card: %s to %s\n" "$2" "$1" "$3"
|
||||||
|
systemd-cat -t "livecdsound" amixer -c "$1" set "$2" "$3"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1 <card ID>
|
||||||
|
sanify_levels_on_card() {
|
||||||
|
unmute_and_set_level "$1" "Front" "80%"
|
||||||
|
unmute_and_set_level "$1" "Master" "80%"
|
||||||
|
unmute_and_set_level "$1" "Master Mono" "80%"
|
||||||
|
unmute_and_set_level "$1" "Master Digital" "80%" # E.g., cs4237B
|
||||||
|
unmute_and_set_level "$1" "Playback" "80%"
|
||||||
|
unmute_and_set_level "$1" "Headphone" "100%"
|
||||||
|
unmute_and_set_level "$1" "PCM" "80%"
|
||||||
|
unmute_and_set_level "$1" "PCM,1" "80%" # E.g., ess1969
|
||||||
|
unmute_and_set_level "$1" "DAC" "80%" # E.g., envy24, cs46xx
|
||||||
|
unmute_and_set_level "$1" "DAC,0" "80%" # E.g., envy24
|
||||||
|
unmute_and_set_level "$1" "DAC,1" "80%" # E.g., envy24
|
||||||
|
unmute_and_set_level "$1" "Synth" "80%"
|
||||||
|
unmute_and_set_level "$1" "CD" "80%"
|
||||||
|
unmute_and_set_level "$1" "PC Speaker" "100%"
|
||||||
|
|
||||||
|
mute_and_zero_level "$1" "Mic"
|
||||||
|
mute_and_zero_level "$1" "IEC958" # Ubuntu #19648
|
||||||
|
|
||||||
|
# Intel P4P800-MX
|
||||||
|
switch_control "$1" "Master Playback Switch" on
|
||||||
|
switch_control "$1" "Master Surround" on
|
||||||
|
|
||||||
|
# Trident/YMFPCI/emu10k1:
|
||||||
|
unmute_and_set_level "$1" "Wave" "80%"
|
||||||
|
unmute_and_set_level "$1" "Music" "80%"
|
||||||
|
unmute_and_set_level "$1" "AC97" "80%"
|
||||||
|
|
||||||
|
# DRC:
|
||||||
|
unmute_and_set_level "$1" "Dynamic Range Compression" "80%"
|
||||||
|
|
||||||
|
# Required for HDA Intel (hda-intel):
|
||||||
|
unmute_and_set_level "$1" "Front" "80%"
|
||||||
|
|
||||||
|
# Required for SB Live 7.1/24-bit (ca0106):
|
||||||
|
unmute_and_set_level "$1" "Analog Front" "80%"
|
||||||
|
|
||||||
|
# Required at least for Via 823x hardware on DFI K8M800-MLVF Motherboard
|
||||||
|
switch_control "$1" "IEC958 Capture Monitor" off
|
||||||
|
|
||||||
|
# Required for hardware allowing toggles for AC97 through IEC958,
|
||||||
|
# valid values are 0, 1, 2, 3. Needs to be set to 0 for PCM1.
|
||||||
|
unmute_and_set_level "$1" "IEC958 Playback AC97-SPSA" "0"
|
||||||
|
|
||||||
|
# Required for newer Via hardware
|
||||||
|
unmute_and_set_level "$1" "VIA DXS,0" "80%"
|
||||||
|
unmute_and_set_level "$1" "VIA DXS,1" "80%"
|
||||||
|
unmute_and_set_level "$1" "VIA DXS,2" "80%"
|
||||||
|
unmute_and_set_level "$1" "VIA DXS,3" "80%"
|
||||||
|
|
||||||
|
# Required on some notebooks with ICH4:
|
||||||
|
switch_control "$1" "Headphone Jack Sense" off
|
||||||
|
switch_control "$1" "Line Jack Sense" off
|
||||||
|
|
||||||
|
# Some machines need one or more of these to be on;
|
||||||
|
# others need one or more of these to be off:
|
||||||
|
|
||||||
|
switch_control "$1" "Audigy Analog/Digital Output Jack" on
|
||||||
|
switch_control "$1" "SB Live Analog/Digital Output Jack" on
|
||||||
|
|
||||||
|
# D1984 -- Thinkpad T61/X61
|
||||||
|
switch_control "$1" "Speaker" on
|
||||||
|
switch_control "$1" "Headphone" on
|
||||||
|
|
||||||
|
# HDA-Intel w/ "Digital" capture mixer (See Ubuntu #193823)
|
||||||
|
unmute_and_set_level "$1" "Digital" "80%"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1 <card ID> | "all"
|
||||||
|
sanify_levels() {
|
||||||
|
local ttsdml_returnstatus=0
|
||||||
|
local card
|
||||||
|
case "$1" in
|
||||||
|
all)
|
||||||
|
for card in $(echo_card_indices); do
|
||||||
|
sanify_levels_on_card "$card" || ttsdml_returnstatus=1
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
sanify_levels_on_card "$1" || ttsdml_returnstatus=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
return "$ttsdml_returnstatus"
|
||||||
|
}
|
||||||
|
|
||||||
|
# List all cards that *should* be usable for PCM audio. In my experience,
|
||||||
|
# the console speaker (handled by the pcsp driver) isn't a suitable playback
|
||||||
|
# device, so we'll exclude it.
|
||||||
|
list_non_pcsp_cards() {
|
||||||
|
for card in $(echo_card_indices); do
|
||||||
|
local cardfile="/proc/asound/card${card}/id"
|
||||||
|
if [[ -r "$cardfile" && -f "$cardfile" && "$(cat "$cardfile")" != pcsp ]]; then
|
||||||
|
echo "$card"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Properly initialize the sound card so that we have audio at boot.
|
||||||
|
unmute_all_cards() {
|
||||||
|
sanify_levels all
|
||||||
|
}
|
||||||
|
|
||||||
|
is_numeric() {
|
||||||
|
local str="$1"
|
||||||
|
[[ "$str" =~ ^[0-9]+$ ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
set_default_card() {
|
||||||
|
local card="$1"
|
||||||
|
sed -e "s/%card%/$card/g" </usr/local/share/livecd-sound/asound.conf.in \
|
||||||
|
>/etc/asound.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
play_on_card() {
|
||||||
|
local card="$1" file="$2"
|
||||||
|
aplay -q "-Dplughw:$card,0" "$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# If there are multiple usable sound cards, prompt the user to choose one,
|
||||||
|
# using auditory feedback.
|
||||||
|
pick_a_card() {
|
||||||
|
set -f
|
||||||
|
usable_cards="$(list_non_pcsp_cards)"
|
||||||
|
num_usable_cards="$(wc -w <<<"$usable_cards")"
|
||||||
|
|
||||||
|
if (( num_usable_cards == 1 )); then
|
||||||
|
systemd-cat -t "livecdsound" printf "Only one sound card is detected\n"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
systemd-cat -t "livecdsound" printf "multiple sound cards detected\n"
|
||||||
|
for card in "${usable_cards[@]}"; do
|
||||||
|
if ! is_numeric "$card"; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
play_on_card "$card" /usr/share/livecd-sounds/pick-a-card.wav &
|
||||||
|
done
|
||||||
|
wait
|
||||||
|
sleep 1
|
||||||
|
for card in "${usable_cards[@]}"; do
|
||||||
|
if ! is_numeric "$card"; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
play_on_card "$card" /usr/share/livecd-sounds/beep.wav
|
||||||
|
if read -r -t 10; then
|
||||||
|
systemd-cat -t "livecdsound" printf "Selecting %s sound card as default\n" "$card"
|
||||||
|
set_default_card "$card"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
if (( $# == 0 )); then
|
||||||
|
echo "error: No argument passed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
while [[ "${1}" != "" ]]; do
|
||||||
|
case ${1} in
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
-u|--unmute)
|
||||||
|
systemd-cat -t "livecdsound" printf "Unmuting all cards"
|
||||||
|
unmute_all_cards
|
||||||
|
;;
|
||||||
|
-p|--pick)
|
||||||
|
pick_a_card
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "error: Unsupported argument"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
|
@ -0,0 +1,3 @@
|
||||||
|
Defaults node
|
||||||
|
defaults.ctl.card %card%;
|
||||||
|
defaults.pcm.card %card%;
|
2
archiso/bootstrap_packages.x86_64
Normal file
2
archiso/bootstrap_packages.x86_64
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
arch-install-scripts
|
||||||
|
base
|
|
@ -0,0 +1,5 @@
|
||||||
|
title Arch Linux install medium (x86_64, UEFI)
|
||||||
|
sort-key 01
|
||||||
|
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
|
||||||
|
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
|
||||||
|
options archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID%
|
|
@ -0,0 +1,5 @@
|
||||||
|
title Arch Linux install medium (x86_64, UEFI) with speech
|
||||||
|
sort-key 02
|
||||||
|
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
|
||||||
|
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
|
||||||
|
options archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on
|
|
@ -0,0 +1,3 @@
|
||||||
|
title Memtest86+
|
||||||
|
sort-key 03
|
||||||
|
efi /boot/memtest86+/memtest.efi
|
3
archiso/efiboot/loader/loader.conf
Normal file
3
archiso/efiboot/loader/loader.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
timeout 15
|
||||||
|
default 01-archiso-x86_64-linux.conf
|
||||||
|
beep on
|
107
archiso/grub/grub.cfg
Normal file
107
archiso/grub/grub.cfg
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
# Load partition table and file system modules
|
||||||
|
insmod part_gpt
|
||||||
|
insmod part_msdos
|
||||||
|
insmod fat
|
||||||
|
insmod iso9660
|
||||||
|
insmod ntfs
|
||||||
|
insmod ntfscomp
|
||||||
|
insmod exfat
|
||||||
|
insmod udf
|
||||||
|
|
||||||
|
# Use graphics-mode output
|
||||||
|
if loadfont "${prefix}/fonts/unicode.pf2" ; then
|
||||||
|
insmod all_video
|
||||||
|
set gfxmode="auto"
|
||||||
|
terminal_input console
|
||||||
|
terminal_output console
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Enable serial console
|
||||||
|
insmod serial
|
||||||
|
insmod usbserial_common
|
||||||
|
insmod usbserial_ftdi
|
||||||
|
insmod usbserial_pl2303
|
||||||
|
insmod usbserial_usbdebug
|
||||||
|
if serial --unit=0 --speed=115200; then
|
||||||
|
terminal_input --append serial
|
||||||
|
terminal_output --append serial
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get a human readable platform identifier
|
||||||
|
if [ "${grub_platform}" == 'efi' ]; then
|
||||||
|
archiso_platform='UEFI'
|
||||||
|
if [ "${grub_cpu}" == 'x86_64' ]; then
|
||||||
|
archiso_platform="x64 ${archiso_platform}"
|
||||||
|
elif [ "${grub_cpu}" == 'i386' ]; then
|
||||||
|
archiso_platform="IA32 ${archiso_platform}"
|
||||||
|
else
|
||||||
|
archiso_platform="${grub_cpu} ${archiso_platform}"
|
||||||
|
fi
|
||||||
|
elif [ "${grub_platform}" == 'pc' ]; then
|
||||||
|
archiso_platform='BIOS'
|
||||||
|
else
|
||||||
|
archiso_platform="${grub_cpu} ${grub_platform}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set default menu entry
|
||||||
|
default=archlinux
|
||||||
|
timeout=15
|
||||||
|
timeout_style=menu
|
||||||
|
|
||||||
|
|
||||||
|
# Menu entries
|
||||||
|
|
||||||
|
menuentry "Arch Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' {
|
||||||
|
set gfxpayload=keep
|
||||||
|
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID%
|
||||||
|
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry "Arch Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' {
|
||||||
|
set gfxpayload=keep
|
||||||
|
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on
|
||||||
|
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [ "${grub_platform}" == 'efi' -a "${grub_cpu}" == 'x86_64' -a -f '/boot/memtest86+/memtest.efi' ]; then
|
||||||
|
menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class memtest --class gnu --class tool {
|
||||||
|
set gfxpayload=800x600,1024x768
|
||||||
|
linux /boot/memtest86+/memtest.efi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
if [ "${grub_platform}" == 'pc' -a -f '/boot/memtest86+/memtest' ]; then
|
||||||
|
menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class memtest --class gnu --class tool {
|
||||||
|
set gfxpayload=800x600,1024x768
|
||||||
|
linux /boot/memtest86+/memtest
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
if [ "${grub_platform}" == 'efi' ]; then
|
||||||
|
if [ "${grub_cpu}" == 'x86_64' -a -f '/shellx64.efi' ]; then
|
||||||
|
menuentry 'UEFI Shell' --class efi {
|
||||||
|
chainloader /shellx64.efi
|
||||||
|
}
|
||||||
|
elif [ "${grub_cpu}" == "i386" -a -f '/shellia32.efi' ]; then
|
||||||
|
menuentry 'UEFI Shell' --class efi {
|
||||||
|
chainloader /shellia32.efi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
menuentry 'UEFI Firmware Settings' --id 'uefi-firmware' {
|
||||||
|
fwsetup
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
menuentry 'System shutdown' --class shutdown --class poweroff {
|
||||||
|
echo 'System shutting down...'
|
||||||
|
halt
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry 'System restart' --class reboot --class restart {
|
||||||
|
echo 'System rebooting...'
|
||||||
|
reboot
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# GRUB init tune for accessibility
|
||||||
|
play 600 988 1 1319 4
|
80
archiso/grub/loopback.cfg
Normal file
80
archiso/grub/loopback.cfg
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
# https://www.supergrubdisk.org/wiki/Loopback.cfg
|
||||||
|
|
||||||
|
# Search for the ISO volume
|
||||||
|
search --no-floppy --set=archiso_img_dev --file "${iso_path}"
|
||||||
|
probe --set archiso_img_dev_uuid --fs-uuid "${archiso_img_dev}"
|
||||||
|
|
||||||
|
# Get a human readable platform identifier
|
||||||
|
if [ "${grub_platform}" == 'efi' ]; then
|
||||||
|
archiso_platform='UEFI'
|
||||||
|
if [ "${grub_cpu}" == 'x86_64' ]; then
|
||||||
|
archiso_platform="x64 ${archiso_platform}"
|
||||||
|
elif [ "${grub_cpu}" == 'i386' ]; then
|
||||||
|
archiso_platform="IA32 ${archiso_platform}"
|
||||||
|
else
|
||||||
|
archiso_platform="${grub_cpu} ${archiso_platform}"
|
||||||
|
fi
|
||||||
|
elif [ "${grub_platform}" == 'pc' ]; then
|
||||||
|
archiso_platform='BIOS'
|
||||||
|
else
|
||||||
|
archiso_platform="${grub_cpu} ${grub_platform}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set default menu entry
|
||||||
|
default=archlinux
|
||||||
|
timeout=15
|
||||||
|
timeout_style=menu
|
||||||
|
|
||||||
|
|
||||||
|
# Menu entries
|
||||||
|
|
||||||
|
menuentry "Arch Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' {
|
||||||
|
set gfxpayload=keep
|
||||||
|
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}"
|
||||||
|
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry "Arch Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' {
|
||||||
|
set gfxpayload=keep
|
||||||
|
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}" accessibility=on
|
||||||
|
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [ "${grub_platform}" == 'efi' -a "${grub_cpu}" == 'x86_64' -a -f '/boot/memtest86+/memtest.efi' ]; then
|
||||||
|
menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class memtest --class gnu --class tool {
|
||||||
|
set gfxpayload=800x600,1024x768
|
||||||
|
linux /boot/memtest86+/memtest.efi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
if [ "${grub_platform}" == 'pc' -a -f '/boot/memtest86+/memtest' ]; then
|
||||||
|
menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class memtest --class gnu --class tool {
|
||||||
|
set gfxpayload=800x600,1024x768
|
||||||
|
linux /boot/memtest86+/memtest
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
if [ "${grub_platform}" == 'efi' ]; then
|
||||||
|
if [ "${grub_cpu}" == 'x86_64' -a -f '/shellx64.efi' ]; then
|
||||||
|
menuentry 'UEFI Shell' --class efi {
|
||||||
|
chainloader /shellx64.efi
|
||||||
|
}
|
||||||
|
elif [ "${grub_cpu}" == "i386" -a -f '/shellia32.efi' ]; then
|
||||||
|
menuentry 'UEFI Shell' --class efi {
|
||||||
|
chainloader /shellia32.efi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
menuentry 'UEFI Firmware Settings' --id 'uefi-firmware' {
|
||||||
|
fwsetup
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
menuentry 'System shutdown' --class shutdown --class poweroff {
|
||||||
|
echo 'System shutting down...'
|
||||||
|
halt
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry 'System restart' --class reboot --class restart {
|
||||||
|
echo 'System rebooting...'
|
||||||
|
reboot
|
||||||
|
}
|
130
archiso/packages.x86_64
Normal file
130
archiso/packages.x86_64
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
alsa-utils
|
||||||
|
amd-ucode
|
||||||
|
arch-install-scripts
|
||||||
|
archinstall
|
||||||
|
b43-fwcutter
|
||||||
|
base
|
||||||
|
bcachefs-tools
|
||||||
|
bind
|
||||||
|
bolt
|
||||||
|
brltty
|
||||||
|
broadcom-wl
|
||||||
|
btrfs-progs
|
||||||
|
clonezilla
|
||||||
|
cloud-init
|
||||||
|
cryptsetup
|
||||||
|
darkhttpd
|
||||||
|
ddrescue
|
||||||
|
dhclient
|
||||||
|
dhcpcd
|
||||||
|
diffutils
|
||||||
|
dmidecode
|
||||||
|
dmraid
|
||||||
|
dnsmasq
|
||||||
|
dosfstools
|
||||||
|
e2fsprogs
|
||||||
|
edk2-shell
|
||||||
|
efibootmgr
|
||||||
|
espeakup
|
||||||
|
ethtool
|
||||||
|
exfatprogs
|
||||||
|
f2fs-tools
|
||||||
|
fatresize
|
||||||
|
foot-terminfo
|
||||||
|
fsarchiver
|
||||||
|
gnu-netcat
|
||||||
|
gpart
|
||||||
|
gpm
|
||||||
|
gptfdisk
|
||||||
|
grml-zsh-config
|
||||||
|
grub
|
||||||
|
hdparm
|
||||||
|
hyperv
|
||||||
|
intel-ucode
|
||||||
|
irssi
|
||||||
|
iw
|
||||||
|
iwd
|
||||||
|
jfsutils
|
||||||
|
kitty-terminfo
|
||||||
|
ldns
|
||||||
|
less
|
||||||
|
lftp
|
||||||
|
libfido2
|
||||||
|
libusb-compat
|
||||||
|
linux
|
||||||
|
linux-atm
|
||||||
|
linux-firmware
|
||||||
|
linux-firmware-marvell
|
||||||
|
livecd-sounds
|
||||||
|
lsscsi
|
||||||
|
lvm2
|
||||||
|
lynx
|
||||||
|
man-db
|
||||||
|
man-pages
|
||||||
|
mc
|
||||||
|
mdadm
|
||||||
|
memtest86+
|
||||||
|
memtest86+-efi
|
||||||
|
mkinitcpio
|
||||||
|
mkinitcpio-archiso
|
||||||
|
mkinitcpio-nfs-utils
|
||||||
|
modemmanager
|
||||||
|
mtools
|
||||||
|
nano
|
||||||
|
nbd
|
||||||
|
ndisc6
|
||||||
|
nfs-utils
|
||||||
|
nilfs-utils
|
||||||
|
nmap
|
||||||
|
ntfs-3g
|
||||||
|
nvme-cli
|
||||||
|
open-iscsi
|
||||||
|
open-vm-tools
|
||||||
|
openconnect
|
||||||
|
openpgp-card-tools
|
||||||
|
openssh
|
||||||
|
openvpn
|
||||||
|
partclone
|
||||||
|
parted
|
||||||
|
partimage
|
||||||
|
pcsclite
|
||||||
|
ppp
|
||||||
|
pptpclient
|
||||||
|
pv
|
||||||
|
qemu-guest-agent
|
||||||
|
refind
|
||||||
|
reflector
|
||||||
|
reiserfsprogs
|
||||||
|
rp-pppoe
|
||||||
|
rsync
|
||||||
|
rxvt-unicode-terminfo
|
||||||
|
screen
|
||||||
|
sdparm
|
||||||
|
sequoia-sq
|
||||||
|
sg3_utils
|
||||||
|
smartmontools
|
||||||
|
sof-firmware
|
||||||
|
squashfs-tools
|
||||||
|
sudo
|
||||||
|
syslinux
|
||||||
|
systemd-resolvconf
|
||||||
|
tcpdump
|
||||||
|
terminus-font
|
||||||
|
testdisk
|
||||||
|
tmux
|
||||||
|
tpm2-tools
|
||||||
|
tpm2-tss
|
||||||
|
udftools
|
||||||
|
usb_modeswitch
|
||||||
|
usbmuxd
|
||||||
|
usbutils
|
||||||
|
vim
|
||||||
|
virtualbox-guest-utils-nox
|
||||||
|
vpnc
|
||||||
|
wireless-regdb
|
||||||
|
wireless_tools
|
||||||
|
wpa_supplicant
|
||||||
|
wvdial
|
||||||
|
xfsprogs
|
||||||
|
xl2tpd
|
||||||
|
zsh
|
98
archiso/pacman.conf
Normal file
98
archiso/pacman.conf
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
#
|
||||||
|
# /etc/pacman.conf
|
||||||
|
#
|
||||||
|
# See the pacman.conf(5) manpage for option and repository directives
|
||||||
|
|
||||||
|
#
|
||||||
|
# GENERAL OPTIONS
|
||||||
|
#
|
||||||
|
[options]
|
||||||
|
# The following paths are commented out with their default values listed.
|
||||||
|
# If you wish to use different paths, uncomment and update the paths.
|
||||||
|
#RootDir = /
|
||||||
|
#DBPath = /var/lib/pacman/
|
||||||
|
#CacheDir = /var/cache/pacman/pkg/
|
||||||
|
#LogFile = /var/log/pacman.log
|
||||||
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
|
HoldPkg = pacman glibc
|
||||||
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
|
#CleanMethod = KeepInstalled
|
||||||
|
Architecture = auto
|
||||||
|
|
||||||
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
#IgnorePkg =
|
||||||
|
#IgnoreGroup =
|
||||||
|
|
||||||
|
#NoUpgrade =
|
||||||
|
#NoExtract =
|
||||||
|
|
||||||
|
# Misc options
|
||||||
|
#UseSyslog
|
||||||
|
#Color
|
||||||
|
#NoProgressBar
|
||||||
|
# We cannot check disk space from within a chroot environment
|
||||||
|
#CheckSpace
|
||||||
|
#VerbosePkgLists
|
||||||
|
ParallelDownloads = 5
|
||||||
|
|
||||||
|
# By default, pacman accepts packages signed by keys that its local keyring
|
||||||
|
# trusts (see pacman-key and its man page), as well as unsigned packages.
|
||||||
|
SigLevel = Required DatabaseOptional
|
||||||
|
LocalFileSigLevel = Optional
|
||||||
|
#RemoteFileSigLevel = Required
|
||||||
|
|
||||||
|
# NOTE: You must run `pacman-key --init` before first using pacman; the local
|
||||||
|
# keyring can then be populated with the keys of all official Arch Linux
|
||||||
|
# packagers with `pacman-key --populate archlinux`.
|
||||||
|
|
||||||
|
#
|
||||||
|
# REPOSITORIES
|
||||||
|
# - can be defined here or included from another file
|
||||||
|
# - pacman will search repositories in the order defined here
|
||||||
|
# - local/custom mirrors can be added here or in separate files
|
||||||
|
# - repositories listed first will take precedence when packages
|
||||||
|
# have identical names, regardless of version number
|
||||||
|
# - URLs will have $repo replaced by the name of the current repo
|
||||||
|
# - URLs will have $arch replaced by the name of the architecture
|
||||||
|
#
|
||||||
|
# Repository entries are of the format:
|
||||||
|
# [repo-name]
|
||||||
|
# Server = ServerName
|
||||||
|
# Include = IncludePath
|
||||||
|
#
|
||||||
|
# The header [repo-name] is crucial - it must be present and
|
||||||
|
# uncommented to enable the repo.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The testing repositories are disabled by default. To enable, uncomment the
|
||||||
|
# repo name header and Include lines. You can add preferred servers immediately
|
||||||
|
# after the header, and they will be used before the default mirrors.
|
||||||
|
|
||||||
|
#[core-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[core]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
#[extra-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
# If you want to run 32 bit applications on your x86_64 system,
|
||||||
|
# enable the multilib repositories as required here.
|
||||||
|
|
||||||
|
#[multilib-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
#[multilib]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
# An example of a custom package repository. See the pacman manpage for
|
||||||
|
# tips on creating your own repositories.
|
||||||
|
#[custom]
|
||||||
|
#SigLevel = Optional TrustAll
|
||||||
|
#Server = file:///home/custompkgs
|
27
archiso/profiledef.sh
Normal file
27
archiso/profiledef.sh
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
|
||||||
|
iso_name="archlinux"
|
||||||
|
iso_label="ARCH_$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m)"
|
||||||
|
iso_publisher="Arch Linux <https://archlinux.org>"
|
||||||
|
iso_application="Arch Linux Live/Rescue DVD"
|
||||||
|
iso_version="$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y.%m.%d)"
|
||||||
|
install_dir="arch"
|
||||||
|
buildmodes=('iso')
|
||||||
|
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
|
||||||
|
'uefi-ia32.systemd-boot.esp' 'uefi-x64.systemd-boot.esp'
|
||||||
|
'uefi-ia32.systemd-boot.eltorito' 'uefi-x64.systemd-boot.eltorito')
|
||||||
|
arch="x86_64"
|
||||||
|
pacman_conf="pacman.conf"
|
||||||
|
airootfs_image_type="squashfs"
|
||||||
|
airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size' '1M')
|
||||||
|
bootstrap_tarball_compression=('zstd' '-c' '-T0' '--auto-threads=logical' '--long' '-19')
|
||||||
|
file_permissions=(
|
||||||
|
["/etc/shadow"]="0:0:400"
|
||||||
|
["/root"]="0:0:750"
|
||||||
|
["/root/.automated_script.sh"]="0:0:755"
|
||||||
|
["/root/.gnupg"]="0:0:700"
|
||||||
|
["/usr/local/bin/choose-mirror"]="0:0:755"
|
||||||
|
["/usr/local/bin/Installation_guide"]="0:0:755"
|
||||||
|
["/usr/local/bin/livecd-sound"]="0:0:755"
|
||||||
|
)
|
28
archiso/syslinux/archiso_head.cfg
Normal file
28
archiso/syslinux/archiso_head.cfg
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
SERIAL 0 115200
|
||||||
|
UI vesamenu.c32
|
||||||
|
MENU TITLE Arch Linux
|
||||||
|
MENU BACKGROUND splash.png
|
||||||
|
|
||||||
|
MENU WIDTH 78
|
||||||
|
MENU MARGIN 4
|
||||||
|
MENU ROWS 7
|
||||||
|
MENU VSHIFT 10
|
||||||
|
MENU TABMSGROW 14
|
||||||
|
MENU CMDLINEROW 14
|
||||||
|
MENU HELPMSGROW 16
|
||||||
|
MENU HELPMSGENDROW 29
|
||||||
|
|
||||||
|
# Refer to https://wiki.syslinux.org/wiki/index.php/Comboot/menu.c32
|
||||||
|
|
||||||
|
MENU COLOR border 30;44 #40ffffff #a0000000 std
|
||||||
|
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
|
||||||
|
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
|
||||||
|
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
|
||||||
|
MENU COLOR help 37;40 #c0ffffff #a0000000 std
|
||||||
|
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
|
||||||
|
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
|
||||||
|
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
|
||||||
|
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
|
||||||
|
|
||||||
|
MENU CLEAR
|
||||||
|
MENU IMMEDIATE
|
32
archiso/syslinux/archiso_pxe-linux.cfg
Normal file
32
archiso/syslinux/archiso_pxe-linux.cfg
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
LABEL arch64_nbd
|
||||||
|
TEXT HELP
|
||||||
|
Boot the Arch Linux install medium using NBD.
|
||||||
|
It allows you to install Arch Linux or perform system maintenance.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Arch Linux install medium (x86_64, NBD)
|
||||||
|
LINUX ::/%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
|
||||||
|
INITRD ::/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
|
||||||
|
APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% archiso_nbd_srv=${pxeserver} cms_verify=y
|
||||||
|
SYSAPPEND 3
|
||||||
|
|
||||||
|
LABEL arch64_nfs
|
||||||
|
TEXT HELP
|
||||||
|
Boot the Arch Linux live medium using NFS.
|
||||||
|
It allows you to install Arch Linux or perform system maintenance.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Arch Linux install medium (x86_64, NFS)
|
||||||
|
LINUX ::/%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
|
||||||
|
INITRD ::/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
|
||||||
|
APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt cms_verify=y
|
||||||
|
SYSAPPEND 3
|
||||||
|
|
||||||
|
LABEL arch64_http
|
||||||
|
TEXT HELP
|
||||||
|
Boot the Arch Linux live medium using HTTP.
|
||||||
|
It allows you to install Arch Linux or perform system maintenance.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Arch Linux install medium (x86_64, HTTP)
|
||||||
|
LINUX ::/%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
|
||||||
|
INITRD ::/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
|
||||||
|
APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ cms_verify=y
|
||||||
|
SYSAPPEND 3
|
5
archiso/syslinux/archiso_pxe.cfg
Normal file
5
archiso/syslinux/archiso_pxe.cfg
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
INCLUDE archiso_head.cfg
|
||||||
|
|
||||||
|
INCLUDE archiso_pxe-linux.cfg
|
||||||
|
|
||||||
|
INCLUDE archiso_tail.cfg
|
20
archiso/syslinux/archiso_sys-linux.cfg
Normal file
20
archiso/syslinux/archiso_sys-linux.cfg
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
LABEL arch64
|
||||||
|
TEXT HELP
|
||||||
|
Boot the Arch Linux install medium on BIOS.
|
||||||
|
It allows you to install Arch Linux or perform system maintenance.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Arch Linux install medium (x86_64, BIOS)
|
||||||
|
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
|
||||||
|
INITRD /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
|
||||||
|
APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID%
|
||||||
|
|
||||||
|
# Accessibility boot option
|
||||||
|
LABEL arch64speech
|
||||||
|
TEXT HELP
|
||||||
|
Boot the Arch Linux install medium on BIOS with speakup screen reader.
|
||||||
|
It allows you to install Arch Linux or perform system maintenance with speech feedback.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Arch Linux install medium (x86_64, BIOS) with ^speech
|
||||||
|
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
|
||||||
|
INITRD /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
|
||||||
|
APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on
|
8
archiso/syslinux/archiso_sys.cfg
Normal file
8
archiso/syslinux/archiso_sys.cfg
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
INCLUDE archiso_head.cfg
|
||||||
|
|
||||||
|
DEFAULT arch64
|
||||||
|
TIMEOUT 150
|
||||||
|
|
||||||
|
INCLUDE archiso_sys-linux.cfg
|
||||||
|
|
||||||
|
INCLUDE archiso_tail.cfg
|
35
archiso/syslinux/archiso_tail.cfg
Normal file
35
archiso/syslinux/archiso_tail.cfg
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
LABEL existing
|
||||||
|
TEXT HELP
|
||||||
|
Boot an existing operating system.
|
||||||
|
Press TAB to edit the disk and partition number to boot.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Boot existing OS
|
||||||
|
COM32 chain.c32
|
||||||
|
APPEND hd0 0
|
||||||
|
|
||||||
|
# https://www.memtest.org/
|
||||||
|
LABEL memtest
|
||||||
|
MENU LABEL Run Memtest86+ (RAM test)
|
||||||
|
LINUX /boot/memtest86+/memtest
|
||||||
|
|
||||||
|
# https://wiki.syslinux.org/wiki/index.php/Hdt_(Hardware_Detection_Tool)
|
||||||
|
LABEL hdt
|
||||||
|
MENU LABEL Hardware Information (HDT)
|
||||||
|
COM32 hdt.c32
|
||||||
|
APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz
|
||||||
|
|
||||||
|
LABEL reboot
|
||||||
|
TEXT HELP
|
||||||
|
Reboot computer.
|
||||||
|
The computer's firmware must support APM.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Reboot
|
||||||
|
COM32 reboot.c32
|
||||||
|
|
||||||
|
LABEL poweroff
|
||||||
|
TEXT HELP
|
||||||
|
Power off computer.
|
||||||
|
The computer's firmware must support APM.
|
||||||
|
ENDTEXT
|
||||||
|
MENU LABEL Power Off
|
||||||
|
COM32 poweroff.c32
|
BIN
archiso/syslinux/splash.png
Normal file
BIN
archiso/syslinux/splash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
11
archiso/syslinux/syslinux.cfg
Normal file
11
archiso/syslinux/syslinux.cfg
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
DEFAULT select
|
||||||
|
|
||||||
|
LABEL select
|
||||||
|
COM32 whichsys.c32
|
||||||
|
APPEND -pxe- pxe -sys- sys -iso- sys
|
||||||
|
|
||||||
|
LABEL pxe
|
||||||
|
CONFIG archiso_pxe.cfg
|
||||||
|
|
||||||
|
LABEL sys
|
||||||
|
CONFIG archiso_sys.cfg
|
Loading…
Reference in a new issue