diff --git a/LICENSE b/LICENSE
index 6b156fe..f288702 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
-GNU GENERAL PUBLIC LICENSE
+ GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
- {one line to give the program's name and a brief idea of what it does.}
- Copyright (C) {year} {name of author}
+
+ Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see .
+ along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
- {project} Copyright (C) {year} {fullname}
+ Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -664,12 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
-.
+.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-.
-
+.
diff --git a/README.md b/README.md
index f29d086..e81482d 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,6 @@ Clone:\
`sudo ./fix_permissions.sh`
## Build
-`sudo ./build.sh -v`
+`sudo ./mkarchiso /path/to/profile`
## The iso appears at out folder
diff --git a/airootfs/etc/environment b/airootfs/etc/environment
index e26c32e..39b5a92 100755
--- a/airootfs/etc/environment
+++ b/airootfs/etc/environment
@@ -4,5 +4,7 @@
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
-# QT_QPA_PLATFORMTHEME=qt5ct
+QT_QPA_PLATFORMTHEME=qt5ct
+#QT_STYLE_OVERRIDE=kvantum
BROWSER=cachy-browser
+EDITOR=nano
diff --git a/airootfs/etc/group b/airootfs/etc/group
new file mode 100755
index 0000000..725b55e
--- /dev/null
+++ b/airootfs/etc/group
@@ -0,0 +1,8 @@
+root:x:0:root
+adm:x:4:liveuser
+wheel:x:10:liveuser
+uucp:x:14:liveuser
+nopasswdlogin:x:966:liveuser
+rfkill:x:983:liveuser
+sys:x:3:bin,liveuser
+liveuser:x:1000:
diff --git a/airootfs/etc/gshadow b/airootfs/etc/gshadow
new file mode 100755
index 0000000..29a1e7b
--- /dev/null
+++ b/airootfs/etc/gshadow
@@ -0,0 +1,2 @@
+root:!*::root
+liveuser:!*::
diff --git a/airootfs/etc/hostname b/airootfs/etc/hostname
index a5f866b..73c3973 100755
--- a/airootfs/etc/hostname
+++ b/airootfs/etc/hostname
@@ -1,3 +1,3 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
-archiso
+CachyOS
diff --git a/airootfs/etc/mkinitcpio.conf b/airootfs/etc/mkinitcpio.conf
index 31d49f4..a376034 100755
--- a/airootfs/etc/mkinitcpio.conf
+++ b/airootfs/etc/mkinitcpio.conf
@@ -55,7 +55,7 @@ FILES=()
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
-# Use this to compress the initramfs image. By default, zstd compression
+# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
COMPRESSION="zstd"
#COMPRESSION="gzip"
diff --git a/airootfs/etc/mkinitcpio.d/linux.preset b/airootfs/etc/mkinitcpio.d/linux.preset
index a1949cd..d35f137 100755
--- a/airootfs/etc/mkinitcpio.d/linux.preset
+++ b/airootfs/etc/mkinitcpio.d/linux.preset
@@ -8,4 +8,4 @@ PRESETS=('archiso')
ALL_kver='/boot/vmlinuz-linux'
ALL_config='/etc/mkinitcpio.conf'
-archiso_image="/boot/archiso.img"
+archiso_image="/boot/initramfs-linux.img"
diff --git a/airootfs/etc/motd b/airootfs/etc/motd
index 2152ce0..344732f 100755
--- a/airootfs/etc/motd
+++ b/airootfs/etc/motd
@@ -1,18 +1,19 @@
This ISO is based on Arch-ISO modified hugely to provide Installation Environment for CachyOS.
https://cachyos.org
-Arch-ISO Source:
-https://gitlab.archlinux.org/archlinux/archiso
-
CachyOS-archiso Sources:
https://gitlab.com/cachyos/cachyos-archiso
-Live environment will start now and let you install CachyOS to disk, or tryout XFCE4-Desktop from Live-Session.
+Arch-ISO Source:
+https://gitlab.archlinux.org/archlinux/archiso
-Bugs can be reported here:
-https://forum.endeavouros.com/c/Arch-based-related-questions/bug-reports
+Calamares as our installer:
+https://github.com/calamares/calamares
+
+Live environment will start now and let you install CachyOS to disk, or tryout Plasma-Desktop from Live-Session.
Getting help at the forum: https://forum.cachyos.org
-Welcome to your cachy!
+Welcome to your cachy
+---
diff --git a/airootfs/etc/pacman.conf b/airootfs/etc/pacman.conf
index 59f2eee..c323579 100755
--- a/airootfs/etc/pacman.conf
+++ b/airootfs/etc/pacman.conf
@@ -16,7 +16,7 @@
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
-#XferCommand = /usr/bin/curl -C - -f %u > %o
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
#UseDelta = 0.7
@@ -33,10 +33,11 @@ Architecture = auto
#UseSyslog
Color
ILoveCandy
-#TotalDownload
-# We cannot check disk space from within a chroot environment
+#NoProgressBar
#CheckSpace
-#VerbosePkgLists
+VerbosePkgLists
+DisableDownloadTimeout
+ParallelDownloads = 10
# 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.
diff --git a/airootfs/etc/passwd b/airootfs/etc/passwd
index 2807d5d..aebc492 100755
--- a/airootfs/etc/passwd
+++ b/airootfs/etc/passwd
@@ -1 +1 @@
-root:x:0:0:root:/root:/usr/bin/zsh
+root:x:0:0:root:/root:/bin/bash
diff --git a/airootfs/etc/skel/.bashrc b/airootfs/etc/skel/.bashrc
index 3256bd4..6ff8a1b 100755
--- a/airootfs/etc/skel/.bashrc
+++ b/airootfs/etc/skel/.bashrc
@@ -164,6 +164,19 @@ _open_files_for_editing() {
done
}
+_Pacdiff() {
+ local differ pacdiff=/usr/bin/pacdiff
+
+ if [ -n "$(echo q | DIFFPROG=diff $pacdiff)" ] ; then
+ for differ in kdiff3 meld diffuse ; do
+ if [ -x /usr/bin/$differ ] ; then
+ DIFFPROG=$differ su-c_wrapper $pacdiff
+ break
+ fi
+ done
+ fi
+}
+
#------------------------------------------------------------
## Aliases for the functions above.
@@ -171,8 +184,5 @@ _open_files_for_editing() {
##
# alias ef='_open_files_for_editing' # 'ef' opens given file(s) for editing
-
-## Other potentially useful aliases.
-#
-# alias pacdiff=eos-pacdiff
+# alias pacdiff=_Pacdiff
################################################################################
diff --git a/airootfs/etc/skel/.config/Kvantum/kvantum.kvconfig b/airootfs/etc/skel/.config/Kvantum/kvantum.kvconfig
new file mode 100755
index 0000000..3159ec3
--- /dev/null
+++ b/airootfs/etc/skel/.config/Kvantum/kvantum.kvconfig
@@ -0,0 +1,2 @@
+[General]
+theme=KvArc
diff --git a/airootfs/etc/skel/.config/qt5ct/qt5ct.conf b/airootfs/etc/skel/.config/qt5ct/qt5ct.conf
new file mode 100755
index 0000000..dfda865
--- /dev/null
+++ b/airootfs/etc/skel/.config/qt5ct/qt5ct.conf
@@ -0,0 +1,28 @@
+[Appearance]
+color_scheme_path=/usr/share/qt5ct/colors/darker.conf
+custom_palette=false
+icon_theme=Arc-X-D
+standard_dialogs=default
+style=kvantum
+
+[Fonts]
+fixed=@Variant(\0\0\0@\0\0\0\x1e\0S\0o\0u\0r\0\x63\0\x65\0 \0\x43\0o\0\x64\0\x65\0 \0P\0r\0o@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
+general=@Variant(\0\0\0@\0\0\0\x12\0N\0o\0t\0o\0 \0S\0\x61\0n\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=@Invalid()
+keyboard_scheme=2
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+stylesheets=/usr/share/qt5ct/qss/scrollbar-simple.qss, /usr/share/qt5ct/qss/sliders-simple.qss, /usr/share/qt5ct/qss/tooltip-simple.qss, /usr/share/qt5ct/qss/traynotification-simple.qss
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
+
+[SettingsWindow]
+geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x6\xc0\0\0\x3;\0\0\t\xa2\0\0\x6\xe\0\0\x6\xc2\0\0\x3W\0\0\t\xa0\0\0\x6\f\0\0\0\0\0\0\0\0\a\x80\0\0\x6\xc2\0\0\x3W\0\0\t\xa0\0\0\x6\f)"
diff --git a/airootfs/etc/skel/.gnupg/gpg.conf b/airootfs/etc/skel/.gnupg/gpg.conf
new file mode 100755
index 0000000..6c666d0
--- /dev/null
+++ b/airootfs/etc/skel/.gnupg/gpg.conf
@@ -0,0 +1,7 @@
+no-greeting
+no-permission-warning
+lock-never
+keyserver-options timeout=10
+keyserver-options import-clean
+keyserver-options no-self-sigs-only
+keyserver hkp://keys.openpgp.org
diff --git a/airootfs/etc/skel/.xprofile b/airootfs/etc/skel/.xprofile
index e04c0a5..346bc80 100755
--- a/airootfs/etc/skel/.xprofile
+++ b/airootfs/etc/skel/.xprofile
@@ -1,2 +1 @@
-xcompmgr &
xset s off -dpms &
diff --git a/airootfs/etc/skel/xed.dconf b/airootfs/etc/skel/xed.dconf
new file mode 100755
index 0000000..50ee2c6
--- /dev/null
+++ b/airootfs/etc/skel/xed.dconf
@@ -0,0 +1,6 @@
+[org/x/editor/preferences/editor]
+bracket-matching=false
+display-line-numbers=true
+prefer-dark-theme=true
+scheme='cobalt'
+wrap-mode='none'
diff --git a/airootfs/etc/systemd/network/20-ethernet.network b/airootfs/etc/systemd/network/20-ethernet.network
deleted file mode 100755
index efa309c..0000000
--- a/airootfs/etc/systemd/network/20-ethernet.network
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-[Match]
-Name=en*
-Name=eth*
-
-[Network]
-DHCP=yes
-IPv6PrivacyExtensions=yes
-
-[DHCP]
-RouteMetric=512
diff --git a/airootfs/etc/systemd/network/20-wireless.network b/airootfs/etc/systemd/network/20-wireless.network
deleted file mode 100755
index bf9ab9d..0000000
--- a/airootfs/etc/systemd/network/20-wireless.network
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-[Match]
-Name=wlp*
-Name=wlan*
-
-[Network]
-DHCP=yes
-IPv6PrivacyExtensions=yes
-
-[DHCP]
-RouteMetric=1024
diff --git a/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service b/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service
deleted file mode 120000
index 4c158e6..0000000
--- a/airootfs/etc/systemd/system/dbus-org.freedesktop.network1.service
+++ /dev/null
@@ -1 +0,0 @@
-/usr/lib/systemd/system/systemd-networkd.service
\ No newline at end of file
diff --git a/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service b/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service
deleted file mode 120000
index 4f6ae34..0000000
--- a/airootfs/etc/systemd/system/dbus-org.freedesktop.resolve1.service
+++ /dev/null
@@ -1 +0,0 @@
-/usr/lib/systemd/system/systemd-resolved.service
\ No newline at end of file
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service b/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service
deleted file mode 120000
index 3625abd..0000000
--- a/airootfs/etc/systemd/system/multi-user.target.wants/iwd.service
+++ /dev/null
@@ -1 +0,0 @@
-/usr/lib/systemd/system/iwd.service
\ No newline at end of file
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service b/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service
deleted file mode 120000
index 4c158e6..0000000
--- a/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service
+++ /dev/null
@@ -1 +0,0 @@
-/usr/lib/systemd/system/systemd-networkd.service
\ No newline at end of file
diff --git a/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service b/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
deleted file mode 120000
index 4f6ae34..0000000
--- a/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
+++ /dev/null
@@ -1 +0,0 @@
-/usr/lib/systemd/system/systemd-resolved.service
\ No newline at end of file
diff --git a/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket b/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket
deleted file mode 120000
index 51942c8..0000000
--- a/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket
+++ /dev/null
@@ -1 +0,0 @@
-/usr/lib/systemd/system/systemd-networkd.socket
\ No newline at end of file
diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin
index f598e43..0fb119d 100755
--- a/airootfs/root/.zlogin
+++ b/airootfs/root/.zlogin
@@ -1 +1,6 @@
+# fix for screen readers
+if grep -Fq 'accessibility=' /proc/cmdline &> /dev/null; then
+ setopt SINGLE_LINE_ZLE
+fi
+
~/.automated_script.sh
diff --git a/build.sh b/build.sh
deleted file mode 100755
index c2a2b62..0000000
--- a/build.sh
+++ /dev/null
@@ -1,345 +0,0 @@
-#!/usr/bin/env bash
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-set -e -u
-
-iso_name=cachyos
-iso_label="CACHYOS"
-iso_publisher="CachyOS GNU/Linux "
-iso_application="CachyOS GNU/Linux Live/Rescue CD"
-iso_version=$(date +%Y.%m.%d)
-install_dir=arch
-work_dir=work
-out_dir=out
-gpg_key=""
-
-verbose=""
-script_path="$( cd -P "$( dirname "$(readlink -f "$0")" )" && pwd )"
-MKARCHISO=$script_path/mkarchiso
-
-umask 0022
-
-_usage ()
-{
- echo "usage ${0} [options]"
- echo
- echo " General options:"
- echo " -N Set an iso filename (prefix)"
- echo " Default: ${iso_name}"
- echo " -V Set an iso version (in filename)"
- echo " Default: ${iso_version}"
- echo " -L Set an iso label (disk label)"
- echo " Default: ${iso_label}"
- echo " -P Set a publisher for the disk"
- echo " Default: '${iso_publisher}'"
- echo " -A Set an application name for the disk"
- echo " Default: '${iso_application}'"
- echo " -D Set an install_dir (directory inside iso)"
- echo " Default: ${install_dir}"
- echo " -w Set the working directory"
- echo " Default: ${work_dir}"
- echo " -o 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
-}
-
-bypass_umount_error(){
-
-# Not used for now
-umount -l $script_path/work/x86_64/airootfs/proc $script_path/work/x86_64/airootfs/dev || true
-
-}
-
-# 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"
-}
-
-# Prepare working directory and copy custom airootfs files (airootfs)
-make_custom_airootfs() {
- local _airootfs="${work_dir}/x86_64/airootfs"
- mkdir -p -- "${_airootfs}"
-
- if [[ -d "${script_path}/airootfs" ]]; then
- cp -af --no-preserve=ownership -- "${script_path}/airootfs/." "${_airootfs}"
-
- [[ -e "${_airootfs}/etc/shadow" ]] && chmod -f 0400 -- "${_airootfs}/etc/shadow"
- [[ -e "${_airootfs}/etc/gshadow" ]] && chmod -f 0400 -- "${_airootfs}/etc/gshadow"
-
- mkdir -p "${_airootfs}/usr/lib"
- echo "VERSION=$iso_version" >> "${_airootfs}/usr/lib/cachtyos-release"
-
- # Set up user home directories and permissions
- if [[ -e "${_airootfs}/etc/passwd" ]]; then
- while IFS=':' read -a passwd -r; do
- [[ "${passwd[5]}" == '/' ]] && continue
-
- if [[ -d "${_airootfs}${passwd[5]}" ]]; then
- chown -hR -- "${passwd[2]}:${passwd[3]}" "${_airootfs}${passwd[5]}"
- chmod -f 0750 -- "${_airootfs}${passwd[5]}"
- else
- install -d -m 0750 -o "${passwd[2]}" -g "${passwd[3]}" -- "${_airootfs}${passwd[5]}"
- fi
- done < "${_airootfs}/etc/passwd"
- fi
- fi
-}
-
-# Packages (airootfs)
-make_packages() {
- if [[ "${gpg_key}" ]]; then
- gpg --export "${gpg_key}" > "${work_dir}/gpgkey"
- exec 17<>"${work_dir}/gpgkey"
- fi
- if [ -n "${verbose}" ]; then
- ARCHISO_GNUPG_FD="${gpg_key:+17}" $MKARCHISO -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install
- else
- ARCHISO_GNUPG_FD="${gpg_key:+17}" $MKARCHISO -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install
- fi
- if [[ "${gpg_key}" ]]; then
- exec 17<&-
- fi
-}
-
-# 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_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
-}
-
-
-# Customize installation (airootfs)
-make_customize_airootfs() {
- if [[ -e "${script_path}/airootfs/etc/passwd" ]]; then
- while IFS=':' read -a passwd -r; do
- [[ "${passwd[5]}" == '/' ]] && continue
- cp -RdT --preserve=mode,timestamps,links -- "${work_dir}/x86_64/airootfs/etc/skel" "${work_dir}/x86_64/airootfs${passwd[5]}"
- chown -hR -- "${passwd[2]}:${passwd[3]}" "${work_dir}/x86_64/airootfs${passwd[5]}"
-
- done < "${script_path}/airootfs/etc/passwd"
- fi
-
- if [[ -e "${work_dir}/x86_64/airootfs/root/customize_airootfs.sh" ]]; then
- if [ -n "${verbose}" ]; then
- $MKARCHISO -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -r '/root/customize_airootfs.sh' run
- else
- $MKARCHISO -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -r '/root/customize_airootfs.sh' run
- fi
- rm "${work_dir}/x86_64/airootfs/root/customize_airootfs.sh"
- fi
-}
-
-# 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/"
- cp "${work_dir}/x86_64/airootfs/boot/vmlinuz-linux" "${work_dir}/iso/${install_dir}/boot/x86_64/"
-}
-
-# Add other aditional/extra files to ${install_dir}/boot/
-make_boot_extra() {
- if [[ -e "${work_dir}/x86_64/airootfs/boot/memtest86+/memtest.bin" ]]; then
- # rename for PXE: https://wiki.archlinux.org/index.php/Syslinux#Using_memtest
- cp "${work_dir}/x86_64/airootfs/boot/memtest86+/memtest.bin" "${work_dir}/iso/${install_dir}/boot/memtest"
- mkdir -p "${work_dir}/iso/${install_dir}/boot/licenses/memtest86+/"
- cp "${work_dir}/x86_64/airootfs/usr/share/licenses/common/GPL2/license.txt" \
- "${work_dir}/iso/${install_dir}/boot/licenses/memtest86+/"
- fi
- if [[ -e "${work_dir}/x86_64/airootfs/boot/intel-ucode.img" ]]; then
- cp "${work_dir}/x86_64/airootfs/boot/intel-ucode.img" "${work_dir}/iso/${install_dir}/boot/"
- mkdir -p "${work_dir}/iso/${install_dir}/boot/licenses/intel-ucode/"
- cp "${work_dir}/x86_64/airootfs/usr/share/licenses/intel-ucode/"* \
- "${work_dir}/iso/${install_dir}/boot/licenses/intel-ucode/"
- fi
- if [[ -e "${work_dir}/x86_64/airootfs/boot/amd-ucode.img" ]]; then
- cp "${work_dir}/x86_64/airootfs/boot/amd-ucode.img" "${work_dir}/iso/${install_dir}/boot/"
- mkdir -p "${work_dir}/iso/${install_dir}/boot/licenses/amd-ucode/"
- cp "${work_dir}/x86_64/airootfs/usr/share/licenses/amd-ucode/"* \
- "${work_dir}/iso/${install_dir}/boot/licenses/amd-ucode/"
- fi
-}
-
-# 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/lib/systemd/boot/efi/systemd-bootx64.efi" \
- "${work_dir}/iso/EFI/boot/bootx64.efi"
-
- mkdir -p "${work_dir}/iso/loader/entries"
- cp "${script_path}/efiboot/loader/loader.conf" "${work_dir}/iso/loader/"
-
- 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"
-
- sed "s|%ARCHISO_LABEL%|${iso_label}|g;
- s|%INSTALL_DIR%|${install_dir}|g" \
- "${script_path}/efiboot/loader/entries/archiso-x86_64-usb-nonfree.conf" > \
- "${work_dir}/iso/loader/entries/archiso-x86_64-nonfree.conf"
-
-
- # edk2-shell based UEFI shell
- # shellx64.efi is picked up automatically when on /
- cp "${work_dir}/x86_64/airootfs/usr/share/edk2-shell/x64/Shell_Full.efi" "${work_dir}/iso/shellx64.efi"
-}
-
-# Prepare efiboot.img::/EFI for "El Torito" EFI boot mode
-make_efiboot() {
- mkdir -p "${work_dir}/iso/EFI/archiso"
- truncate -s 100M "${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-linux" "${work_dir}/efiboot/EFI/archiso/"
- cp "${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img" "${work_dir}/efiboot/EFI/archiso/"
-
- cp "${work_dir}/iso/${install_dir}/boot/intel-ucode.img" "${work_dir}/efiboot/EFI/archiso/"
- cp "${work_dir}/iso/${install_dir}/boot/amd-ucode.img" "${work_dir}/efiboot/EFI/archiso/"
-
- mkdir -p "${work_dir}/efiboot/EFI/boot"
- cp "${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi" \
- "${work_dir}/efiboot/EFI/boot/bootx64.efi"
-
- mkdir -p "${work_dir}/efiboot/loader/entries"
- cp "${script_path}/efiboot/loader/loader.conf" "${work_dir}/efiboot/loader/"
-
- 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"
-
- sed "s|%ARCHISO_LABEL%|${iso_label}|g;
- s|%INSTALL_DIR%|${install_dir}|g" \
- "${script_path}/efiboot/loader/entries/archiso-x86_64-cd-nonfree.conf" > \
- "${work_dir}/efiboot/loader/entries/archiso-x86_64-nonfree.conf"
-
- # shellx64.efi is picked up automatically when on /
- cp "${work_dir}/iso/shellx64.efi" "${work_dir}/efiboot/"
-
- umount -d "${work_dir}/efiboot"
-}
-
-# Build airootfs filesystem image
-make_prepare() {
- cp -a -l -f "${work_dir}/x86_64/airootfs" "${work_dir}"
- if [ -n "${verbose}" ]; then
- $MKARCHISO -v -w "${work_dir}" -D "${install_dir}" pkglist
- $MKARCHISO -v -w "${work_dir}" -D "${install_dir}" ${gpg_key:+-g ${gpg_key}} prepare
- else
- $MKARCHISO -w "${work_dir}" -D "${install_dir}" pkglist
- $MKARCHISO -w "${work_dir}" -D "${install_dir}" ${gpg_key:+-g ${gpg_key}} prepare
- fi
- rm -rf "${work_dir}/airootfs"
- # rm -rf "${work_dir}/x86_64/airootfs" (if low space, this helps)
-}
-
-# Build ISO
-make_iso() {
- if [ -n "${verbose}" ]; then
- $MKARCHISO -v -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"
- else
- $MKARCHISO -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"
- fi
-}
-
-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_custom_airootfs
-run_once make_packages
-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
diff --git a/ci.build.sh b/ci.build.sh
index b26d6e7..c83c76e 100755
--- a/ci.build.sh
+++ b/ci.build.sh
@@ -3,4 +3,4 @@
pacman --noconfirm -Syu --needed base-devel archiso mkinitcpio-archiso git squashfs-tools
sudo ./fix_permissions.sh
-sudo ./build.sh -v
+sudo ./mkarchiso .
diff --git a/efiboot/loader/entries/archiso-x86_64-cd-nonfree.conf b/efiboot/loader/entries/archiso-x86_64-cd-nonfree.conf
deleted file mode 100644
index 863c6d7..0000000
--- a/efiboot/loader/entries/archiso-x86_64-cd-nonfree.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-title CachyOS x86_64 UEFI NVIDIA (nonfree, latest cards only, no legacy) (CD)
-linux /EFI/archiso/vmlinuz-linux
-initrd /EFI/archiso/intel-ucode.img
-initrd /EFI/archiso/amd-ucode.img
-initrd /EFI/archiso/archiso.img
-options archisobasedir=%INSTALL_DIR% cow_spacesize=10G archisolabel=%ARCHISO_LABEL% nvidia nouveau.modeset=0 nouveau.blacklist=yes modprobe.blacklist=nouveau i915.modeset=1 radeon.modeset=1
diff --git a/efiboot/loader/entries/archiso-x86_64-cd.conf b/efiboot/loader/entries/archiso-x86_64-cd.conf
deleted file mode 100644
index bc04baf..0000000
--- a/efiboot/loader/entries/archiso-x86_64-cd.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-title CachyOS x86_64 UEFI Default (CD)
-linux /EFI/archiso/vmlinuz-linux
-initrd /EFI/archiso/intel-ucode.img
-initrd /EFI/archiso/amd-ucode.img
-initrd /EFI/archiso/archiso.img
-options archisobasedir=%INSTALL_DIR% cow_spacesize=10G archisolabel=%ARCHISO_LABEL% i915.modeset=1 radeon.modeset=1 nvidia.blacklist=yes modprobe.blacklist=nvidia nouveau.modeset=1 nouveau
diff --git a/efiboot/loader/entries/archiso-x86_64-usb-nonfree.conf b/efiboot/loader/entries/archiso-x86_64-linux-nonfree.conf
similarity index 73%
rename from efiboot/loader/entries/archiso-x86_64-usb-nonfree.conf
rename to efiboot/loader/entries/archiso-x86_64-linux-nonfree.conf
index d8cbcb6..85c6099 100644
--- a/efiboot/loader/entries/archiso-x86_64-usb-nonfree.conf
+++ b/efiboot/loader/entries/archiso-x86_64-linux-nonfree.conf
@@ -1,9 +1,9 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
-title CachyOS x86_64 UEFI Nvidia (nonfree, latest cards only, no legacy) (USB)
+title CachyOS x86_64 UEFI NVIDIA (nonfree, latest cards only, no legacy) (CD)
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
-initrd /%INSTALL_DIR%/boot/x86_64/archiso.img
+initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
options archisobasedir=%INSTALL_DIR% cow_spacesize=10G archisolabel=%ARCHISO_LABEL% nvidia nouveau.modeset=0 nouveau.blacklist=yes modprobe.blacklist=nouveau i915.modeset=1 radeon.modeset=1
diff --git a/efiboot/loader/entries/archiso-x86_64-usb.conf b/efiboot/loader/entries/archiso-x86_64-linux.conf
similarity index 80%
rename from efiboot/loader/entries/archiso-x86_64-usb.conf
rename to efiboot/loader/entries/archiso-x86_64-linux.conf
index 3ce28fd..e54e437 100644
--- a/efiboot/loader/entries/archiso-x86_64-usb.conf
+++ b/efiboot/loader/entries/archiso-x86_64-linux.conf
@@ -1,9 +1,9 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
-title CachyOS x86_64 UEFI Default (USB)
+title CachyOS x86_64 UEFI Default
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
initrd /%INSTALL_DIR%/boot/intel-ucode.img
initrd /%INSTALL_DIR%/boot/amd-ucode.img
-initrd /%INSTALL_DIR%/boot/x86_64/archiso.img
+initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img
options archisobasedir=%INSTALL_DIR% cow_spacesize=10G archisolabel=%ARCHISO_LABEL% i915.modeset=1 radeon.modeset=1 nvidia.blacklist=yes modprobe.blacklist=nvidia nouveau.modeset=1 nouveau
diff --git a/efiboot/loader/loader.conf b/efiboot/loader/loader.conf
index fd7db27..1ea5ce5 100644
--- a/efiboot/loader/loader.conf
+++ b/efiboot/loader/loader.conf
@@ -2,4 +2,4 @@
# SPDX-License-Identifier: GPL-3.0-or-later
timeout 3
-default archiso-x86_64.conf
+default archiso-x86_64-linux.conf
diff --git a/fix_permissions.sh b/fix_permissions.sh
index efa3829..8684135 100755
--- a/fix_permissions.sh
+++ b/fix_permissions.sh
@@ -2,15 +2,10 @@
# For all folders
find ./airootfs -type d -exec chmod -R 755 {} \;
-#find ./airootfs -type d -exec chown root:root {} \;
chown root:root -R ./airootfs
-#chown root:root $(find ./airootfs |grep -v "/etc/skel")
-
chmod 700 ./airootfs/root
chmod -R 700 airootfs/etc/sudoers.d
chmod 444 ./airootfs/etc/sudoers.d/g_wheel
-#chown root:root ./airootfs/etc/sudoers.d
-#chown root:root ./airootfs/etc/sudoers.d/g_wheel
-chmod +x ./{build.sh,mkarchiso,run_before_squashfs.sh}
+chmod +x ./{mkarchiso,run_before_squashfs.sh}
diff --git a/isolinux/isolinux.cfg b/isolinux/isolinux.cfg
deleted file mode 100644
index 7b14d59..0000000
--- a/isolinux/isolinux.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-PATH /%INSTALL_DIR%/boot/syslinux/
-DEFAULT loadconfig
-
-LABEL loadconfig
- CONFIG /%INSTALL_DIR%/boot/syslinux/archiso.cfg
- APPEND /%INSTALL_DIR%/
diff --git a/mirrorlist b/mirrorlist
new file mode 100755
index 0000000..93cd03d
--- /dev/null
+++ b/mirrorlist
@@ -0,0 +1,76 @@
+##########################################
+### This mirrorlist is only a fallback ###
+##########################################
+### Note that the mirrors were not ranked, so you may get better mirrorlist
+### by ranking with e.g. program 'reflector-simple'.
+
+## Germany & United States
+
+Server = http://mirror.f4st.host/archlinux/$repo/os/$arch
+Server = https://mirror.f4st.host/archlinux/$repo/os/$arch
+
+Server = http://arch.mirror.constant.com/$repo/os/$arch
+Server = https://arch.mirror.constant.com/$repo/os/$arch
+
+Server = https://mirror.pseudoform.org/$repo/os/$arch
+
+Server = http://mirror.lty.me/archlinux/$repo/os/$arch
+Server = https://mirror.lty.me/archlinux/$repo/os/$arch
+
+Server = https://mirror.pkgbuild.com/$repo/os/$arch
+
+Server = http://iad.mirrors.misaka.one/archlinux/$repo/os/$arch
+Server = https://iad.mirrors.misaka.one/archlinux/$repo/os/$arch
+
+Server = http://archlinux.thaller.ws/$repo/os/$arch
+Server = https://archlinux.thaller.ws/$repo/os/$arch
+
+Server = https://america.mirror.pkgbuild.com/$repo/os/$arch
+
+Server = http://mirror.wtnet.de/arch/$repo/os/$arch
+Server = https://mirror.wtnet.de/arch/$repo/os/$arch
+
+Server = http://arlm.tyzoid.com/$repo/os/$arch
+Server = https://arlm.tyzoid.com/$repo/os/$arch
+
+Server = http://phinau.de/arch/$repo/os/$arch
+Server = https://phinau.de/arch/$repo/os/$arch
+
+Server = http://arch.hu.fo/archlinux/$repo/os/$arch
+Server = https://arch.hu.fo/archlinux/$repo/os/$arch
+
+Server = http://mirror.chaoticum.net/arch/$repo/os/$arch
+Server = https://mirror.chaoticum.net/arch/$repo/os/$arch
+
+Server = http://archmirror1.octyl.net/$repo/os/$arch
+Server = https://archmirror1.octyl.net/$repo/os/$arch
+
+Server = http://arch.jensgutermuth.de/$repo/os/$arch
+Server = https://arch.jensgutermuth.de/$repo/os/$arch
+
+Server = http://mirror.hackingand.coffee/arch/$repo/os/$arch
+Server = https://mirror.hackingand.coffee/arch/$repo/os/$arch
+
+Server = http://arch.mirror.zachlge.org/$repo/os/$arch
+Server = https://arch.mirror.zachlge.org/$repo/os/$arch
+
+Server = http://mirror.arizona.edu/archlinux/$repo/os/$arch
+Server = https://mirror.arizona.edu/archlinux/$repo/os/$arch
+
+Server = http://mirror.mikrogravitation.org/archlinux/$repo/os/$arch
+Server = https://mirror.mikrogravitation.org/archlinux/$repo/os/$arch
+
+Server = http://mirrors.lug.mtu.edu/archlinux/$repo/os/$arch
+Server = https://mirrors.lug.mtu.edu/archlinux/$repo/os/$arch
+
+Server = http://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
+Server = https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
+Server = https://mirror.bethselamin.de/$repo/os/$arch
+Server = http://mirror.23m.com/archlinux/$repo/os/$arch
+Server = https://mirror.23m.com/archlinux/$repo/os/$arch
+Server = http://mirror.moson.org/arch/$repo/os/$arch
+Server = https://mirror.moson.org/arch/$repo/os/$arch
+Server = http://mirror.ubrco.de/archlinux/$repo/os/$arch
+Server = https://mirror.ubrco.de/archlinux/$repo/os/$arch
+Server = http://mirrors.niyawe.de/archlinux/$repo/os/$arch
+Server = https://mirrors.niyawe.de/archlinux/$repo/os/$arch
diff --git a/mkarchiso b/mkarchiso
index 13b9937..fce55cc 100755
--- a/mkarchiso
+++ b/mkarchiso
@@ -1,36 +1,55 @@
-#!/bin/bash
+#!/usr/bin/env bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
set -e -u
-export LANG=C
+# Control the environment
+umask 0022
+export LANG="C"
+export SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-"$(date +%s)"}"
-app_name=${0##*/}
-arch=$(uname -m)
+# Set application name from the script's file name
+app_name="${0##*/}"
+
+# Define global variables. All of them will be overwritten later
pkg_list=()
-run_cmd=""
-quiet="y"
-pacman_conf="/etc/pacman.conf"
-iso_label="ARCH_$(date +%Y%m)"
-iso_publisher="Arch Linux "
-iso_application="Arch Linux Live/Rescue CD"
-install_dir="arch"
-work_dir="work"
-out_dir="out"
-sfs_mode="sfs"
-sfs_comp="xz"
-gpg_key=
+quiet=""
+work_dir=""
+out_dir=""
+img_name=""
+gpg_key=""
+iso_name=""
+iso_label=""
+iso_publisher=""
+iso_application=""
+iso_version=""
+install_dir=""
+arch=""
+pacman_conf=""
+packages=""
+bootmodes=()
+airootfs_image_type=""
+airootfs_image_tool_options=()
+declare -A file_permissions=()
script_path="$( cd -P "$( dirname "$(readlink -f "$0")" )" && pwd )"
# executed inside _mkairootfs_sfs right before squashfs
-RUN_BEFORE_SQUASHFS=${script_path}/run_before_squashfs.sh
+RUN_BEFORE_SQUASHFS=$script_path/run_before_squashfs.sh
+
# Show an INFO message
# $1: message string
_msg_info() {
local _msg="${1}"
- echo "[mkarchiso] INFO: ${_msg}"
+ [[ "${quiet}" == "y" ]] || printf '[%s] INFO: %s\n' "${app_name}" "${_msg}"
+}
+
+# Show a WARNING message
+# $1: message string
+_msg_warning() {
+ local _msg="${1}"
+ printf '[%s] WARNING: %s\n' "${app_name}" "${_msg}" >&2
}
# Show an ERROR message then exit with status
@@ -39,137 +58,84 @@ _msg_info() {
_msg_error() {
local _msg="${1}"
local _error=${2}
- echo
- echo "[mkarchiso] ERROR: ${_msg}"
- echo
- if [[ ${_error} -gt 0 ]]; then
+ printf '[%s] ERROR: %s\n' "${app_name}" "${_msg}" >&2
+ if (( _error > 0 )); then
exit "${_error}"
fi
}
-_chroot_init() {
- mkdir -p ${work_dir}/airootfs
- _pacman base syslinux
-}
-
-_chroot_run() {
- eval arch-chroot ${work_dir}/airootfs "${run_cmd}"
-}
-
_mount_airootfs() {
trap "_umount_airootfs" EXIT HUP INT TERM
- mkdir -p "${work_dir}/mnt/airootfs"
- _msg_info "Mounting '${work_dir}/airootfs.img' on '${work_dir}/mnt/airootfs'"
- mount "${work_dir}/airootfs.img" "${work_dir}/mnt/airootfs"
+ install -d -m 0755 -- "${work_dir}/mnt/airootfs"
+ _msg_info "Mounting '${airootfs_dir}.img' on '${work_dir}/mnt/airootfs'..."
+ mount -- "${airootfs_dir}.img" "${work_dir}/mnt/airootfs"
_msg_info "Done!"
}
_umount_airootfs() {
- _msg_info "Unmounting '${work_dir}/mnt/airootfs'"
- umount -d "${work_dir}/mnt/airootfs"
+ _msg_info "Unmounting '${work_dir}/mnt/airootfs'..."
+ umount -d -- "${work_dir}/mnt/airootfs"
_msg_info "Done!"
- rmdir "${work_dir}/mnt/airootfs"
+ rmdir -- "${work_dir}/mnt/airootfs"
trap - EXIT HUP INT TERM
}
# Show help usage, with an exit status.
# $1: exit status number.
-_usage ()
-{
- echo "usage ${app_name} [options] command "
- echo " general options:"
- echo " -p PACKAGE(S) Package(s) to install, can be used multiple times"
- echo " -r Run inside airootfs"
- echo " -C Config file for pacman."
- echo " Default: '${pacman_conf}'"
- echo " -L