diff --git a/configs/kboot.conf b/configs/kboot.conf new file mode 100644 index 00000000..80deacbd --- /dev/null +++ b/configs/kboot.conf @@ -0,0 +1,6 @@ +timeout=100 +default=archpower_install_xenon + +archpower_install_xenon="dvd0:/arch/boot/ppc/vmlinuz-linux-xenon arch=ppc archisobasedir=arch archisolabel=ARCH_202606 initrd=dvd0:/arch/boot/ppc/initramfs-linux-xenon.img coherent_pool=16M read-only" + +archpower_install_xenon_usb="uda1:/arch/boot/ppc/vmlinuz-linux-xenon arch=ppc archisobasedir=arch archisolabel=ARCH initrd=uda1:/arch/boot/ppc/initramfs-linux-xenon.img coherent_pool=16M read-only" diff --git a/configs/releng-xenon/airootfs/etc/hostname b/configs/releng-xenon/airootfs/etc/hostname new file mode 100644 index 00000000..2dbe21eb --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/hostname @@ -0,0 +1 @@ +archiso diff --git a/configs/releng-xenon/airootfs/etc/initcpio/hooks/xenon b/configs/releng-xenon/airootfs/etc/initcpio/hooks/xenon new file mode 100644 index 00000000..a0bad430 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/initcpio/hooks/xenon @@ -0,0 +1,8 @@ +run_hook() { + mkdir -p /dev/disk/by-label + local label dev + for dev in /dev/sr0 /dev/sd*; do + label=$(blkid "$dev" -s LABEL -o value 2>/dev/null) + [ -n "$label" ] && ln -sf "../../${dev##*/}" "/dev/disk/by-label/$label" + done +} diff --git a/configs/releng-xenon/airootfs/etc/initcpio/install/xenon b/configs/releng-xenon/airootfs/etc/initcpio/install/xenon new file mode 100644 index 00000000..8535c164 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/initcpio/install/xenon @@ -0,0 +1,5 @@ +#!/bin/bash +build() { + add_runscript + add_binary blkid +} diff --git a/configs/releng-xenon/airootfs/etc/locale.conf b/configs/releng-xenon/airootfs/etc/locale.conf new file mode 100644 index 00000000..f9c983cc --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/locale.conf @@ -0,0 +1 @@ +LANG=C.UTF-8 diff --git a/configs/releng-xenon/airootfs/etc/mkinitcpio.conf.d/archiso.conf b/configs/releng-xenon/airootfs/etc/mkinitcpio.conf.d/archiso.conf new file mode 100644 index 00000000..e20eb64e --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/mkinitcpio.conf.d/archiso.conf @@ -0,0 +1,3 @@ +HOOKS=(base udev modconf xenon archiso archiso_loop_mnt block filesystems keyboard) +COMPRESSION="zstd" +COMPRESSION_OPTIONS=(-3 -T0) diff --git a/configs/releng-xenon/airootfs/etc/mkinitcpio.d/linux-xenon.preset b/configs/releng-xenon/airootfs/etc/mkinitcpio.d/linux-xenon.preset new file mode 100644 index 00000000..2f7d60f6 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/mkinitcpio.d/linux-xenon.preset @@ -0,0 +1,8 @@ +# mkinitcpio preset file for the 'linux' package on archiso + +PRESETS=('archiso') + +ALL_kver='/boot/vmlinuz-linux-xenon' +ALL_config='/etc/mkinitcpio.conf.d/archiso.conf' + +archiso_image="/boot/initramfs-linux-xenon.img" diff --git a/configs/releng-xenon/airootfs/etc/mkinitcpio.d/linux.preset b/configs/releng-xenon/airootfs/etc/mkinitcpio.d/linux.preset new file mode 100644 index 00000000..1c998b98 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/mkinitcpio.d/linux.preset @@ -0,0 +1,8 @@ +# mkinitcpio preset file for the 'linux' package on archiso + +PRESETS=('archiso') + +ALL_kver='/boot/vmlinuz-linux-ppc64' +ALL_config='/etc/mkinitcpio.conf.d/archiso.conf' + +archiso_image="/boot/initramfs-linux-ppc64.img" diff --git a/configs/releng-xenon/airootfs/etc/motd b/configs/releng-xenon/airootfs/etc/motd new file mode 100644 index 00000000..587d0bb3 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/motd @@ -0,0 +1,15 @@ +To install ArchPOWER follow the guides: +https://github.com/kth5/archpower/wiki + +For anything architecture independent, the upstream Archlinux +Installation Guide is bliss: +https://wiki.archlinux.org/title/Installation_guide + +For Wi-Fi, authenticate to the wireless network using the iwctl utility. +For mobile broadband (WWAN) modems, connect with the mmcli 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 Installation_guide. + +                                           diff --git a/configs/releng-xenon/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook b/configs/releng-xenon/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook new file mode 100644 index 00000000..8dfb9435 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/pacman.d/hooks/zzzz99-remove-custom-hooks-from-airootfs.hook @@ -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/)" diff --git a/configs/releng-xenon/airootfs/etc/pacman.d/mirrorlist b/configs/releng-xenon/airootfs/etc/pacman.d/mirrorlist new file mode 100644 index 00000000..e69de29b diff --git a/configs/releng-xenon/airootfs/etc/passwd b/configs/releng-xenon/airootfs/etc/passwd new file mode 100644 index 00000000..3f1a5e2b --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/passwd @@ -0,0 +1 @@ +root:x:0:0:root:/root:/usr/bin/bash diff --git a/configs/releng-xenon/airootfs/etc/shadow b/configs/releng-xenon/airootfs/etc/shadow new file mode 100644 index 00000000..7edfd69b --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/shadow @@ -0,0 +1 @@ +root::14871:::::: diff --git a/configs/releng-xenon/airootfs/etc/ssh/sshd_config b/configs/releng-xenon/airootfs/etc/ssh/sshd_config new file mode 100644 index 00000000..93f7d63a --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/ssh/sshd_config @@ -0,0 +1,116 @@ +# $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $ + +# This is the sshd server system-wide configuration file. See +# sshd_config(5) for more information. + +# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/bin + +# The strategy used for options in the default sshd_config shipped with +# OpenSSH is to specify options with their default value where +# possible, but leave them commented. Uncommented options override the +# default value. + +#Port 22 +#AddressFamily any +#ListenAddress 0.0.0.0 +#ListenAddress :: + +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_ecdsa_key +#HostKey /etc/ssh/ssh_host_ed25519_key + +# Ciphers and keying +#RekeyLimit default none + +# Logging +#SyslogFacility AUTH +#LogLevel INFO + +# Authentication: + +#LoginGraceTime 2m +PermitRootLogin yes +#StrictModes yes +#MaxAuthTries 6 +#MaxSessions 10 + +#PubkeyAuthentication yes + +# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 +# but this is overridden so installations will only check .ssh/authorized_keys +AuthorizedKeysFile .ssh/authorized_keys + +#AuthorizedPrincipalsFile none + +#AuthorizedKeysCommand none +#AuthorizedKeysCommandUser nobody + +# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts +#HostbasedAuthentication no +# Change to yes if you don't trust ~/.ssh/known_hosts for +# HostbasedAuthentication +#IgnoreUserKnownHosts no +# Don't read the user's ~/.rhosts and ~/.shosts files +#IgnoreRhosts yes + +# To disable tunneled clear text passwords, change to no here! +#PasswordAuthentication yes +#PermitEmptyPasswords no + +# Change to no to disable s/key passwords +#KbdInteractiveAuthentication yes + +# Kerberos options +#KerberosAuthentication no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes +#KerberosGetAFSToken no + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the KbdInteractiveAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via KbdInteractiveAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and KbdInteractiveAuthentication to 'no'. +UsePAM yes + +#AllowAgentForwarding yes +#AllowTcpForwarding yes +#GatewayPorts no +#X11Forwarding no +#X11DisplayOffset 10 +#X11UseLocalhost yes +#PermitTTY yes +PrintMotd no # pam does that +#PrintLastLog yes +#TCPKeepAlive yes +#PermitUserEnvironment no +#Compression delayed +#ClientAliveInterval 0 +#ClientAliveCountMax 3 +#UseDNS no +#PidFile /run/sshd.pid +#MaxStartups 10:30:100 +#PermitTunnel no +#ChrootDirectory none +#VersionAddendum none + +# no default banner path +#Banner none + +# override default of no subsystems +Subsystem sftp /usr/lib/ssh/sftp-server + +# Example of overriding settings on a per-user basis +#Match User anoncvs +# X11Forwarding no +# AllowTcpForwarding no +# PermitTTY no +# ForceCommand cvs server diff --git a/configs/releng-xenon/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf b/configs/releng-xenon/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf new file mode 100644 index 00000000..b69850df --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/journald.conf.d/volatile-storage.conf @@ -0,0 +1,2 @@ +[Journal] +Storage=volatile diff --git a/configs/releng-xenon/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf b/configs/releng-xenon/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf new file mode 100644 index 00000000..f3ecb393 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/logind.conf.d/do-not-suspend.conf @@ -0,0 +1,4 @@ +[Login] +HandleSuspendKey=ignore +HandleHibernateKey=ignore +HandleLidSwitch=ignore diff --git a/configs/releng-xenon/airootfs/etc/systemd/network/20-ethernet.network b/configs/releng-xenon/airootfs/etc/systemd/network/20-ethernet.network new file mode 100644 index 00000000..0d5b7b78 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/network/20-ethernet.network @@ -0,0 +1,22 @@ +[Match] +Type=ether +# Exclude virtual Ethernet interfaces +Kind=!* + +[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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/network/20-wlan.network b/configs/releng-xenon/airootfs/etc/systemd/network/20-wlan.network new file mode 100644 index 00000000..89c0b493 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/network/20-wlan.network @@ -0,0 +1,20 @@ +[Match] +Type=wlan + +[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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/network/20-wwan.network b/configs/releng-xenon/airootfs/etc/systemd/network/20-wwan.network new file mode 100644 index 00000000..befba8d5 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/network/20-wwan.network @@ -0,0 +1,19 @@ +[Match] +Type=wwan + +[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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf b/configs/releng-xenon/airootfs/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf new file mode 100644 index 00000000..0e9ceb4e --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/networkd.conf.d/ipv6-privacy-extensions.conf @@ -0,0 +1,2 @@ +[Network] +IPv6PrivacyExtensions=yes diff --git a/configs/releng-xenon/airootfs/etc/systemd/resolved.conf.d/archiso.conf b/configs/releng-xenon/airootfs/etc/systemd/resolved.conf.d/archiso.conf new file mode 100644 index 00000000..636f3bd6 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/resolved.conf.d/archiso.conf @@ -0,0 +1,4 @@ +# Default systemd-resolved configuration for archiso + +[Resolve] +MulticastDNS=yes diff --git a/configs/releng-xenon/airootfs/etc/systemd/system/choose-mirror.service b/configs/releng-xenon/airootfs/etc/systemd/system/choose-mirror.service new file mode 100644 index 00000000..b6a3562a --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/system/choose-mirror.service @@ -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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/configs/releng-xenon/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount new file mode 100644 index 00000000..038961e4 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount @@ -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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/configs/releng-xenon/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf new file mode 100644 index 00000000..b9d22eb8 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin root - $TERM diff --git a/configs/releng-xenon/airootfs/etc/systemd/system/livecd-alsa-unmuter.service b/configs/releng-xenon/airootfs/etc/systemd/system/livecd-alsa-unmuter.service new file mode 100644 index 00000000..03db4b95 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/system/livecd-alsa-unmuter.service @@ -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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/system/livecd-talk.service b/configs/releng-xenon/airootfs/etc/systemd/system/livecd-talk.service new file mode 100644 index 00000000..b38df22c --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/system/livecd-talk.service @@ -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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/system/pacman-init.service b/configs/releng-xenon/airootfs/etc/systemd/system/pacman-init.service new file mode 100644 index 00000000..b8248843 --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/system/pacman-init.service @@ -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 diff --git a/configs/releng-xenon/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf b/configs/releng-xenon/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf new file mode 100644 index 00000000..c9f9bcea --- /dev/null +++ b/configs/releng-xenon/airootfs/etc/systemd/system/systemd-networkd-wait-online.service.d/wait-for-only-one-interface.conf @@ -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 diff --git a/configs/releng-xenon/airootfs/root/CONTRIBUTORS.txt b/configs/releng-xenon/airootfs/root/CONTRIBUTORS.txt new file mode 100644 index 00000000..a24346e2 --- /dev/null +++ b/configs/releng-xenon/airootfs/root/CONTRIBUTORS.txt @@ -0,0 +1,3 @@ +== Patreon +* kouta-kun +* ReDave diff --git a/configs/releng-xenon/airootfs/root/customize_airootfs.sh b/configs/releng-xenon/airootfs/root/customize_airootfs.sh new file mode 100644 index 00000000..dfd80306 --- /dev/null +++ b/configs/releng-xenon/airootfs/root/customize_airootfs.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -e -u -x + +# Warning: customize_airootfs.sh is deprecated! Support for it will be removed in a future archiso version. + +# XXX Avoid error in step "Creating a list of installed packages on live-enviroment..." +pacman-key --init +pacman-key --populate archpower diff --git a/configs/releng-xenon/airootfs/usr/local/bin/Installation_guide b/configs/releng-xenon/airootfs/usr/local/bin/Installation_guide new file mode 100644 index 00000000..42667548 --- /dev/null +++ b/configs/releng-xenon/airootfs/usr/local/bin/Installation_guide @@ -0,0 +1,5 @@ +#!/bin/sh +# +# SPDX-License-Identifier: GPL-3.0-or-later + +exec lynx 'https://wiki.archlinux.org/title/Installation_guide' diff --git a/configs/releng-xenon/airootfs/usr/local/bin/livecd-sound b/configs/releng-xenon/airootfs/usr/local/bin/livecd-sound new file mode 100644 index 00000000..baae0d26 --- /dev/null +++ b/configs/releng-xenon/airootfs/usr/local/bin/livecd-sound @@ -0,0 +1,248 @@ +#!/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 +# $2 +# $3 +unmute_and_set_level(){ + { [ "$3" ] &&[ "$2" ] && [ "$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 +# $2 +mute_and_zero_level() +{ + { [ "$1" ] && [ "$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 +# $2 +# $3 "on" | "off" +switch_control() +{ + { [ "$3" ] && [ "$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 +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 | "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" -eq 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 [[ $# -eq 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 diff --git a/configs/releng-xenon/airootfs/usr/local/share/livecd-sound/asound.conf.in b/configs/releng-xenon/airootfs/usr/local/share/livecd-sound/asound.conf.in new file mode 100644 index 00000000..3f9c7aa0 --- /dev/null +++ b/configs/releng-xenon/airootfs/usr/local/share/livecd-sound/asound.conf.in @@ -0,0 +1,3 @@ +Defaults node +defaults.ctl.card %card%; +defaults.pcm.card %card%; diff --git a/configs/releng-xenon/boot/yaboot b/configs/releng-xenon/boot/yaboot new file mode 100644 index 00000000..9020a7aa Binary files /dev/null and b/configs/releng-xenon/boot/yaboot differ diff --git a/configs/releng-xenon/boot/yaboot.chrp b/configs/releng-xenon/boot/yaboot.chrp new file mode 100644 index 00000000..69e116f6 Binary files /dev/null and b/configs/releng-xenon/boot/yaboot.chrp differ diff --git a/configs/releng-xenon/boot/yaboot.conf b/configs/releng-xenon/boot/yaboot.conf new file mode 100644 index 00000000..db936cfc --- /dev/null +++ b/configs/releng-xenon/boot/yaboot.conf @@ -0,0 +1,9 @@ +device=cd: + +timeout=100 + +image=/arch/boot/ppc/vmlinuz-linux-ppc64 + label=archpower_install_ppc64 + append="quiet arch=ppc archisobasedir=arch archisolabel=ARCH_202203" + initrd=/arch/boot/ppc/initramfs-linux-ppc64.img + read-only diff --git a/configs/releng-xenon/grub/grub.cfg b/configs/releng-xenon/grub/grub.cfg new file mode 100644 index 00000000..ea22469c --- /dev/null +++ b/configs/releng-xenon/grub/grub.cfg @@ -0,0 +1,18 @@ + +menuentry 'ArchPOWER Install (ppc6432)' { + set gfxpayload=keep + insmod normal + echo 'Loading Linux linux-ppc64 ...' + linux /arch/boot/ppc/vmlinuz-linux-ppc64 --- loglevel=3 arch=ppc archisobasedir=arch archisolabel=ARCH_202209 + echo 'Loading initial ramdisk ...' + initrd /arch/boot/ppc/initramfs-linux-ppc64.img +} + +menuentry 'ArchPOWER Install (serial hvc0 as console) (ppc6432)' { + set gfxpayload=keep + insmod normal + echo 'Loading Linux linux-ppc64 ...' + linux /arch/boot/ppc/vmlinuz-linux-ppc64 --- console=hvc0 loglevel=3 arch=ppc archisobasedir=arch archisolabel=ARCH_202209 + echo 'Loading initial ramdisk ...' + initrd /arch/boot/ppc/initramfs-linux-ppc64.img +} diff --git a/configs/releng-xenon/kboot/kboot.conf b/configs/releng-xenon/kboot/kboot.conf new file mode 100644 index 00000000..b15eb0c4 --- /dev/null +++ b/configs/releng-xenon/kboot/kboot.conf @@ -0,0 +1,6 @@ +timeout=5 +default=archpower_install_xenon + +archpower_install_xenon="dvd0:/arch/boot/ppc/vmlinuz-linux-xenon arch=ppc archisobasedir=arch archisolabel=ARCH_202606 initrd=dvd0:/arch/boot/ppc/initramfs-linux-xenon.img coherent_pool=16M read-only" + +archpower_install_xenon_usb="uda1:/arch/boot/ppc/vmlinuz-linux-xenon arch=ppc archisobasedir=arch archisolabel=ARCH initrd=uda1:/arch/boot/ppc/initramfs-linux-xenon.img coherent_pool=16M read-only" diff --git a/configs/releng-xenon/packages.ppc b/configs/releng-xenon/packages.ppc new file mode 100644 index 00000000..e4378445 --- /dev/null +++ b/configs/releng-xenon/packages.ppc @@ -0,0 +1,140 @@ +## REQUIRED +# During install it is assumed all dependencies of the `base` meta-package are already installed. +# The order in this file reflects the install order of each package (includes dependencies). +# This package must come first to avoid errors when other packages are installed. +base + +## ArchPOWER +# Packages that do not come from `releng` and the kernel package. +# +# testing-only packages: none at the moment +# These packages are enabled during development and commented out for release isos. +archpower-keyring +brotli +haveged +linux-xenon +linux-xenon-headers + +## Arch Linux +# Packages that come from `releng`, leave them either enabled or commented. +# It facilitates diffs with an updated `releng` or other `releng-ppc*` configs. +alsa-utils +#amd-ucode +arch-install-scripts +#archinstall +#b43-fwcutter +#base +bind +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 +#fsarchiver +gnu-netcat +#gpart +#gpm +#gptfdisk +grml-zsh-config +#grub +hdparm +#hyperv +#intel-ucode +irssi +#iw +iwd +#jfsutils +kitty-terminfo +#less +lftp +#libfido2 +#libusb-compat +#linux +linux-atm +#livecd-sounds +lsscsi +lvm2 +lynx +man-db +man-pages +#mc +mdadm +#memtest86+ +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 +openssh +#openvpn +partclone +parted +partimage +#pcsclite +ppp +pptpclient +#pv +#qemu-guest-agent +#refind +#reflector +#reiserfsprogs +rp-pppoe +rsync +rxvt-unicode-terminfo +#screen +sdparm +#sg3_utils +smartmontools +#sof-firmware +squashfs-tools +sudo +#syslinux +systemd-resolvconf +#tcpdump +#terminus-font +testdisk +tmux +#tpm2-tss +#udftools +usb_modeswitch +#usbmuxd +usbutils +vim +#virtualbox-guest-utils-nox +vpnc +wireless-regdb +wireless_tools +wpa_supplicant +wvdial +xfsprogs +xl2tpd +zsh diff --git a/configs/releng-xenon/pacman.conf b/configs/releng-xenon/pacman.conf new file mode 100644 index 00000000..2bcb1572 --- /dev/null +++ b/configs/releng-xenon/pacman.conf @@ -0,0 +1,97 @@ +# +# /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 = powerpc +SigLevel = Never +DisableSandbox + +# 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. + +#[stage-any] +#Server = https://repo.archlinuxpower.org/stage/any + +#[stage] +#Server = https://repo.archlinuxpower.org/stage/$arch + +#[testing-any] +#Server = https://repo.archlinuxpower.org/testing/any + +#[testing] +#Server = https://repo.archlinuxpower.org/testing/$arch + +[base-any] +Server = https://repo.archlinuxpower.org/base/any + +[base] +Server = https://repo.archlinuxpower.org/base/$arch + +# 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 diff --git a/configs/releng-xenon/profiledef.sh b/configs/releng-xenon/profiledef.sh new file mode 100644 index 00000000..463de014 --- /dev/null +++ b/configs/releng-xenon/profiledef.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# shellcheck disable=SC2034 + +iso_name="archpower" +iso_label="ARCHPOWER_INSTALL_$(date +%Y%m)" +iso_publisher="ArchPOWER " +iso_application="ArchPOWER Xenon Install CD" +iso_version="$(date +%Y.%m.%d)" +install_dir="arch" +buildmodes=('iso') +bootmodes=('ps3_xenon.kboot') +arch="ppc" +pacman_conf="pacman.conf" +airootfs_image_type="squashfs" +airootfs_image_tool_options=('-comp' 'xz' '-b' '256K' '-Xdict-size' '256K' '-mem' '128M' '-small-readers' '1' '-block-readers' '1') +file_permissions=( + ["/etc/shadow"]="0:0:400" + ["/root"]="0:0:750" + ["/root/.automated_script.sh"]="0:0:755" + ["/root/.bash_profile"]="0:0:755" + ["/usr/local/bin/Installation_guide"]="0:0:755" + ["/usr/local/bin/livecd-sound"]="0:0:755" +) diff --git a/configs/releng-xenon/yaboot/boot/yaboot b/configs/releng-xenon/yaboot/boot/yaboot new file mode 100644 index 00000000..9020a7aa Binary files /dev/null and b/configs/releng-xenon/yaboot/boot/yaboot differ diff --git a/configs/releng-xenon/yaboot/boot/yaboot.chrp b/configs/releng-xenon/yaboot/boot/yaboot.chrp new file mode 100644 index 00000000..69e116f6 Binary files /dev/null and b/configs/releng-xenon/yaboot/boot/yaboot.chrp differ diff --git a/configs/releng-xenon/yaboot/boot/yaboot.conf b/configs/releng-xenon/yaboot/boot/yaboot.conf new file mode 100644 index 00000000..db936cfc --- /dev/null +++ b/configs/releng-xenon/yaboot/boot/yaboot.conf @@ -0,0 +1,9 @@ +device=cd: + +timeout=100 + +image=/arch/boot/ppc/vmlinuz-linux-ppc64 + label=archpower_install_ppc64 + append="quiet arch=ppc archisobasedir=arch archisolabel=ARCH_202203" + initrd=/arch/boot/ppc/initramfs-linux-ppc64.img + read-only