Draft changes

This commit is contained in:
David Holland 2019-12-03 00:58:58 +00:00
parent 95bfaaf259
commit 580a5a3b80
Signed by: DustVoice
GPG Key ID: 47068995A14EDCA9
37 changed files with 160 additions and 793 deletions

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "livecd/airootfs/etc/skel"]
path = livecd/airootfs/etc/skel
url = git@github.com:DustVoice/dotfiles.git

View File

@ -1,4 +1,5 @@
= DustArch - The complete guide = DustArch\
The complete guide to setting up DustVoice's Arch Linux completely from scratch or by using the DustArch image
David Holland <info@dustvoice.de> David Holland <info@dustvoice.de>
v1.12, 2019-10-24 v1.12, 2019-10-24
:toc: left :toc: left
@ -14,6 +15,7 @@ v1.12, 2019-10-24
This section is aimed at providing help with the general installation of archlinux from within either the custom DustArch live-os, or the official archlinux live-os. This section is aimed at providing help with the general installation of archlinux from within either the custom DustArch live-os, or the official archlinux live-os.
// TODO: remove or move this complete section
[#keyboard_layout] [#keyboard_layout]
=== Change the keyboard layout === Change the keyboard layout
@ -145,6 +147,7 @@ root@archiso ~ # pacman -Sy
After that, you will now be able to install packages with pacman. After that, you will now be able to install packages with pacman.
==== ====
// TODO: Adapt, fill up and shorten
=== Formatting the drive === Formatting the drive
First you have to list all the available drives by issuing First you have to list all the available drives by issuing
@ -356,7 +359,7 @@ root@archiso ~ # pacstrap /mnt base linux linux-firmware $(pacman -Qq | tr '\n'
This will take quite some time depending on your internet connection speed. This will take quite some time depending on your internet connection speed.
After that generate an `fstab` using `genfstab` like so After that generate a `fstab` using `genfstab` like so
[source, console] [source, console]
---- ----
@ -404,13 +407,21 @@ Furthermore you'll probably need an editor so either use
[root@archiso /]# pacman -S nano [root@archiso /]# pacman -S nano
---- ----
or
[source, console] [source, console]
---- ----
[root@archiso /]# pacman -S vim [root@archiso /]# pacman -S vim
---- ----
or
[source, console]
----
[root@archiso /]# pacman -S neovim
----
according to your preference.
// TODO: Move keyboard part here.
==== Changing the keyboard layout ==== Changing the keyboard layout
The first thing you probably wanna do is change the keyboard layout again. For that just follow the instructions in section <<keyboard_layout>>. The first thing you probably wanna do is change the keyboard layout again. For that just follow the instructions in section <<keyboard_layout>>.
@ -530,11 +541,14 @@ To change the password for the current user (the root user) do
and choose a new password. and choose a new password.
After that we are going to create a new user, set the password for this user, make sure the `sudo` package is installed and allow the `wheel` group sudo access. ==== Creating my personal user
We are going to make sure the `fish` shell is installed, create a new user, set the password for this user, make sure the `sudo` package is installed and allow the `wheel` group sudo access.
[source, console] [source, console]
---- ----
[root@archiso /]# useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/fish dustvoice [root@archiso /]# pacman -S fish
[root@archiso /]# useradd -m -p "" -G "adm,audio,floppy,log,network,rfkill,scanner,storage,users,optical,power,wheel" -s /usr/bin/fish dustvoice
[root@archiso /]# passwd dustvoice [root@archiso /]# passwd dustvoice
[root@archiso /]# pacman -S sudo [root@archiso /]# pacman -S sudo
---- ----
@ -543,7 +557,7 @@ We now have to allow the `wheel` group sudo access. For that we edit
[source, console] [source, console]
---- ----
[root@archiso /]# sudo vim /etc/sudoers [root@archiso /]# sudo nvim /etc/sudoers
---- ----
and uncomment the following line and uncomment the following line
@ -582,6 +596,127 @@ dustvoice ALL=(ALL) ALL
to only grant yourself sudo privileges. to only grant yourself sudo privileges.
==== Setting up a home environment
In this step we're going to setup a home environment for both the root and my personal user. Note, that in my case these 2 home environments are equivalent, which is why you execute the follwing commands as the root user first and then `su` into the new user and repeat the same commands.
[source, console]
----
[root@archiso /]# cd ~
[root@archiso ~]# pacman -S git
[root@archiso ~]# git init
[root@archiso ~]# git remote add origin https://github.com/DustVoice/dotfiles.git
[root@archiso ~]# git fetch
[root@archiso ~]# git reset origin/master --hard
[root@archiso ~]# git branch --set-upstream-to=origin/master master
----
Before we'll be able to update the `submodule`, we will have to setup our `gpg` key as a `ssh` key
[source, console]
----
[root@archiso ~]# pacman -S gnupg openssh
[root@archiso ~]# chmod 700 .gnupg
[root@archiso ~]# gpg --card-status
[root@archiso ~]# gpg --card-edit
(insert) gpg/card> fetch
(insert) gpg/card> q
[root@archiso ~]# gpg-connect-agent updatestartuptty /bye
[root@archiso ~]# git remote set-url origin git@github.com:DustVoice/dotfiles.git
[root@archiso ~]# chsh -s /usr/bin/fish
[root@archiso ~]# exit
root@archiso ~ # arch-chroot /mnt
[root@archiso /]# fish
[I] root@archiso /
# cd ~
[I] root@archiso ~
# git submodule update --init --recursive
[I] root@archiso ~
# cd .config/nvim
[I] root@archiso ~/.config/nvim
# echo 'let g:platform = "linux"' >> platform.vim
[I] root@archiso ~/.config/nvim
# echo 'let g:use_autocomplete = 3' >> custom.vim
[I] root@archiso ~/.config/nvim
# echo 'let g:use_clang_format = 1' >> custom.vim
[I] root@archiso ~/.config/nvim
# echo 'let g:use_font = 0' >> custom.vim
[I] root@archiso ~/.config/nvim
# pacman -S make cmake clang jdk-openjdk pyhton pyhton-pip
[I] root@archiso ~/.config/nvim
# pip3 install neovim
[I] root@archiso ~/.config/nvim
# nvim --headless +PlugInstall +qa
[I] root@archiso ~/.config/nvim
# cd plugged/YouCompleteMe
[I] root@archiso ~/.config/nvim/plugged/YouCompleteMe
# python3 install.py --clang-completer --java-completer
[I] root@archiso ~/.config/nvim/plugged/YouCompleteMe
# cd ~
[I] root@archiso ~
#
sudo pacman -S arandr
git clone https://aur.archlinux.org/brave-bin.git
cd brave-bin
makepkg -si
cd ..
rm -rf brave-bin
sudo pacman -S browserpass
...
sudo pacman -S nvidia nvidia-utils opencl-nvidia
nvim /etc/pacman.conf -> multilib
sudo pacman -Sy
git clone https://aur.archlinux.org/davinci-resolve.git
cd davinci-resolve
makepkg -si
set -U fish_user_paths $fish_user_paths /opt/resolve/bin
cd ..
rm -rf davinci-resolve
pacman astyle
pacman doxygen
JUCE
FRUT
pacman ninja
aur obs-studio-git
pacman pass
pacman teamspeak3
aur teamviewer
pacman telegram-desktop
aur tor-browser
pacman discord
pacman vlc
pacman avahi
pacman cups
aur brother-mfc-j497dw
pacman virtualbox
pacman qjackctl
pacman thunderbird
fstab file for win?
----
=== Preparing to boot === Preparing to boot
Now onto installing the boot manager. We will use grub. Now onto installing the boot manager. We will use grub.
@ -621,9 +756,9 @@ If you chose the `UEFI - GPT` variation, you'll first have to mount the `EFI Sys
[source, console] [source, console]
---- ----
[root@archiso /]# mkdir /boot/EFI [root@archiso /]# mkdir /boot
[root@archiso /]# mount /dev/sda1 /boot/EFI [root@archiso /]# mount /dev/sda1 /boot
[root@archiso /]# grub_install --target=x86_64-efi --bootloader=grub_uefi --recheck [root@archiso /]# grub_install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck
---- ----
In all cases, you now have to create the main configuration file In all cases, you now have to create the main configuration file
@ -655,6 +790,7 @@ This outputs the interface status report. To make sure that you really have a wo
If this doesn't work, you probably need to run the following commands If this doesn't work, you probably need to run the following commands
// TODO: Move to user setup pos 1
[source, console] [source, console]
---- ----
[dustvoice@DustArch ~]$ sudo systemctl enable dhcpcd.service [dustvoice@DustArch ~]$ sudo systemctl enable dhcpcd.service
@ -674,6 +810,7 @@ Everything should run smoothly now.
After making sure that you have established an internet connection, you can then proceed to update and upgrade all installed packages by issuing After making sure that you have established an internet connection, you can then proceed to update and upgrade all installed packages by issuing
// TODO: Move to user setup pos 2
[source, console] [source, console]
---- ----
[dustvoice@DustArch ~]$ sudo pacman -Syu [dustvoice@DustArch ~]$ sudo pacman -Syu
@ -692,6 +829,7 @@ If you did the whole previous process out of the original archiso, you will like
First you'll probably want to install the *fish* shell and set it as your default. First you'll probably want to install the *fish* shell and set it as your default.
// TODO: Move to user setup pos -1
[source, console] [source, console]
---- ----
[dustvoice@DustArch ~]$ sudo pacman -S fish [dustvoice@DustArch ~]$ sudo pacman -S fish
@ -731,6 +869,7 @@ dustvoice@DustArch ~> sudo pacman -S gnupg
After that you'll still have to setup `gnupg` correctly. In my case I have my private keys stored on a smartcard. To use it, I'll have to install some packages first After that you'll still have to setup `gnupg` correctly. In my case I have my private keys stored on a smartcard. To use it, I'll have to install some packages first
// TODO: check if maybe only pcsclite is needed with the systemctl enabled
[source, console] [source, console]
---- ----
dustvoice@DustArch ~> sudo pacman -S pcsclite libusb-compat ccid opensc dustvoice@DustArch ~> sudo pacman -S pcsclite libusb-compat ccid opensc
@ -843,15 +982,9 @@ For `asciidoctor` _(will be installed in just a second)_ we also need to install
[source, console] [source, console]
---- ----
dustvoice@DustArch ~ dustvoice@DustArch ~
$ sudo pacman -S python3 wget $ sudo pacman -S python python-pip
dustvoice@DustArch ~
$ wget bootstrap.pypa.io/get-pip.py
dustvoice@DustArch ~
$ sudo python3 get-pip.py
dustvoice@DustArch ~ dustvoice@DustArch ~
$ sudo pip3 install pygments $ sudo pip3 install pygments
dustvoice@DustArch ~
$ rm get-pip.py
---- ----
==== Ruby & Asciidoctor ==== Ruby & Asciidoctor
@ -976,6 +1109,7 @@ $ nvim config
If you decide, that you want to use a graphical desktop environment, you have to install additional packages in order for that to work. If you decide, that you want to use a graphical desktop environment, you have to install additional packages in order for that to work.
// TODO: add paragraph for nvidia, xrandr/arandr
[source, console] [source, console]
---- ----
dustvoice@DustArch ~ dustvoice@DustArch ~
@ -1046,7 +1180,7 @@ You may also choose to use a graphical partitioning software instead of `fdisk`
[source, console] [source, console]
---- ----
dustvoice@DustArch ~ dustvoice@DustArch ~
$ sudo pacman -S gparted $ sudo pacman -S gparted gdisk
---- ----
==== Password management ==== Password management
@ -1065,6 +1199,14 @@ $ git clone git@git.dustvoice.de:DustVoice/pass.git .password-store
As you're already using a GUI, you also might be interested in a web browser. In my case, I'll install `chromium` and the `browserpass-chromium` extension for my passwords. As you're already using a GUI, you also might be interested in a web browser. In my case, I'll install `chromium` and the `browserpass-chromium` extension for my passwords.
// TODO: Add brave aur install instructions (base-devel required)
// Additional dependency installed packages
// ttf-font
// gperf
// npm
// cups
// libgnome-keyring
// pepper-flash
[source, console] [source, console]
---- ----
dustvoice@DustArch ~ dustvoice@DustArch ~

View File

@ -1 +0,0 @@
DustArch

View File

@ -1,6 +0,0 @@
# Static table lookup for hostnames.
# See hosts(5) for details.
127.0.0.1 localhost .
::1 localhost .
127.0.1.1 DustArch.localhost DustArch

View File

@ -1 +0,0 @@
LANG=en_US.UTF-8

View File

@ -1,7 +0,0 @@
# 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.

@ -1 +0,0 @@
Subproject commit 579286d2a8fcf22344a99ded2760e2c79dc7aca9

View File

@ -1,26 +0,0 @@
#!/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

View File

@ -1,10 +0,0 @@
[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

View File

@ -1,8 +0,0 @@
[Unit]
Description=Temporary /etc/pacman.d/gnupg directory
[Mount]
What=tmpfs
Where=/etc/pacman.d/gnupg
Type=tmpfs
Options=mode=0755

View File

@ -1,3 +0,0 @@
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux

View File

@ -1,15 +0,0 @@
[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

View File

@ -1 +0,0 @@
ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service"

View File

@ -1,61 +0,0 @@
#!/bin/bash
set -e -u
sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen
sed -i 's/#\(de_DE\.UTF-8\)/\1/' /etc/locale.gen
locale-gen
localectl set-locale LANG="en_US.UTF-8"
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc --utc
timedatectl set-timezone Europe/Berlin
timedatectl set-ntp true
usermod -s /usr/bin/fish root
cp -aT /etc/skel/ /root/
chmod 700 /root
sed -i 's/#\(PermitRootLogin \).\+/\1yes/' /etc/ssh/sshd_config
sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist
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
pip3 install neovim
pip3 install pygments
! id dustvoice && useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/fish dustvoice
echo 'dustvoice ALL=(ALL) ALL' >> /etc/sudoers
chown -R dustvoice:users /home/dustvoice
sudo -u dustvoice gem install asciidoctor --pre
sudo -u dustvoice gem install asciidoctor-pdf --pre
sudo -u dustvoice gem install asciidoctor-epub3 --pre
sudo -u dustvoice gem install pygments.rb --pre
sudo -u dustvoice nvim --headless +PlugInstall +qa
sudo -u dustvoice python3 /home/dustvoice/.config/nvim/plugged/YouCompleteMe/install.py --clang-completer
sudo -u dustvoice gpg-connect-agent updatestartuptty /bye
sudo localectl set-keymap --no-convert custom-us
systemctl enable pacman-init.service choose-mirror.service
systemctl set-default multi-user.target
systemctl enable dhcpcd.service
systemctl start dhcpcd.service
systemctl enable pcscd
systemctl start pcscd
echo ""
echo "Please set a password for the [root] user:"
until passwd; do echo "Try again, or Ctrl-c within 5 seconds!"; sleep 5; done
echo ""
echo "Please set a password for the [dustvoice] user:"
until passwd dustvoice; do echo "Try again, or Ctrl-c within 5 seconds!"; sleep 5; done

View File

@ -1,3 +0,0 @@
View this installation guide online at
https://wiki.archlinux.org/index.php/Installation_Guide

View File

@ -1,266 +0,0 @@
#!/bin/bash
set -e -u
iso_name=archlinux
iso_label="ARCH_$(date +%Y%m)"
iso_publisher="Arch Linux <http://www.archlinux.org>"
iso_application="Arch Linux Live/Rescue CD"
iso_version=$(date +%Y.%m.%d)
install_dir=arch
work_dir=work
out_dir=out
gpg_key=
verbose=""
script_path=$(readlink -f ${0%/*})
umask 0022
_usage ()
{
echo "usage ${0} [options]"
echo
echo " General options:"
echo " -N <iso_name> Set an iso filename (prefix)"
echo " Default: ${iso_name}"
echo " -V <iso_version> Set an iso version (in filename)"
echo " Default: ${iso_version}"
echo " -L <iso_label> Set an iso label (disk label)"
echo " Default: ${iso_label}"
echo " -P <publisher> Set a publisher for the disk"
echo " Default: '${iso_publisher}'"
echo " -A <application> Set an application name for the disk"
echo " Default: '${iso_application}'"
echo " -D <install_dir> Set an install_dir (directory inside iso)"
echo " Default: ${install_dir}"
echo " -w <work_dir> Set the working directory"
echo " Default: ${work_dir}"
echo " -o <out_dir> Set the output directory"
echo " Default: ${out_dir}"
echo " -v Enable verbose output"
echo " -h This help message"
exit ${1}
}
# Helper function to run make_*() only one time per architecture.
run_once() {
if [[ ! -e ${work_dir}/build.${1} ]]; then
$1
touch ${work_dir}/build.${1}
fi
}
# Setup custom pacman.conf with current cache directories.
make_pacman_conf() {
local _cache_dirs
_cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${_cache_dirs[@]})|g" ${script_path}/pacman.conf > ${work_dir}/pacman.conf
}
# Base installation, plus needed packages (airootfs)
make_basefs() {
mkarchiso ${verbose} -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" init
mkarchiso ${verbose} -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "haveged intel-ucode amd-ucode memtest86+ mkinitcpio-nfs-utils nbd zsh efitools" install
}
# Additional packages (airootfs)
make_packages() {
mkarchiso ${verbose} -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "$(grep -h -v ^# ${script_path}/packages.x86_64)" install
}
# Copy mkinitcpio archiso hooks and build initramfs (airootfs)
make_setup_mkinitcpio() {
local _hook
mkdir -p ${work_dir}/x86_64/airootfs/etc/initcpio/hooks
mkdir -p ${work_dir}/x86_64/airootfs/etc/initcpio/install
for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do
cp /usr/lib/initcpio/hooks/${_hook} ${work_dir}/x86_64/airootfs/etc/initcpio/hooks
cp /usr/lib/initcpio/install/${_hook} ${work_dir}/x86_64/airootfs/etc/initcpio/install
done
sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" ${work_dir}/x86_64/airootfs/etc/initcpio/install/archiso_shutdown
cp /usr/lib/initcpio/install/archiso_kms ${work_dir}/x86_64/airootfs/etc/initcpio/install
cp /usr/lib/initcpio/archiso_shutdown ${work_dir}/x86_64/airootfs/etc/initcpio
cp ${script_path}/mkinitcpio.conf ${work_dir}/x86_64/airootfs/etc/mkinitcpio-archiso.conf
gnupg_fd=
if [[ ${gpg_key} ]]; then
gpg --export ${gpg_key} >${work_dir}/gpgkey
exec 17<>${work_dir}/gpgkey
fi
ARCHISO_GNUPG_FD=${gpg_key:+17} mkarchiso ${verbose} -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run
if [[ ${gpg_key} ]]; then
exec 17<&-
fi
}
# Customize installation (airootfs)
make_customize_airootfs() {
cp -af ${script_path}/airootfs ${work_dir}/x86_64
cp ${script_path}/pacman.conf ${work_dir}/x86_64/airootfs/etc
curl -o ${work_dir}/x86_64/airootfs/etc/pacman.d/mirrorlist 'https://www.archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on'
lynx -dump -nolist 'https://wiki.archlinux.org/index.php/Installation_Guide?action=render' >> ${work_dir}/x86_64/airootfs/root/install.txt
mkarchiso ${verbose} -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" -r '/root/customize_airootfs.sh' run
rm ${work_dir}/x86_64/airootfs/root/customize_airootfs.sh
}
# Prepare kernel/initramfs ${install_dir}/boot/
make_boot() {
mkdir -p ${work_dir}/iso/${install_dir}/boot/x86_64
cp ${work_dir}/x86_64/airootfs/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img
cp ${work_dir}/x86_64/airootfs/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz
}
# Add other aditional/extra files to ${install_dir}/boot/
make_boot_extra() {
cp ${work_dir}/x86_64/airootfs/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/memtest
cp ${work_dir}/x86_64/airootfs/usr/share/licenses/common/GPL2/license.txt ${work_dir}/iso/${install_dir}/boot/memtest.COPYING
cp ${work_dir}/x86_64/airootfs/boot/intel-ucode.img ${work_dir}/iso/${install_dir}/boot/intel_ucode.img
cp ${work_dir}/x86_64/airootfs/usr/share/licenses/intel-ucode/LICENSE ${work_dir}/iso/${install_dir}/boot/intel_ucode.LICENSE
cp ${work_dir}/x86_64/airootfs/boot/amd-ucode.img ${work_dir}/iso/${install_dir}/boot/amd_ucode.img
cp ${work_dir}/x86_64/airootfs/usr/share/licenses/amd-ucode/LICENSE ${work_dir}/iso/${install_dir}/boot/amd_ucode.LICENSE
}
# Prepare /${install_dir}/boot/syslinux
make_syslinux() {
_uname_r=$(file -b ${work_dir}/x86_64/airootfs/boot/vmlinuz-linux| awk 'f{print;f=0} /version/{f=1}' RS=' ')
mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux
for _cfg in ${script_path}/syslinux/*.cfg; do
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/iso/${install_dir}/boot/syslinux/${_cfg##*/}
done
cp ${script_path}/syslinux/splash.png ${work_dir}/iso/${install_dir}/boot/syslinux
cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/*.c32 ${work_dir}/iso/${install_dir}/boot/syslinux
cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/iso/${install_dir}/boot/syslinux
cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/memdisk ${work_dir}/iso/${install_dir}/boot/syslinux
mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux/hdt
gzip -c -9 ${work_dir}/x86_64/airootfs/usr/share/hwdata/pci.ids > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/pciids.gz
gzip -c -9 ${work_dir}/x86_64/airootfs/usr/lib/modules/${_uname_r}/modules.alias > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz
}
# Prepare /isolinux
make_isolinux() {
mkdir -p ${work_dir}/iso/isolinux
sed "s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg
cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/
cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/
cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/
}
# Prepare /EFI
make_efi() {
mkdir -p ${work_dir}/iso/EFI/boot
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/iso/EFI/boot/
cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/iso/EFI/boot/loader.efi
mkdir -p ${work_dir}/iso/loader/entries
cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/
cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/
cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
s|%INSTALL_DIR%|${install_dir}|g" \
${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf
# EFI Shell 2.0 for UEFI 2.3+
curl -o ${work_dir}/iso/EFI/shellx64_v2.efi https://raw.githubusercontent.com/tianocore/edk2/UDK2018/ShellBinPkg/UefiShell/X64/Shell.efi
# EFI Shell 1.0 for non UEFI 2.3+
curl -o ${work_dir}/iso/EFI/shellx64_v1.efi https://raw.githubusercontent.com/tianocore/edk2/UDK2018/EdkShellBinPkg/FullShell/X64/Shell_Full.efi
}
# Prepare efiboot.img::/EFI for "El Torito" EFI boot mode
make_efiboot() {
mkdir -p ${work_dir}/iso/EFI/archiso
truncate -s 64M ${work_dir}/iso/EFI/archiso/efiboot.img
mkfs.fat -n ARCHISO_EFI ${work_dir}/iso/EFI/archiso/efiboot.img
mkdir -p ${work_dir}/efiboot
mount ${work_dir}/iso/EFI/archiso/efiboot.img ${work_dir}/efiboot
mkdir -p ${work_dir}/efiboot/EFI/archiso
cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/archiso/vmlinuz.efi
cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img
cp ${work_dir}/iso/${install_dir}/boot/intel_ucode.img ${work_dir}/efiboot/EFI/archiso/intel_ucode.img
cp ${work_dir}/iso/${install_dir}/boot/amd_ucode.img ${work_dir}/efiboot/EFI/archiso/amd_ucode.img
mkdir -p ${work_dir}/efiboot/EFI/boot
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi
cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/efiboot/EFI/boot/
cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi
mkdir -p ${work_dir}/efiboot/loader/entries
cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/
cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/
cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
s|%INSTALL_DIR%|${install_dir}|g" \
${script_path}/efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf
cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/
cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/
umount -d ${work_dir}/efiboot
}
# Build airootfs filesystem image
make_prepare() {
cp -a -l -f ${work_dir}/x86_64/airootfs ${work_dir}
mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist
mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" ${gpg_key:+-g ${gpg_key}} prepare
rm -rf ${work_dir}/airootfs
# rm -rf ${work_dir}/x86_64/airootfs (if low space, this helps)
}
# Build ISO
make_iso() {
mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -L "${iso_label}" -P "${iso_publisher}" -A "${iso_application}" -o "${out_dir}" iso "${iso_name}-${iso_version}-x86_64.iso"
}
if [[ ${EUID} -ne 0 ]]; then
echo "This script must be run as root."
_usage 1
fi
while getopts 'N:V:L:P:A:D:w:o:g:vh' arg; do
case "${arg}" in
N) iso_name="${OPTARG}" ;;
V) iso_version="${OPTARG}" ;;
L) iso_label="${OPTARG}" ;;
P) iso_publisher="${OPTARG}" ;;
A) iso_application="${OPTARG}" ;;
D) install_dir="${OPTARG}" ;;
w) work_dir="${OPTARG}" ;;
o) out_dir="${OPTARG}" ;;
g) gpg_key="${OPTARG}" ;;
v) verbose="-v" ;;
h) _usage 0 ;;
*)
echo "Invalid argument '${arg}'"
_usage 1
;;
esac
done
mkdir -p ${work_dir}
run_once make_pacman_conf
run_once make_basefs
run_once make_packages
run_once make_setup_mkinitcpio
run_once make_customize_airootfs
run_once make_boot
run_once make_boot_extra
run_once make_syslinux
run_once make_isolinux
run_once make_efi
run_once make_efiboot
run_once make_prepare
run_once make_iso

View File

@ -1,6 +0,0 @@
title Arch Linux archiso x86_64 UEFI CD
linux /EFI/archiso/vmlinuz.efi
initrd /EFI/archiso/intel_ucode.img
initrd /EFI/archiso/amd_ucode.img
initrd /EFI/archiso/archiso.img
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%

View File

@ -1,6 +0,0 @@
title Arch Linux archiso x86_64 UEFI USB
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz
initrd /%INSTALL_DIR%/boot/intel_ucode.img
initrd /%INSTALL_DIR%/boot/amd_ucode.img
initrd /%INSTALL_DIR%/boot/x86_64/archiso.img
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%

View File

@ -1,2 +0,0 @@
title UEFI Shell x86_64 v1
efi /EFI/shellx64_v1.efi

View File

@ -1,2 +0,0 @@
title UEFI Shell x86_64 v2
efi /EFI/shellx64_v2.efi

View File

@ -1,2 +0,0 @@
timeout 3
default archiso-x86_64

View File

@ -1,6 +0,0 @@
PATH /%INSTALL_DIR%/boot/syslinux/
DEFAULT loadconfig
LABEL loadconfig
CONFIG /%INSTALL_DIR%/boot/syslinux/archiso.cfg
APPEND /%INSTALL_DIR%/

View File

@ -1,2 +0,0 @@
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 filesystems keyboard)
COMPRESSION="xz"

View File

@ -1,119 +0,0 @@
alsa-utils
arch-install-scripts
b43-fwcutter
broadcom-wl
browserpass
browserpass-chromium
btrfs-progs
ccid
chromium
clang
clonezilla
cmake
crda
darkhttpd
ddrescue
dhclient
dhcpcd
dialog
diffutils
dmraid
dnsmasq
dnsutils
dolphin
dosfstools
elinks
ethtool
exfat-utils
f2fs-tools
fakeroot
fbida
fish
fsarchiver
ghostscript
git
gnome-terminal
gnu-netcat
gnupg
gparted
gpm
gptfdisk
grml-zsh-config
grub
grub
hdparm
i3
i3status
iputils
ipw2100-fw
ipw2200-fw
irssi
iwd
jfsutils
lftp
libusb-compat
linux-atm
linux-firmware
lsscsi
lvm2
make
man-db
man-pages
mc
mdadm
mtools
mtools
mupdf
nano
ndisc6
neovim
netctl
nfs-utils
nilfs-utils
nmap
ntfs-3g
ntp
openconnect
opensc
openssh
openvpn
os-prober
partclone
parted
partimage
pass
pcsclite
ppp
pptpclient
python-pip
python3
refind-efi
reiserfsprogs
rofi
rp-pppoe
rsync
ruby
rubygems
sdparm
sg3_utils
smartmontools
sudo
tcpdump
testdisk
ttf-hack
usb_modeswitch
usbutils
vi
vim-minimal
vpnc
wget
wicd
wireless-regdb
wireless_tools
wpa_supplicant
wvdial
xfsprogs
xl2tpd
xorg
xorg-drivers
xorg-xinit

View File

@ -1,101 +0,0 @@
#
# /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 -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
# 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

View File

@ -1,11 +0,0 @@
DEFAULT select
LABEL select
COM32 boot/syslinux/whichsys.c32
APPEND -pxe- pxe -sys- sys -iso- sys
LABEL pxe
CONFIG boot/syslinux/archiso_pxe.cfg
LABEL sys
CONFIG boot/syslinux/archiso_sys.cfg

View File

@ -1,25 +0,0 @@
SERIAL 0 38400
UI boot/syslinux/vesamenu.c32
MENU TITLE Arch Linux
MENU BACKGROUND boot/syslinux/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 http://syslinux.zytor.com/wiki/index.php/Doc/menu
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

View File

@ -1,36 +0,0 @@
INCLUDE boot/syslinux/archiso_head.cfg
LABEL arch64_nbd
TEXT HELP
Boot the Arch Linux (x86_64) live medium (Using NBD).
It allows you to install Arch Linux or perform system maintenance.
ENDTEXT
MENU LABEL Boot Arch Linux (x86_64) (NBD)
LINUX boot/x86_64/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver}
SYSAPPEND 3
LABEL arch64_nfs
TEXT HELP
Boot the Arch Linux (x86_64) live medium (Using NFS).
It allows you to install Arch Linux or perform system maintenance.
ENDTEXT
MENU LABEL Boot Arch Linux (x86_64) (NFS)
LINUX boot/x86_64/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img
APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt
SYSAPPEND 3
LABEL arch64_http
TEXT HELP
Boot the Arch Linux (x86_64) live medium (Using HTTP).
It allows you to install Arch Linux or perform system maintenance.
ENDTEXT
MENU LABEL Boot Arch Linux (x86_64) (HTTP)
LINUX boot/x86_64/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img
APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/
SYSAPPEND 3
INCLUDE boot/syslinux/archiso_tail.cfg

View File

@ -1,13 +0,0 @@
INCLUDE boot/syslinux/archiso_head.cfg
LABEL arch64
TEXT HELP
Boot the Arch Linux (x86_64) live medium.
It allows you to install Arch Linux or perform system maintenance.
ENDTEXT
MENU LABEL Boot Arch Linux (x86_64)
LINUX boot/x86_64/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
INCLUDE boot/syslinux/archiso_tail.cfg

View File

@ -1,27 +0,0 @@
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 boot/syslinux/chain.c32
APPEND hd0 0
# http://www.memtest.org/
LABEL memtest
MENU LABEL Run Memtest86+ (RAM test)
LINUX boot/memtest
# http://hdt-project.org/
LABEL hdt
MENU LABEL Hardware Information (HDT)
COM32 boot/syslinux/hdt.c32
APPEND modules_alias=boot/syslinux/hdt/modalias.gz pciids=boot/syslinux/hdt/pciids.gz
LABEL reboot
MENU LABEL Reboot
COM32 boot/syslinux/reboot.c32
LABEL poweroff
MENU LABEL Power Off
COM32 boot/syslinux/poweroff.c32

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View File

@ -1,5 +0,0 @@
DEFAULT loadconfig
LABEL loadconfig
CONFIG archiso.cfg
APPEND ../../