summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--airootfs/etc/fstab0
-rw-r--r--airootfs/etc/hostname1
-rw-r--r--airootfs/etc/locale.conf1
-rw-r--r--airootfs/etc/machine-id0
-rw-r--r--airootfs/etc/systemd/network/10-ethernet.network5
-rwxr-xr-xairootfs/etc/systemd/scripts/choose-mirror26
-rw-r--r--airootfs/etc/systemd/system/choose-mirror.service10
-rw-r--r--airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount8
-rw-r--r--airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf3
-rw-r--r--airootfs/etc/systemd/system/pacman-init.service15
-rw-r--r--airootfs/etc/udev/rules.d/81-dhcpcd.rules0
-rwxr-xr-xairootfs/root/.automated_script.sh35
-rw-r--r--airootfs/root/.zlogin1
-rwxr-xr-xairootfs/root/customize_airootfs.sh57
-rw-r--r--airootfs/root/install.txt3
l---------build.sh1
l---------efiboot1
l---------isolinux1
-rw-r--r--mkinitcpio.conf2
-rw-r--r--packages.both82
-rw-r--r--packages.i6860
-rw-r--r--packages.x86_640
-rw-r--r--pacman.conf96
-rwxr-xr-xrebuild-iso.sh16
l---------syslinux1
26 files changed, 367 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2113d9e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+out
+work
diff --git a/airootfs/etc/fstab b/airootfs/etc/fstab
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airootfs/etc/fstab
diff --git a/airootfs/etc/hostname b/airootfs/etc/hostname
new file mode 100644
index 0000000..2dbe21e
--- /dev/null
+++ b/airootfs/etc/hostname
@@ -0,0 +1 @@
+archiso
diff --git a/airootfs/etc/locale.conf b/airootfs/etc/locale.conf
new file mode 100644
index 0000000..01ec548
--- /dev/null
+++ b/airootfs/etc/locale.conf
@@ -0,0 +1 @@
+LANG=en_US.UTF-8
diff --git a/airootfs/etc/machine-id b/airootfs/etc/machine-id
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airootfs/etc/machine-id
diff --git a/airootfs/etc/systemd/network/10-ethernet.network b/airootfs/etc/systemd/network/10-ethernet.network
new file mode 100644
index 0000000..f2578d1
--- /dev/null
+++ b/airootfs/etc/systemd/network/10-ethernet.network
@@ -0,0 +1,5 @@
+[Match]
+Name=e*
+
+[Network]
+DHCP=yes
diff --git a/airootfs/etc/systemd/scripts/choose-mirror b/airootfs/etc/systemd/scripts/choose-mirror
new file mode 100755
index 0000000..0ae0806
--- /dev/null
+++ b/airootfs/etc/systemd/scripts/choose-mirror
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+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)
+[[ $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
diff --git a/airootfs/etc/systemd/system/choose-mirror.service b/airootfs/etc/systemd/system/choose-mirror.service
new file mode 100644
index 0000000..1e4d771
--- /dev/null
+++ b/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=/etc/systemd/scripts/choose-mirror
+
+[Install]
+WantedBy=multi-user.target
diff --git a/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount
new file mode 100644
index 0000000..4eab551
--- /dev/null
+++ b/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
diff --git a/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf
new file mode 100644
index 0000000..d1d8474
--- /dev/null
+++ b/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf
@@ -0,0 +1,3 @@
+[Service]
+ExecStart=
+ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux
diff --git a/airootfs/etc/systemd/system/pacman-init.service b/airootfs/etc/systemd/system/pacman-init.service
new file mode 100644
index 0000000..23b8144
--- /dev/null
+++ b/airootfs/etc/systemd/system/pacman-init.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Initializes Pacman keyring
+Wants=haveged.service
+After=haveged.service
+Requires=etc-pacman.d-gnupg.mount
+After=etc-pacman.d-gnupg.mount
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/bin/pacman-key --init
+ExecStart=/usr/bin/pacman-key --populate archlinux
+
+[Install]
+WantedBy=multi-user.target
diff --git a/airootfs/etc/udev/rules.d/81-dhcpcd.rules b/airootfs/etc/udev/rules.d/81-dhcpcd.rules
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airootfs/etc/udev/rules.d/81-dhcpcd.rules
diff --git a/airootfs/root/.automated_script.sh b/airootfs/root/.automated_script.sh
new file mode 100755
index 0000000..68201c0
--- /dev/null
+++ b/airootfs/root/.automated_script.sh
@@ -0,0 +1,35 @@
+#!/bin/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:// || "${script}" =~ ^ftp:// ]]; then
+ wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null
+ rt=$?
+ else
+ cp "${script}" /tmp/startup_script
+ rt=$?
+ fi
+ if [[ ${rt} -eq 0 ]]; then
+ chmod +x /tmp/startup_script
+ /tmp/startup_script
+ fi
+ fi
+}
+
+if [[ -x $0 ]]; then
+ chmod -x $0
+ automated_script
+fi
diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin
new file mode 100644
index 0000000..f598e43
--- /dev/null
+++ b/airootfs/root/.zlogin
@@ -0,0 +1 @@
+~/.automated_script.sh
diff --git a/airootfs/root/customize_airootfs.sh b/airootfs/root/customize_airootfs.sh
new file mode 100755
index 0000000..cebcfa4
--- /dev/null
+++ b/airootfs/root/customize_airootfs.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+set -e -u
+
+export HOME=/root
+
+sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen
+locale-gen
+
+ln -sf /usr/share/zoneinfo/Europe/Vienna /etc/localtime
+
+usermod -s /usr/bin/zsh root
+cp -aT /etc/skel/ /root/
+chmod 700 /root
+
+rm -f /etc/pacman.d/mirrorlist
+echo -en 'Server = http://mirror.server-speed.net/$repo/os/$arch\n' > /etc/pacman.d/mirrorlist
+echo -en '192.168.4.1 mistral.server-speed.net mistral\n' >> /etc/hosts
+echo -en '192.168.4.103 pearl.server-speed.net mirror.server-speed.net pearl\n' >> /etc/hosts
+sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf
+
+sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf
+sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf
+sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf
+
+systemctl enable pacman-init.service choose-mirror.service
+systemctl set-default multi-user.target
+
+mkdir -p /root/.ssh
+touch /root/.ssh/authorized_keys
+chmod 700 /root/.ssh
+chmod 600 /root/.ssh/authorized_keys
+
+cat <<EOF >/root/.ssh/authorized_keys
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAte43fgKVPKvmwhMQcQRYNm27i2cadOIJvpOFA3jPWHFN2YeqxHvgVbAESLOAO/sJ0MqXlQnBc9rr8PbQd67YP7teOBnXLOfX2mofxGEDtP2mtwneAxkMNJcYtxWjPeKL7LF5tknqPb6dXavm4+gJt27CQFFY6DJ+cD0tUUgh17HG6VGiTXF6AgB9aho/ToaMQZ4vCzztvf94kQK2uBYUXsvx4L62ZrEJbIzfB7fynBbl9+deBqsYmWRCbzaYV77YjwLhk9hI/GsUjLkTAB77WbeWJdk7fgJ/PgI69FRMhRlYASRVBqeek6NLcyQ9x54CrUkOFBC5Q+j4yjsDQN7NBw== flo@Marin
+EOF
+
+systemctl enable systemd-networkd
+systemctl enable systemd-resolved
+systemctl enable sshd
+
+rm /root/{.bashrc,.screenrc,.zshrc}
+
+curl --pinnedpubkey 'sha256//XkpLKx+vdbYKQ7Ry7N+X/plN0nM7MCSFu3rOqywNPCM=' https://git.server-speed.net/users/flo/bin/plain/init_new_user.sh | bash
+
+echo "source .zlogin" >> /root/.zprofile
+
+pacman -Rdd --noconfirm openresolv netctl dhcpcd
+
+trust extract-compat
+
+pacman -Syy
+pkgfile -u
+
+umount /etc/resolv.conf
+ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
+
diff --git a/airootfs/root/install.txt b/airootfs/root/install.txt
new file mode 100644
index 0000000..3c8f171
--- /dev/null
+++ b/airootfs/root/install.txt
@@ -0,0 +1,3 @@
+View this installation guide online at
+https://wiki.archlinux.org/index.php/Installation_Guide
+
diff --git a/build.sh b/build.sh
new file mode 120000
index 0000000..1f70cd4
--- /dev/null
+++ b/build.sh
@@ -0,0 +1 @@
+/usr/share/archiso/configs/releng/build.sh \ No newline at end of file
diff --git a/efiboot b/efiboot
new file mode 120000
index 0000000..7071778
--- /dev/null
+++ b/efiboot
@@ -0,0 +1 @@
+/usr/share/archiso/configs/releng/efiboot/ \ No newline at end of file
diff --git a/isolinux b/isolinux
new file mode 120000
index 0000000..25e8613
--- /dev/null
+++ b/isolinux
@@ -0,0 +1 @@
+/usr/share/archiso/configs/releng/isolinux/ \ No newline at end of file
diff --git a/mkinitcpio.conf b/mkinitcpio.conf
new file mode 100644
index 0000000..2f46da4
--- /dev/null
+++ b/mkinitcpio.conf
@@ -0,0 +1,2 @@
+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"
+COMPRESSION="xz"
diff --git a/packages.both b/packages.both
new file mode 100644
index 0000000..b461792
--- /dev/null
+++ b/packages.both
@@ -0,0 +1,82 @@
+arch-install-scripts
+archzfs-git
+b43-fwcutter
+bash
+binutils
+btrfs-progs
+cifs-utils
+clonezilla
+crda
+curl
+darkhttpd
+ddrescue
+dhclient
+dialog
+dmraid
+dnsmasq
+dnsutils
+dosfstools
+elinks
+ethtool
+f2fs-tools
+fsarchiver
+git
+git
+gnu-netcat
+gpm
+gptfdisk
+grml-zsh-config
+grub
+haveged
+hdparm
+htop
+ipw2100-fw
+ipw2200-fw
+irssi
+lftp
+linux-atm
+lsb-release
+lsof
+mc
+mtools
+mtr
+nfs-utils
+nilfs-utils
+nmap
+ntfs-3g
+ntp
+openconnect
+openssh
+openvpn
+partclone
+parted
+partimage
+pkgfile
+ppp
+pptpclient
+python
+refind-efi
+rfkill
+rp-pppoe
+rsync
+screen
+smartmontools
+socat
+speedtouch
+strace
+sudo
+sysstat
+tcpdump
+testdisk
+tmux
+usb_modeswitch
+vim
+vpnc
+wget
+wget
+wireless_tools
+wpa_actiond
+wvdial
+xl2tpd
+zd1211-firmware
+zsh
diff --git a/packages.i686 b/packages.i686
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages.i686
diff --git a/packages.x86_64 b/packages.x86_64
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages.x86_64
diff --git a/pacman.conf b/pacman.conf
new file mode 100644
index 0000000..d60cad4
--- /dev/null
+++ b/pacman.conf
@@ -0,0 +1,96 @@
+#
+# /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/
+HoldPkg = pacman glibc
+#XferCommand = /usr/bin/curl -C - -f %u > %o
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+#UseDelta = 0.7
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg =
+#IgnoreGroup =
+
+#NoUpgrade =
+#NoExtract =
+
+# Misc options
+#UseSyslog
+#Color
+#TotalDownload
+# We cannot check disk space from within a chroot environment
+#CheckSpace
+#VerbosePkgLists
+
+# 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.
+
+#[testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[core]
+Include = /etc/pacman.d/mirrorlist
+
+[extra]
+Include = /etc/pacman.d/mirrorlist
+
+#[community-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[community]
+Include = /etc/pacman.d/mirrorlist
+
+# zfs
+[demz-repo-core]
+Server = http://demizerone.com/$repo/$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/rebuild-iso.sh b/rebuild-iso.sh
new file mode 100755
index 0000000..aa1b489
--- /dev/null
+++ b/rebuild-iso.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+umask 022
+
+sudo rm -rf work
+sudo ./build.sh -v
+sudo rm -rf work
+
+unset -v latest
+for file in out/archlinux-*.iso; do
+ [[ $file -nt $latest ]] && latest=$file
+done
+
+rsync -tP "$latest" mistral:
+ssh root@mistral cd /home/flo\; ./extract-archiso.sh "${latest##*/}"
diff --git a/syslinux b/syslinux
new file mode 120000
index 0000000..65087e9
--- /dev/null
+++ b/syslinux
@@ -0,0 +1 @@
+/usr/share/archiso/configs/releng/syslinux/ \ No newline at end of file