Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
f058b9155b | |||
7c3d1343e8 | |||
80b14b7f1f | |||
29a1e98c0e | |||
8bcb311bbd | |||
0c5816fac2 | |||
4b802be860 | |||
8621191465 | |||
b019f42ee1 | |||
205d668630 | |||
3ae2972d2b |
12
Makefile
12
Makefile
@@ -5,7 +5,6 @@ PREFIX ?= /usr
|
||||
SYSCONFDIR = /etc
|
||||
BINDIR = $(PREFIX)/bin
|
||||
DATADIR = $(PREFIX)/share
|
||||
CPIODIR = $(SYSCONFDIR)/initcpio
|
||||
|
||||
BASE_CONF = \
|
||||
data/conf/artools-base.conf
|
||||
@@ -88,9 +87,6 @@ PKG_DATA = \
|
||||
data/pacman/makepkg.conf \
|
||||
data/valid-names.conf
|
||||
|
||||
PROTO = \
|
||||
$(wildcard data/proto/*.proto)
|
||||
|
||||
PATCHES = \
|
||||
$(wildcard data/patches/*.patch)
|
||||
|
||||
@@ -164,13 +160,7 @@ install_pkg:
|
||||
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
|
||||
install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
|
||||
|
||||
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/proto
|
||||
install $(FILEMODE) $(PROTO) $(DESTDIR)$(DATADIR)/$(TOOLS)/proto
|
||||
|
||||
install_cpio:
|
||||
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
|
||||
|
||||
install_iso: install_cpio
|
||||
install_iso:
|
||||
install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||
install $(FILEMODE) $(ISO_CONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||
|
||||
|
@@ -30,7 +30,6 @@ artools
|
||||
* dosfstools
|
||||
* libisoburn
|
||||
* squashfs-tools
|
||||
* mkinitcpio
|
||||
* grub
|
||||
|
||||
#### Configuration
|
||||
|
@@ -32,6 +32,7 @@ kill_chroot_process(){
|
||||
fi
|
||||
fi
|
||||
done
|
||||
sleep 1
|
||||
}
|
||||
|
||||
# umask might have been changed in /etc/profile
|
||||
|
@@ -138,7 +138,7 @@ make_bootfs() {
|
||||
if "${use_dracut}"; then
|
||||
prepare_initramfs_dracut "${bootfs}"
|
||||
else
|
||||
prepare_initramfs "${bootfs}"
|
||||
prepare_initramfs_mkinitcpio "${bootfs}"
|
||||
fi
|
||||
|
||||
umount_overlayfs
|
||||
@@ -161,7 +161,7 @@ make_grub(){
|
||||
if ${use_dracut}; then
|
||||
configure_grub_dracut
|
||||
else
|
||||
configure_grub
|
||||
configure_grub_mkinitcpio
|
||||
fi
|
||||
|
||||
: > "${work_dir}"/grub.lock
|
||||
@@ -207,6 +207,10 @@ prepare_build(){
|
||||
live_dir=/LiveOS
|
||||
|
||||
mnt_dir=${chroots_iso}/${profile}/mnt
|
||||
|
||||
if [[ -n "${GPG_KEY}" ]]; then
|
||||
${use_dracut} || export_gpg_publickey
|
||||
fi
|
||||
}
|
||||
|
||||
display_settings(){
|
||||
@@ -328,7 +332,7 @@ usage() {
|
||||
echo ' -i <name> Init system to use'
|
||||
echo " [default: ${INITSYS}]"
|
||||
echo ' -g <key> The gpg key for img signing'
|
||||
echo " [default: ${GPG_KEY}]"
|
||||
echo " [default: none]"
|
||||
echo ' -m Set SquashFS image mode to persistence'
|
||||
echo ' -c Disable clean work dir'
|
||||
echo ' -x Build chroot only'
|
||||
|
@@ -115,27 +115,29 @@ path_config() {
|
||||
. "$pkgbuild"
|
||||
}
|
||||
|
||||
get_commit_msg() {
|
||||
get_repo_commit_msg() {
|
||||
echo "[${repo_src}] -> [${repo_dest}] '${package}-$(get_full_version)' ${action}"
|
||||
}
|
||||
|
||||
get_commit_msg() {
|
||||
echo "[${repo_src}] '${package}-$(get_full_version)' ${action}"
|
||||
}
|
||||
|
||||
commit_pkg() {
|
||||
local commit_msg pkg
|
||||
if ${remove}; then
|
||||
action='remove'
|
||||
commit_msg="[${repo_src}] '$pkg' ${action}"
|
||||
commit_msg=$(get_commit_msg)
|
||||
msg "Action: %s" "$commit_msg"
|
||||
if [[ "${repo_src}" == 'trunk' ]];then
|
||||
pkg=${package}
|
||||
git rm -r trunk
|
||||
else
|
||||
pkg="${package}-$(get_full_version)"
|
||||
prepare_commit
|
||||
git rm -r "$CARCH/${repo_src}"
|
||||
fi
|
||||
else
|
||||
action='modify'
|
||||
commit_msg="[${repo_src}] '${package}-$(get_full_version)' ${action}"
|
||||
commit_msg=$(get_commit_msg)
|
||||
msg "Action: %s" "$commit_msg"
|
||||
git add .
|
||||
fi
|
||||
@@ -146,7 +148,7 @@ repo_commit_pkg() {
|
||||
local commit_msg
|
||||
if [[ "${repo_src}" == 'trunk' ]]; then
|
||||
action='add'
|
||||
commit_msg=$(get_commit_msg)
|
||||
commit_msg=$(get_repo_commit_msg)
|
||||
msg "Action: %s" "$commit_msg"
|
||||
prepare_commit
|
||||
check_rebuild
|
||||
@@ -154,7 +156,7 @@ repo_commit_pkg() {
|
||||
else
|
||||
action='move'
|
||||
[[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild"
|
||||
commit_msg=$(get_commit_msg)
|
||||
commit_msg=$(get_repo_commit_msg)
|
||||
msg "Action: %s" "$commit_msg"
|
||||
prepare_commit
|
||||
cp "$CARCH/${repo_src}"/* "$CARCH/${repo_dest}"/
|
||||
|
@@ -35,7 +35,6 @@ REPO_DB_PREFIX=
|
||||
REPO_DB_SUFFIX=
|
||||
LOCKFILE=
|
||||
CLEAN_LOCK=0
|
||||
PREVENT_DOWNGRADE=0
|
||||
|
||||
# ensure we have a sane umask set
|
||||
umask 0022
|
||||
@@ -53,7 +52,6 @@ Multiple packages to add can be specified on the command line.\n"
|
||||
printf -- "\n"
|
||||
printf -- "Options:\n"
|
||||
printf -- " -n, --new only add packages that are not already in the database\n"
|
||||
printf -- " -p, --prevent-downgrade do not add package to database if a newer version is already present\n"
|
||||
elif [[ $cmd == "links-remove" ]] ; then
|
||||
printf -- "Usage: links-remove [options] <path-to-db> <packagename> ...\n"
|
||||
printf -- "\n"
|
||||
@@ -193,18 +191,6 @@ db_write_entry() {
|
||||
if (( ONLYADDNEW )); then
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
pkgentry=$(find_pkgentry "$pkgname")
|
||||
if [[ -n $pkgentry ]]; then
|
||||
|
||||
local version=$(sed -n '/^%VERSION%$/ {n;p;q}' "$pkgentry/desc")
|
||||
if (( $(vercmp "$version" "$pkgver") > 0 )); then
|
||||
warning "A newer version for '%s' is already present in database" "$pkgname"
|
||||
if (( PREVENT_DOWNGRADE )); then
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# remove an existing entry if it exists, ignore failures
|
||||
@@ -467,7 +453,6 @@ while (( $# )); do
|
||||
-s|--sign) SIGN=1 ;;
|
||||
-k|--key) KEY=1 ; shift; GPGKEY=$1 ;;
|
||||
-v|--verify) VERIFY=1 ;;
|
||||
-p|--prevent-downgrade) PREVENT_DOWNGRADE=1 ;;
|
||||
*) args+=("$1") ;;
|
||||
esac
|
||||
shift
|
||||
|
@@ -8,8 +8,13 @@
|
||||
# the dist release; default: auto
|
||||
# ISO_VERSION=$(date +%Y%m%d)
|
||||
|
||||
# possible values: openrc, runit, s6, 66
|
||||
# possible values: openrc, runit, s6, suite66
|
||||
# INITSYS="openrc"
|
||||
|
||||
# gpg key; leave empty or commented to skip img signing
|
||||
# GPG_KEY=""
|
||||
|
||||
# mksquashfs compression
|
||||
# default: zstd <compression-level> should be 1 .. 22 (default 15)
|
||||
# optional xz args: COMPRESSION_ARGS=(-comp xz -Xbcj x86)
|
||||
#COMPRESSION_ARGS=(-comp zstd -Xcompression-level 22)
|
||||
|
@@ -13,8 +13,8 @@
|
||||
# packages-openrc
|
||||
# packages-runit
|
||||
# packages-s6
|
||||
# packages-66
|
||||
# packages-python
|
||||
# packages-suite66
|
||||
# python-world
|
||||
# packages-perl
|
||||
# packages-java
|
||||
# packages-ruby
|
||||
@@ -30,6 +30,10 @@
|
||||
# packages-devel
|
||||
# packages-lib32
|
||||
# packages-qt6
|
||||
# packages-office
|
||||
# packages-misc
|
||||
# packages-python
|
||||
# python-galaxy
|
||||
# )
|
||||
|
||||
# TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux
|
||||
|
@@ -1,38 +0,0 @@
|
||||
# Maintainer: Your Name <youremail@domain.com>
|
||||
|
||||
pkgname=NAME-openrc
|
||||
pkgver=VERSION
|
||||
pkgrel=1
|
||||
epoch=
|
||||
pkgdesc="Openrc NAME init script"
|
||||
arch=('any')
|
||||
url="https://gitea.artixlinux.org/artixlinux/packages-openrc"
|
||||
license=('GPL2')
|
||||
groups=()
|
||||
depends=("openrc" "NAME")
|
||||
makedepends=()
|
||||
checkdepends=()
|
||||
optdepends=()
|
||||
provides=("init-NAME")
|
||||
conflicts=("init-NAME")
|
||||
replaces=()
|
||||
backup=()
|
||||
options=()
|
||||
install=
|
||||
changelog=
|
||||
source=(NAME.{confd,initd})
|
||||
sha256sums=()
|
||||
|
||||
_inst_openrc() {
|
||||
local sv="$1"
|
||||
if [ -f "${srcdir}/$sv".confd ]; then
|
||||
install -Dm644 "${srcdir}/$sv".confd "${pkgdir}"/etc/conf.d/"$sv"
|
||||
fi
|
||||
if [ -f "${srcdir}/$sv".initd ]; then
|
||||
install -Dm755 "${srcdir}/$sv".initd "${pkgdir}"/etc/init.d/"$sv"
|
||||
fi
|
||||
}
|
||||
|
||||
package() {
|
||||
_inst_openrc "NAME"
|
||||
}
|
@@ -1,41 +0,0 @@
|
||||
# Maintainer: Your Name <youremail@domain.com>
|
||||
|
||||
pkgname=NAME-runit
|
||||
pkgver=VERSION
|
||||
pkgrel=1
|
||||
epoch=
|
||||
pkgdesc="Runit NAME init script"
|
||||
arch=('any')
|
||||
url="https://gitea.artixlinux.org/artixlinux/packages-runit"
|
||||
license=('GPL2')
|
||||
groups=()
|
||||
depends=("runit" "NAME")
|
||||
makedepends=()
|
||||
checkdepends=()
|
||||
optdepends=()
|
||||
provides=("init-NAME")
|
||||
conflicts=("init-NAME")
|
||||
replaces=()
|
||||
backup=()
|
||||
options=()
|
||||
install=
|
||||
changelog=
|
||||
source=(NAME.{run,finish,check})
|
||||
sha256sums=()
|
||||
|
||||
_inst_runit() {
|
||||
local sv="$1"
|
||||
if [ -f "${srcdir}/$sv".conf ]; then
|
||||
install -Dm644 "${srcdir}/$sv".conf "${pkgdir}"/etc/runit/sv/"$sv"/conf
|
||||
fi
|
||||
|
||||
for f in run finish check; do
|
||||
if [ -f "${srcdir}/$sv.$f" ]; then
|
||||
install -Dm755 "${srcdir}/$sv.$f" "${pkgdir}"/etc/runit/sv/"$sv/$f"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
_inst_runit "NAME"
|
||||
}
|
@@ -1,39 +0,0 @@
|
||||
# Maintainer: Your Name <youremail@domain.com>
|
||||
|
||||
pkgname=NAME-s6
|
||||
pkgver=VERSION
|
||||
pkgrel=1
|
||||
epoch=
|
||||
pkgdesc="S6 NAME init script"
|
||||
arch=('any')
|
||||
url="https://gitea.artixlinux.org/artixlinux/packages-s6"
|
||||
license=('GPL2')
|
||||
groups=()
|
||||
depends=("s6-base" "NAME")
|
||||
makedepends=()
|
||||
checkdepends=()
|
||||
optdepends=()
|
||||
provides=("init-NAME")
|
||||
conflicts=("init-NAME")
|
||||
replaces=()
|
||||
backup=()
|
||||
options=()
|
||||
install=
|
||||
changelog=
|
||||
source=(NAME.{dependencies,down,up,type})
|
||||
sha256sums=()
|
||||
|
||||
|
||||
_inst_s6(){
|
||||
local sv="$1"
|
||||
for f in dependencies down type up; do
|
||||
if [ -f "${srcdir}/$sv.$f" ]; then
|
||||
install -Dm644 "${srcdir}/$sv.$f" "${pkgdir}"/etc/s6/sv/"$sv/$f"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
_inst_s6 "NAME"
|
||||
}
|
||||
|
@@ -1,34 +0,0 @@
|
||||
# Maintainer: Your Name <youremail@domain.com>
|
||||
|
||||
pkgname=NAME-66
|
||||
pkgver=VERSION
|
||||
pkgrel=1
|
||||
epoch=
|
||||
pkgdesc="Suite66 NAME init script"
|
||||
arch=('any')
|
||||
url="https://gitea.artixlinux.org/artixlinux/packages-66"
|
||||
license=('GPL2')
|
||||
groups=()
|
||||
depends=("suite66-base" "NAME")
|
||||
makedepends=()
|
||||
checkdepends=()
|
||||
optdepends=()
|
||||
provides=("init-NAME")
|
||||
conflicts=("init-NAME")
|
||||
replaces=()
|
||||
backup=()
|
||||
options=()
|
||||
install=
|
||||
changelog=
|
||||
source=(NAME)
|
||||
sha256sums=()
|
||||
|
||||
_inst_66() {
|
||||
local sv="$1"
|
||||
install -Dm644 "$sv" -t "${pkgdir}"/etc/66/service
|
||||
}
|
||||
|
||||
package() {
|
||||
_inst_66 "NAME"
|
||||
}
|
||||
|
@@ -1,23 +0,0 @@
|
||||
DIRMODE = -dm0755
|
||||
MODE = -m0755
|
||||
|
||||
CPIOHOOKS = \
|
||||
$(wildcard hooks/*)
|
||||
|
||||
CPIOINST = \
|
||||
$(wildcard install/*)
|
||||
|
||||
SCRIPT = \
|
||||
$(wildcard script/*)
|
||||
|
||||
install_initcpio:
|
||||
install $(DIRMODE) $(DESTDIR)$(CPIODIR)/hooks
|
||||
install $(MODE) $(CPIOHOOKS) $(DESTDIR)$(CPIODIR)/hooks
|
||||
|
||||
install $(DIRMODE) $(DESTDIR)$(CPIODIR)/install
|
||||
install $(MODE) $(CPIOINST) $(DESTDIR)$(CPIODIR)/install
|
||||
install $(MODE) $(SCRIPT) $(DESTDIR)$(CPIODIR)
|
||||
|
||||
install: install_initcpio
|
||||
|
||||
.PHONY: install
|
@@ -1,275 +0,0 @@
|
||||
# args: source, newroot, mountpoint
|
||||
_mnt_dmsnapshot() {
|
||||
local img="${1}"
|
||||
local mnt="${2}"
|
||||
local img_fullname="${img##*/}";
|
||||
local img_name="${img_fullname%%.*}"
|
||||
local dm_snap_name="${dm_snap_prefix}_${img_name}"
|
||||
local ro_dev ro_dev_size rw_dev
|
||||
|
||||
ro_dev=$(losetup --find --show --read-only "${img}")
|
||||
echo ${ro_dev} >> ${live_root}/used_block_devices
|
||||
ro_dev_size=$(blockdev --getsz ${ro_dev})
|
||||
|
||||
if [[ "${cow_persistent}" == "P" ]]; then
|
||||
if [[ -f "${cow}/${cow_directory}/${img_name}.cow" ]]; then
|
||||
msg ":: Found '${cow}/${cow_directory}/${img_name}.cow', using as persistent."
|
||||
else
|
||||
msg ":: Creating '${cow}/${cow_directory}/${img_name}.cow' as persistent."
|
||||
truncate -s "${cow_spacesize}" "${cow}/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
else
|
||||
if [[ -f "${cow}/${cow_directory}/${img_name}.cow" ]]; then
|
||||
msg ":: Found '${cow}/${cow_directory}/${img_name}.cow' but non-persistent requested, removing."
|
||||
rm -f "${cow}/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
msg ":: Creating '${cow}/${cow_directory}/${img_name}.cow' as non-persistent."
|
||||
truncate -s "${cow_spacesize}" "${cow}/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
|
||||
rw_dev=$(losetup --find --show "${cow}/${cow_directory}/${img_name}.cow")
|
||||
echo ${rw_dev} >> ${live_root}/used_block_devices
|
||||
|
||||
dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}"
|
||||
|
||||
if [[ "${cow_persistent}" != "P" ]]; then
|
||||
rm -f "${cow}/${cow_directory}/${img_name}.cow"
|
||||
fi
|
||||
|
||||
_mnt_dev "/dev/mapper/${dm_snap_name}" "${mnt}" "-w" "defaults"
|
||||
echo $(readlink -f /dev/mapper/${dm_snap_name}) >> ${live_root}/used_block_devices
|
||||
}
|
||||
|
||||
# args: source, newroot, mountpoint
|
||||
_mnt_overlayfs() {
|
||||
local src="${1}"
|
||||
local newroot="${2}"
|
||||
local mnt="${3}"
|
||||
local work_dir="${overlay_root}/work"
|
||||
local upper_dir="${overlay_root}/upper"
|
||||
|
||||
mkdir -p "${upper_dir}" "${work_dir}"
|
||||
|
||||
mount -t overlay overlay -o lowerdir="${src}",upperdir="${upper_dir}",workdir="${work_dir}" "${newroot}${mnt}"
|
||||
}
|
||||
|
||||
# args: /path/to/image_file, mountpoint
|
||||
_mnt_sfs() {
|
||||
local img="${1}"
|
||||
local mnt="${2}"
|
||||
local img_fullname="${img##*/}"
|
||||
local sfs_dev
|
||||
local oper=$( [[ -n "${ip}" && -n "${miso_http_srv}" ]] && echo "mv" || echo "cp" )
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
msg -n ":: Copying squashfs image to RAM..."
|
||||
if ! "${oper}" "${img}" "${cp2ram}/${img_fullname}" ; then
|
||||
echo "ERROR: while copy '${img}' to '${cp2ram}/${img_fullname}'"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
img="${cp2ram}/${img_fullname}"
|
||||
msg "done."
|
||||
fi
|
||||
sfs_dev=$(losetup --find --show --read-only "${img}")
|
||||
echo ${sfs_dev} >> ${live_root}/used_block_devices
|
||||
_mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults"
|
||||
}
|
||||
|
||||
# args: device, mountpoint, flags, opts
|
||||
_mnt_dev() {
|
||||
local dev="${1}"
|
||||
local mnt="${2}"
|
||||
local flg="${3}"
|
||||
local opts="${4}"
|
||||
|
||||
mkdir -p "${mnt}"
|
||||
|
||||
msg ":: Mounting '${dev}' to '${mnt}'"
|
||||
|
||||
while ! poll_device "${dev}" 30; do
|
||||
echo "ERROR: '${dev}' device did not show up after 30 seconds..."
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
done
|
||||
|
||||
if mount -o "${opts}" "${flg}" "${dev}" "${mnt}"; then
|
||||
msg ":: Device '${dev}' mounted successfully."
|
||||
else
|
||||
echo "ERROR; Failed to mount '${dev}'"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
}
|
||||
|
||||
_verify_checksum() {
|
||||
local _status
|
||||
cd "${bootmnt}/${root}"
|
||||
sha512sum -c $1.img.sha512 > /tmp/checksum.log 2>&1
|
||||
_status=$?
|
||||
cd "${OLDPWD}"
|
||||
return ${_status}
|
||||
}
|
||||
|
||||
_verify_signature() {
|
||||
local _status
|
||||
cd "${bootmnt}/${root}"
|
||||
gpg --homedir /gpg --status-fd 1 --verify $1.img.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG'
|
||||
_status=$?
|
||||
cd "${OLDPWD}"
|
||||
return ${_status}
|
||||
}
|
||||
|
||||
run_hook() {
|
||||
[[ -z "${copytoram_size}" ]] && copytoram_size="75%"
|
||||
[[ -z "${root}" ]] && root="LiveOS"
|
||||
|
||||
[[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="artix"
|
||||
[[ -z "${artixdevice}" ]] && artixdevice="/dev/disk/by-label/${label}"
|
||||
[[ -z "${cow_spacesize}" ]] && cow_spacesize="256M"
|
||||
[[ -z "${overlay_root_size}" ]] && overlay_root_size="75%"
|
||||
|
||||
if [[ -n "${cow_label}" ]]; then
|
||||
cow_device="/dev/disk/by-label/${cow_label}"
|
||||
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
||||
elif [[ -n "${cow_device}" ]]; then
|
||||
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
||||
else
|
||||
cow_persistent="N"
|
||||
fi
|
||||
|
||||
[[ -z "${cow_flags}" ]] && cow_flags="defaults"
|
||||
[[ -z "${cow_directory}" ]] && cow_directory="persistent_${label}"
|
||||
[[ -z "${cow_chunksize}" ]] && cow_chunksize="8"
|
||||
[[ -z "${overlay}" ]] && overlay=""
|
||||
|
||||
lower_dir=''
|
||||
live_root="/run/artix"
|
||||
bootmnt="${live_root}/bootmnt"
|
||||
overlay_root="${live_root}/overlay_root"
|
||||
cow="${live_root}/cowspace"
|
||||
cp2ram="${live_root}/copytoram"
|
||||
|
||||
# set mount handler for artix
|
||||
mount_handler="artix_mount_handler"
|
||||
}
|
||||
|
||||
_check_sum() {
|
||||
local fs="${1}"
|
||||
if [[ -f "${bootmnt}/${root}/${fs}.img" ]]; then
|
||||
if [[ -f "${bootmnt}/${root}/${fs}.img.md5" ]]; then
|
||||
msg -n ":: Self-test requested, please wait..."
|
||||
if _verify_checksum "${fs}"; then
|
||||
msg "done. Checksum is OK, continue booting."
|
||||
else
|
||||
echo "ERROR: one or more files are corrupted"
|
||||
echo "see /tmp/checksum.log for details"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
else
|
||||
echo "ERROR: checksum=y option specified but ${root}/${fs}.img.md5 not found"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_check_sig() {
|
||||
local fs="${1}"
|
||||
if [[ -f "${bootmnt}/${root}/${fs}.img" ]]; then
|
||||
if [[ -f "${bootmnt}/${root}/${fs}.img.sig" ]]; then
|
||||
msg -n ":: Signature verification requested, please wait..."
|
||||
if _verify_signature "${fs}"; then
|
||||
msg "done. Signature is OK, continue booting."
|
||||
else
|
||||
echo "ERROR: one or more files are corrupted"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
else
|
||||
echo "ERROR: verify=y option specified but ${root}/${fs}.img.sig not found"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_gen_arg() {
|
||||
local arg="${1}"
|
||||
echo "${lower_dir:-}${lower_dir:+:}${arg}"
|
||||
}
|
||||
|
||||
_mount_root_overlayfs() {
|
||||
local sfs="${1}"
|
||||
local src="${bootmnt}/${root}"
|
||||
local dest_sfs="${live_root}/sfs"
|
||||
local dest_img="${live_root}/img"
|
||||
|
||||
if [[ -f "${src}/${sfs}.img" ]]; then
|
||||
_mnt_sfs "${src}/${sfs}.img" "${dest_sfs}/${sfs}"
|
||||
local find_img="${dest_sfs}/${sfs}/LiveOS/${sfs}.img"
|
||||
if [[ -f "${find_img}" ]]; then
|
||||
mkdir -p ${dest_img}
|
||||
lower_dir=$(_gen_arg "${dest_img}/${sfs}")
|
||||
_mnt_dmsnapshot "${find_img}" "${dest_img}/${sfs}"
|
||||
else
|
||||
lower_dir=$(_gen_arg "${dest_sfs}/${sfs}")
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# This function is called normally from init script, but it can be called
|
||||
# as chain from other mount handlers.
|
||||
# args: /path/to/newroot
|
||||
artix_mount_handler() {
|
||||
local newroot="${1}"
|
||||
|
||||
if ! mountpoint -q "${bootmnt}"; then
|
||||
_mnt_dev "${artixdevice}" "${bootmnt}" "-r" "defaults"
|
||||
if [[ "${copytoram}" != "y" ]]; then
|
||||
echo $(readlink -f ${artixdevice}) >> ${live_root}/used_block_devices
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${checksum}" == "y" ]]; then
|
||||
_check_sum "rootfs"
|
||||
[[ -n "${overlay}" ]] && _check_sum "${overlay}"
|
||||
fi
|
||||
|
||||
if [[ "${verify}" == "y" ]]; then
|
||||
_check_sig "rootfs"
|
||||
[[ -n "${overlay}" ]] && _check_sig "${overlay}"
|
||||
fi
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
msg ":: Mounting ${cp2ram} (tmpfs) filesystem, size=${copytoram_size}"
|
||||
mkdir -p ${cp2ram}
|
||||
mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram ${cp2ram}
|
||||
fi
|
||||
|
||||
if [[ -n "${cow_device}" ]]; then
|
||||
_mnt_dev "${cow_device}" "${cow}" "-r" "${cow_flags}"
|
||||
echo $(readlink -f ${cow_device}) >> ${live_root}/used_block_devices
|
||||
mount -o remount,rw "${cow}"
|
||||
else
|
||||
msg ":: Mounting ${cow} (tmpfs) filesystem, size=${cow_spacesize}..."
|
||||
mkdir -p ${cow}
|
||||
mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace ${cow}
|
||||
fi
|
||||
mkdir -p -m 0700 "${cow}/${cow_directory}"
|
||||
|
||||
msg -n ":: Mounting overlay root (tmpfs) filesystem, size=${overlay_root_size}..."
|
||||
mkdir -p ${overlay_root}
|
||||
mount -t tmpfs -o "size=${overlay_root_size}",mode=0755 overlay_root ${overlay_root}
|
||||
|
||||
[[ -n "${overlay}" ]] && _mount_root_overlayfs "${overlay}"
|
||||
_mount_root_overlayfs "rootfs"
|
||||
|
||||
_mnt_overlayfs "${lower_dir}" "${newroot}" "/"
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
umount -d ${bootmnt}
|
||||
mkdir -p ${bootmnt}/${root}
|
||||
mount -o bind ${cp2ram} ${bootmnt}/${root}
|
||||
fi
|
||||
}
|
||||
|
||||
# vim:ft=sh:ts=4:sw=4:et:
|
@@ -1,35 +0,0 @@
|
||||
# vim: set ft=sh:
|
||||
|
||||
run_hook () {
|
||||
[[ -n "${img_label}" ]] && img_dev="/dev/disk/by-label/${img_label}"
|
||||
[[ -z "${img_flags}" ]] && img_flags="defaults"
|
||||
if [[ -n "${img_dev}" && -n "${img_loop}" ]]; then
|
||||
mount_handler="artix_loop_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
artix_loop_mount_handler () {
|
||||
newroot="${1}"
|
||||
|
||||
local _dev_loop
|
||||
|
||||
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
|
||||
_mnt_dev "${img_dev}" "${live_root}/img_dev" "-r" "${img_flags}"
|
||||
if [[ "${copytoram}" != "y" ]]; then
|
||||
echo $(readlink -f ${img_dev}) >> ${live_root}/used_block_devices
|
||||
fi
|
||||
|
||||
if _dev_loop=$(losetup --find --show --read-only "${live_root}/img_dev/${img_loop}"); then
|
||||
artixdevice="${_dev_loop}"
|
||||
else
|
||||
echo "ERROR: Setting loopback device for file '${live_root}/img_dev/${img_loop}'"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
|
||||
artix_mount_handler ${newroot}
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
losetup -d ${_dev_loop} 2>/dev/null
|
||||
umount ${live_root}/img_dev
|
||||
fi
|
||||
}
|
@@ -1,72 +0,0 @@
|
||||
# vim: set ft=sh:
|
||||
|
||||
run_hook () {
|
||||
# Do *not* declare 'bootif_dev' local! We need it in run_latehook().
|
||||
local i net_mac bootif_mac
|
||||
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
||||
local DEVICE
|
||||
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
|
||||
local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH
|
||||
local filename
|
||||
# /tmp/net-*.conf
|
||||
|
||||
if [[ -n "${ip}" ]]; then
|
||||
if [[ -n "${BOOTIF}" ]]; then
|
||||
bootif_mac=${BOOTIF#01-}
|
||||
bootif_mac=${bootif_mac//-/:}
|
||||
for i in /sys/class/net/*/address; do
|
||||
read net_mac < ${i}
|
||||
if [[ "${bootif_mac}" == "${net_mac}" ]]; then
|
||||
bootif_dev=${i#/sys/class/net/}
|
||||
bootif_dev=${bootif_dev%/address}
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ "${ip}" == "dhcp" ]]; then
|
||||
ip=":::::${bootif_dev}:dhcp"
|
||||
else
|
||||
ip="${ip}::${bootif_dev}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# setup network and save some values
|
||||
if ! ipconfig -t 20 "ip=${ip}"; then
|
||||
echo "ERROR; Failed to configure network"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
|
||||
. /tmp/net-*.conf
|
||||
|
||||
pxeserver=${ROOTSERVER}
|
||||
|
||||
# setup DNS resolver
|
||||
if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then
|
||||
echo "# added by artix_pxe_common hook" > /etc/resolv.conf
|
||||
echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf
|
||||
fi
|
||||
if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then
|
||||
echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf
|
||||
fi
|
||||
if [[ -n "${DNSDOMAIN}" ]]; then
|
||||
echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
|
||||
echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
run_latehook () {
|
||||
if [[ -n "${ip}" ]]; then
|
||||
[[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y"
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
if [[ -n "${bootif_dev}" ]]; then
|
||||
ip addr flush dev "${bootif_dev}"
|
||||
ip link set "${bootif_dev}" down
|
||||
fi
|
||||
elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then
|
||||
cp /etc/resolv.conf /new_root/etc/resolv.conf
|
||||
fi
|
||||
fi
|
||||
}
|
@@ -1,63 +0,0 @@
|
||||
# vim: set ft=sh:
|
||||
|
||||
run_hook() {
|
||||
if [[ -n "${ip}" && -n "${artix_http_srv}" ]]; then
|
||||
|
||||
# booting with http is always copy-to-ram, so set here to make sure
|
||||
# addresses are flushed and interface is set down
|
||||
copytoram="y"
|
||||
|
||||
artix_http_srv=$(eval echo ${artix_http_srv})
|
||||
[[ -z "${artix_http_spc}" ]] && artix_http_spc="75%"
|
||||
|
||||
mount_handler="artix_pxe_http_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
# Fetch a file with CURL
|
||||
#
|
||||
# $1 URL
|
||||
# $2 Destination directory inside httpspace/${root}
|
||||
_curl_get() {
|
||||
local _url="${1}"
|
||||
local _dst="${2}"
|
||||
|
||||
msg ":: Downloading '${_url}'"
|
||||
if ! curl -L -f -o "${live_root}/httpspace/${root}${_dst}/${_url##*/}" --create-dirs "${_url}"; then
|
||||
echo "ERROR: Downloading '${_url}'"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
}
|
||||
|
||||
_get_sfs() {
|
||||
local _sfs="${2}"
|
||||
local _src=${artix_http_srv}${root}
|
||||
if [[ ! -z "$( curl -s --head "${_src}/${_sfs}.img" | grep "OK" )" ]]; then
|
||||
_curl_get "${_src}/${_sfs}.img" "/"
|
||||
|
||||
if [[ "${checksum}" == "y" ]]; then
|
||||
_curl_get "${_src}/${_sfs}.md5" "/"
|
||||
fi
|
||||
if [[ "${verify}" == "y" ]]; then
|
||||
_curl_get "${_src}/${_sfs}.img.sig" "/"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
artix_pxe_http_mount_handler () {
|
||||
newroot="${1}"
|
||||
|
||||
msg ":: Mounting ${live_root}/httpspace (tmpfs) filesystem, size='${artix_http_spc}'"
|
||||
mkdir -p "${live_root}/httpspace"
|
||||
mount -t tmpfs -o size="${artix_http_spc}",mode=0755 httpspace "${live_root}/httpspace"
|
||||
|
||||
_get_sfs "rootfs"
|
||||
[[ -n "${overlay}" ]] && _mount_root_overlayfs "${overlay}"
|
||||
|
||||
mkdir -p "${bootmnt}"
|
||||
mount -o bind ${live_root}/httpspace ${bootmnt}
|
||||
|
||||
artix_mount_handler ${newroot}
|
||||
}
|
@@ -1,47 +0,0 @@
|
||||
# vim: set ft=sh:
|
||||
|
||||
run_earlyhook() {
|
||||
if [[ -n "${ip}" && -n "${artix_nbd_srv}" ]]; then
|
||||
# Module autoloading like with loop devices does not work, doing manually...
|
||||
modprobe nbd 2> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
run_hook() {
|
||||
if [[ -n "${ip}" && -n "${artix_nbd_srv}" ]]; then
|
||||
|
||||
artix_nbd_srv=$(eval echo ${artix_nbd_srv})
|
||||
[[ -z "${artix_nbd_name}" ]] && artix_nbd_name="artix"
|
||||
|
||||
mount_handler="artix_pxe_nbd_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
artix_pxe_nbd_mount_handler () {
|
||||
newroot="${1}"
|
||||
|
||||
msg ":: Waiting for boot device..."
|
||||
while ! poll_device /dev/nbd0 30; do
|
||||
echo "ERROR: boot device didn't show up after 30 seconds..."
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
done
|
||||
|
||||
msg ":: Setup NBD from ${artix_nbd_srv} at /dev/nbd0"
|
||||
if [[ "${copytoram}" != "n" ]]; then
|
||||
nbd-client ${artix_nbd_srv} -N ${artix_nbd_name} /dev/nbd0
|
||||
copytoram="y"
|
||||
else
|
||||
nbd-client ${artix_nbd_srv} -N ${artix_nbd_name} -persist /dev/nbd0
|
||||
fi
|
||||
|
||||
artixdevice=/dev/nbd0
|
||||
|
||||
artix_mount_handler ${newroot}
|
||||
|
||||
if [[ "${copytoram}" == "y" ]]; then
|
||||
msg ":: Disconnect NBD from ${artix_nbd_srv} at /dev/nbd0"
|
||||
nbd-client -d /dev/nbd0
|
||||
fi
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
# vim: set ft=sh:
|
||||
|
||||
run_hook() {
|
||||
if [[ -n "${ip}" && -n "${artix_nfs_srv}" ]]; then
|
||||
|
||||
artix_nfs_srv=$(eval echo ${artix_nfs_srv})
|
||||
[[ -n "${artix_nfs_opt}" ]] && artix_nfs_opt="-o ${artix_nfs_opt}"
|
||||
|
||||
mount_handler="artix_nfs_mount_handler"
|
||||
fi
|
||||
}
|
||||
|
||||
artix_nfs_mount_handler() {
|
||||
newroot="${1}"
|
||||
mkdir -p "${bootmnt}"
|
||||
msg ":: Mounting '${artix_nfs_srv}'"
|
||||
# Do not put "${artix_nfs_opt}" nfsmount fails!
|
||||
if ! nfsmount ${artix_nfs_opt} "${artix_nfs_srv}" "${bootmnt}"; then
|
||||
echo "ERROR: Mounting '${artix_nfs_srv}'"
|
||||
echo " Falling back to interactive prompt"
|
||||
echo " You can try to fix the problem manually, log out when you are finished"
|
||||
launch_interactive_shell
|
||||
fi
|
||||
|
||||
if [[ "${copytoram}" != "n" ]]; then
|
||||
copytoram="y"
|
||||
fi
|
||||
|
||||
artix_mount_handler ${newroot}
|
||||
}
|
@@ -1,6 +0,0 @@
|
||||
run_cleanuphook() {
|
||||
rm -rf /usr/lib/modules
|
||||
cp -ax / /run/initramfs
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,30 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_module "cdrom"
|
||||
add_module "loop"
|
||||
add_module "dm-snapshot"
|
||||
add_module "overlay"
|
||||
|
||||
add_runscript
|
||||
|
||||
add_binary /usr/lib/udev/cdrom_id
|
||||
add_binary blockdev
|
||||
add_binary dmsetup
|
||||
add_binary losetup
|
||||
add_binary mountpoint
|
||||
add_binary truncate
|
||||
add_binary gpg
|
||||
add_binary grep
|
||||
|
||||
add_file /usr/lib/udev/rules.d/60-cdrom_id.rules
|
||||
add_file /usr/lib/udev/rules.d/10-dm.rules
|
||||
add_file /usr/lib/udev/rules.d/95-dm-notify.rules
|
||||
add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules
|
||||
if [[ $ARTIX_GNUPG_FD ]]; then
|
||||
mkdir -p "$BUILDROOT$dest"/gpg
|
||||
gpg --homedir "$BUILDROOT$dest"/gpg --import <&$ARTIX_GNUPG_FD
|
||||
fi
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_module "radeon"
|
||||
add_module "nouveau"
|
||||
add_module "i915"
|
||||
add_module "via-agp"
|
||||
add_module "sis-agp"
|
||||
add_module "intel-agp"
|
||||
}
|
||||
|
||||
help() {
|
||||
cat << HELPEOF
|
||||
Adds all common KMS drivers to the initramfs image.
|
||||
HELPEOF
|
||||
}
|
@@ -1,13 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_runscript
|
||||
}
|
||||
|
||||
help() {
|
||||
cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via loop device.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,26 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_checked_modules -f "(irda|phy|wimax|wireless|ppp_|plip|pppoe)" "/drivers/net/"
|
||||
|
||||
add_runscript
|
||||
|
||||
add_binary /usr/lib/initcpio/ipconfig /bin/ipconfig
|
||||
|
||||
# Add hosts support files+dns
|
||||
add_symlink /usr/lib/libnss_files.so.2 $(readlink /usr/lib/libnss_files.so.2)
|
||||
add_binary $(readlink -f /usr/lib/libnss_files.so.2)
|
||||
add_symlink /usr/lib/libnss_dns.so.2 $(readlink /usr/lib/libnss_dns.so.2)
|
||||
add_binary $(readlink -f /usr/lib/libnss_dns.so.2)
|
||||
|
||||
add_dir /etc
|
||||
echo "hosts: files dns" > $BUILDROOT/etc/nsswitch.conf
|
||||
}
|
||||
|
||||
help() {
|
||||
cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_runscript
|
||||
|
||||
add_binary curl
|
||||
|
||||
add_file $(readlink -f /etc/ssl/certs/ca-certificates.crt) /etc/ssl/certs/ca-certificates.crt
|
||||
}
|
||||
|
||||
help() {
|
||||
cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE and HTTP.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_module "nbd"
|
||||
|
||||
add_runscript
|
||||
|
||||
add_binary nbd-client
|
||||
}
|
||||
|
||||
help() {
|
||||
cat<<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE and NBD.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_module "nfs"
|
||||
|
||||
add_runscript
|
||||
|
||||
add_binary /usr/lib/initcpio/nfsmount /bin/nfsmount
|
||||
}
|
||||
|
||||
help() {
|
||||
cat <<HELPEOF
|
||||
This hook loads the necessary modules for boot via PXE and NFS.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,20 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
build() {
|
||||
add_binary cp
|
||||
|
||||
add_runscript
|
||||
|
||||
add_file /etc/initcpio/artix_shutdown /shutdown
|
||||
}
|
||||
|
||||
help() {
|
||||
cat <<HELPEOF
|
||||
This hook will create a shutdown initramfs in /run/initramfs
|
||||
that we can pivot to on shutdown in order to unmount / and
|
||||
and others mount points, dm-snapshot devices and loopback devices.
|
||||
Mostly usefull for dm-snapshot persistent.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
# vim: set ft=sh ts=4 sw=4 et:
|
@@ -1,37 +0,0 @@
|
||||
#!/bin/ash
|
||||
|
||||
# /oldroot depends on things inside /oldroot/run/artix...
|
||||
mkdir /oldrun
|
||||
mount -n --move /oldroot/run /oldrun
|
||||
|
||||
# Unmount all mounts now.
|
||||
umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)
|
||||
|
||||
# Remove all dm-snapshot devices.
|
||||
dmsetup remove_all
|
||||
|
||||
# Remove all loopback devices.
|
||||
for _lup in $(grep ^/dev/loop /oldrun/artix/used_block_devices | tac); do
|
||||
if ! losetup -d ${_lup} 2> /dev/null; then
|
||||
umount -d ${_lup}
|
||||
fi
|
||||
done
|
||||
|
||||
# Unmount the space used to store *.cow.
|
||||
umount /oldrun/artix/cowspace
|
||||
|
||||
# Unmount boot device if needed (no copytoram=y used)
|
||||
if [[ ! -d /oldrun/artix/copytoram ]]; then
|
||||
if [[ -d /oldrun/artix/img_dev ]]; then
|
||||
umount /oldrun/artix/img_dev
|
||||
else
|
||||
umount /oldrun/bootmnt
|
||||
fi
|
||||
fi
|
||||
|
||||
# reboot / poweroff / halt, depending on the argument passed by init
|
||||
# if something invalid is passed, we halt
|
||||
case "$1" in
|
||||
reboot|poweroff|halt) "$1" -f ;;
|
||||
*) halt -f;;
|
||||
esac
|
@@ -31,8 +31,8 @@ write_services_s6_conf(){
|
||||
write_services_conf 'svDir' '/etc/s6/sv' 'dbDir' '/etc/s6/rc/compiled' > "$conf"
|
||||
}
|
||||
|
||||
write_services_66_conf(){
|
||||
local conf="$1"/services-66.conf
|
||||
write_services_suite66_conf(){
|
||||
local conf="$1"/services-suite66.conf
|
||||
write_services_conf 'svDir' '/etc/66/service' 'runsvDir' '/var/lib/66/system' > "$conf"
|
||||
}
|
||||
|
||||
|
@@ -2,20 +2,6 @@
|
||||
|
||||
#{{{ grub
|
||||
|
||||
configure_grub(){
|
||||
msg "Configuring grub kernel options ..."
|
||||
local ro_opts=()
|
||||
local rw_opts=()
|
||||
local kopts=("label=${iso_label}")
|
||||
|
||||
[[ "${profile}" != 'base' ]] && kopts+=('overlay=livefs')
|
||||
|
||||
sed -e "s|@kopts@|${kopts[*]}|" \
|
||||
-e "s|@ro_opts@|${ro_opts[*]}|" \
|
||||
-e "s|@rw_opts@|${rw_opts[*]}|" \
|
||||
-i "${iso_root}"/boot/grub/kernels.cfg
|
||||
}
|
||||
|
||||
prepare_grub(){
|
||||
local platform=i386-pc img='core.img' prefix=/boot/grub
|
||||
local lib="$1"/usr/lib/grub
|
||||
@@ -23,7 +9,6 @@ prepare_grub(){
|
||||
local livecfg="$2"/usr/share/grub
|
||||
local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
|
||||
|
||||
|
||||
prepare_dir "${grub}/${platform}"
|
||||
|
||||
cp "${livecfg}"/cfg/*.cfg "${grub}"
|
||||
|
@@ -2,56 +2,71 @@
|
||||
|
||||
#{{{ initcpio
|
||||
|
||||
write_mkinitcpio_conf() {
|
||||
msg2 "Writing mkinitcpio.conf ..."
|
||||
local conf="$1/etc/mkinitcpio-artix.conf"
|
||||
printf "%s\n" 'MODULES=(loop dm-snapshot)' > "$conf"
|
||||
printf "%s\n" 'COMPRESSION="xz"' >> "$conf"
|
||||
if [[ "${profile}" == 'base' ]];then
|
||||
printf "%s\n" 'HOOKS=(base udev artix_shutdown artix artix_loop_mnt
|
||||
artix_pxe_common artix_pxe_http artix_pxe_nbd artix_pxe_nfs
|
||||
artix_kms modconf block filesystems keyboard keymap)' >> "$conf"
|
||||
else
|
||||
printf "%s\n" 'HOOKS=(base udev artix_shutdown artix artix_loop_mnt
|
||||
artix_kms modconf block filesystems keyboard keymap)' >> "$conf"
|
||||
make_checksum(){
|
||||
local file="$1"
|
||||
msg2 "Creating md5sum ..."
|
||||
cd "${iso_root}${live_dir}"
|
||||
md5sum "$file" > "$file".md5
|
||||
cd "${OLDPWD}"
|
||||
}
|
||||
|
||||
make_sig () {
|
||||
local file="$1"
|
||||
msg2 "Creating signature file..."
|
||||
chown "${owner}:$(id --group "${owner}")" "${iso_root}${live_dir}"
|
||||
su "${owner}" -c "gpg --detach-sign --output $file.sig --default-key ${GPG_KEY} $file"
|
||||
chown "root:root" "${iso_root}${live_dir}"
|
||||
}
|
||||
|
||||
export_gpg_publickey() {
|
||||
key_export=${WORKSPACE_DIR}/pubkey.gpg
|
||||
if [[ ! -e "${key_export}" ]]; then
|
||||
gpg --batch --output "${key_export}" --export "${GPG_KEY}"
|
||||
fi
|
||||
}
|
||||
|
||||
prepare_initcpio(){
|
||||
msg2 "Copying initcpio ..."
|
||||
local dest="$1"
|
||||
cp /etc/initcpio/hooks/artix* "$dest"/etc/initcpio/hooks
|
||||
cp /etc/initcpio/install/artix* "$dest"/etc/initcpio/install
|
||||
cp /etc/initcpio/artix_shutdown "$dest"/etc/initcpio
|
||||
}
|
||||
prepare_initramfs_mkinitcpio() {
|
||||
local mnt="$1" packages=() mkinitcpio_conf k
|
||||
|
||||
prepare_initramfs(){
|
||||
local mnt="$1"
|
||||
mkinitcpio_conf=mkinitcpio-default.conf
|
||||
[[ "${profile}" == 'base' ]] && mkinitcpio_conf=mkinitcpio-pxe.conf
|
||||
k=$(<"$mnt"/usr/src/linux/version)
|
||||
|
||||
prepare_initcpio "$mnt"
|
||||
read_from_list "${common_dir}/Packages-boot"
|
||||
basestrap "${basestrap_args[@]}" "$mnt" "${packages[@]}"
|
||||
|
||||
write_mkinitcpio_conf "$mnt"
|
||||
|
||||
if [[ -n ${GPG_KEY} ]]; then
|
||||
su "${owner}" -c "gpg --export ${GPG_KEY} >/tmp/GPG_KEY"
|
||||
exec 17<>/tmp/GPG_KEY
|
||||
if [[ -n "${GPG_KEY}" ]]; then
|
||||
exec {ARTIX_GNUPG_FD}<>"${key_export}"
|
||||
export ARTIX_GNUPG_FD
|
||||
fi
|
||||
local _kernel
|
||||
_kernel=$(<"$mnt"/usr/src/linux/version)
|
||||
ARTIX_GNUPG_FD=${GPG_KEY:+17} artools-chroot "$mnt" \
|
||||
/usr/bin/mkinitcpio -k "${_kernel}" \
|
||||
-c /etc/mkinitcpio-artix.conf \
|
||||
|
||||
artools-chroot "$mnt" mkinitcpio -k "$k" \
|
||||
-c /etc/"$mkinitcpio_conf" \
|
||||
-g /boot/initramfs.img
|
||||
|
||||
if [[ -n "${GPG_KEY}" ]]; then
|
||||
exec 17<&-
|
||||
exec {ARTIX_GNUPG_FD}<&-
|
||||
unset ARTIX_GNUPG_FD
|
||||
fi
|
||||
if [[ -f /tmp/GPG_KEY ]]; then
|
||||
rm /tmp/GPG_KEY
|
||||
if [[ -f "${key_export}" ]]; then
|
||||
rm "${key_export}"
|
||||
fi
|
||||
|
||||
cp "$mnt"/boot/initramfs.img "${iso_root}"/boot/initramfs-"${arch}".img
|
||||
prepare_boot_extras "$mnt"
|
||||
}
|
||||
|
||||
configure_grub_mkinitcpio() {
|
||||
msg "Configuring grub kernel options ..."
|
||||
local ro_opts=()
|
||||
local rw_opts=()
|
||||
local kopts=("label=${iso_label}")
|
||||
|
||||
[[ "${profile}" != 'base' ]] && kopts+=('overlay=livefs')
|
||||
|
||||
sed -e "s|@kopts@|${kopts[*]}|" \
|
||||
-e "s|@ro_opts@|${ro_opts[*]}|" \
|
||||
-e "s|@rw_opts@|${rw_opts[*]}|" \
|
||||
-i "${iso_root}"/boot/grub/kernels.cfg
|
||||
}
|
||||
|
||||
#}}}
|
||||
|
@@ -43,7 +43,7 @@ add_svc_s6(){
|
||||
chroot "$mnt" cp -a "$rlvl"/bin /usr
|
||||
}
|
||||
|
||||
add_svc_66(){
|
||||
add_svc_suite66(){
|
||||
local mnt="$1" names="$2"
|
||||
for svc in $names; do
|
||||
if [[ -f "$mnt"/etc/66/service/"$svc" ]]; then
|
||||
|
@@ -2,24 +2,6 @@
|
||||
|
||||
#{{{ squash
|
||||
|
||||
make_sig () {
|
||||
local file="$1"
|
||||
msg2 "Creating signature file..."
|
||||
cd "${iso_root}${live_dir}"
|
||||
chown "${owner}:$(id --group "${owner}")" "${iso_root}${live_dir}"
|
||||
su "${owner}" -c "gpg --detach-sign --default-key ${GPG_KEY} $file"
|
||||
chown -R root "${iso_root}${live_dir}"
|
||||
cd "${OLDPWD}"
|
||||
}
|
||||
|
||||
make_checksum(){
|
||||
local file="$1"
|
||||
msg2 "Creating md5sum ..."
|
||||
cd "${iso_root}${live_dir}"
|
||||
md5sum "$file" > "$file".md5
|
||||
cd "${OLDPWD}"
|
||||
}
|
||||
|
||||
make_ext_img(){
|
||||
local src="$1"
|
||||
local size=32G
|
||||
@@ -85,14 +67,14 @@ make_sfs() {
|
||||
|
||||
mksfs_args+=("${sfs_out}")
|
||||
|
||||
mksfs_args+=(-comp xz -b 256K -Xbcj x86 -noappend)
|
||||
mksfs_args+=("${COMPRESSION_ARGS[@]}" -noappend)
|
||||
|
||||
mksquashfs "${mksfs_args[@]}"
|
||||
|
||||
if ! ${use_dracut}; then
|
||||
make_checksum "${img_name}"
|
||||
if [[ -n ${GPG_KEY} ]];then
|
||||
make_sig "${img_name}"
|
||||
make_sig "${iso_root}${live_dir}/${img_name}"
|
||||
fi
|
||||
fi
|
||||
if ${persist}; then
|
||||
|
@@ -19,6 +19,10 @@ load_iso_config(){
|
||||
|
||||
GPG_KEY=${GPG_KEY:-''}
|
||||
|
||||
if [[ -z "${COMPRESSION_ARGS[*]}" ]]; then
|
||||
COMPRESSION_ARGS=(-comp zstd -Xcompression-level 22)
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@@ -31,7 +31,7 @@ load_pkg_config(){
|
||||
python-{world,galaxy}
|
||||
)
|
||||
|
||||
local init_tree=(packages-{openrc,runit,s6,66})
|
||||
local init_tree=(packages-{openrc,runit,s6,suite66})
|
||||
|
||||
local desktop_tree=(
|
||||
packages-{kf5,plasma,kde,qt6}
|
||||
|
Reference in New Issue
Block a user