From 7646f26e425b0997818c450543b9bf5c70b6a26e Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Mon, 26 Oct 2015 17:50:31 +0100 Subject: initial commit Signed-off-by: Florian Pritz --- .gitignore | 2 + airootfs/etc/fstab | 0 airootfs/etc/hostname | 1 + airootfs/etc/locale.conf | 1 + airootfs/etc/machine-id | 0 airootfs/etc/systemd/network/10-ethernet.network | 5 ++ airootfs/etc/systemd/scripts/choose-mirror | 26 ++++++ airootfs/etc/systemd/system/choose-mirror.service | 10 +++ .../etc/systemd/system/etc-pacman.d-gnupg.mount | 8 ++ .../system/getty@tty1.service.d/autologin.conf | 3 + airootfs/etc/systemd/system/pacman-init.service | 15 ++++ airootfs/etc/udev/rules.d/81-dhcpcd.rules | 0 airootfs/root/.automated_script.sh | 35 ++++++++ airootfs/root/.zlogin | 1 + airootfs/root/customize_airootfs.sh | 57 +++++++++++++ airootfs/root/install.txt | 3 + build.sh | 1 + efiboot | 1 + isolinux | 1 + mkinitcpio.conf | 2 + packages.both | 82 ++++++++++++++++++ packages.i686 | 0 packages.x86_64 | 0 pacman.conf | 96 ++++++++++++++++++++++ rebuild-iso.sh | 16 ++++ syslinux | 1 + 26 files changed, 367 insertions(+) create mode 100644 .gitignore create mode 100644 airootfs/etc/fstab create mode 100644 airootfs/etc/hostname create mode 100644 airootfs/etc/locale.conf create mode 100644 airootfs/etc/machine-id create mode 100644 airootfs/etc/systemd/network/10-ethernet.network create mode 100755 airootfs/etc/systemd/scripts/choose-mirror create mode 100644 airootfs/etc/systemd/system/choose-mirror.service create mode 100644 airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount create mode 100644 airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf create mode 100644 airootfs/etc/systemd/system/pacman-init.service create mode 100644 airootfs/etc/udev/rules.d/81-dhcpcd.rules create mode 100755 airootfs/root/.automated_script.sh create mode 100644 airootfs/root/.zlogin create mode 100755 airootfs/root/customize_airootfs.sh create mode 100644 airootfs/root/install.txt create mode 120000 build.sh create mode 120000 efiboot create mode 120000 isolinux create mode 100644 mkinitcpio.conf create mode 100644 packages.both create mode 100644 packages.i686 create mode 100644 packages.x86_64 create mode 100644 pacman.conf create mode 100755 rebuild-iso.sh create mode 120000 syslinux 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 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 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 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 </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 diff --git a/packages.x86_64 b/packages.x86_64 new file mode 100644 index 0000000..e69de29 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 -- cgit v1.2.3-24-g4f1b