mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-20 03:50:37 +02:00
Compare commits
16 commits
b68b6acf81
...
fd2fd533e3
Author | SHA1 | Date | |
---|---|---|---|
|
fd2fd533e3 | ||
|
530d028f62 | ||
|
564ee8ab34 | ||
|
1c47ed6f56 | ||
|
78b270a9d2 | ||
|
40ef05df1b | ||
|
689cdd0b1d | ||
|
4d06d59b93 | ||
|
1c2cbcee13 | ||
|
e5b940b8c2 | ||
|
7e27ab091b | ||
|
bf1f77bc1e | ||
|
9155044c59 | ||
|
0772498bf8 | ||
|
5d2f7cae89 | ||
|
6a3906be8b |
10 changed files with 131 additions and 135 deletions
|
@ -19,6 +19,7 @@ Environment Changes:
|
||||||
- renamed km to vconsole script
|
- renamed km to vconsole script
|
||||||
- renamed tz to clock script
|
- renamed tz to clock script
|
||||||
- renamed archboot-locale script to localize script
|
- renamed archboot-locale script to localize script
|
||||||
|
- preserving Basic Setup values when running kexec task
|
||||||
- load archboot.com and wiki.archlinux.org on firefox startup
|
- load archboot.com and wiki.archlinux.org on firefox startup
|
||||||
localize:
|
localize:
|
||||||
- fixed abort dialog
|
- fixed abort dialog
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
_TITLE="Archboot ${_RUNNING_ARCH} | Basic Setup | Launcher"
|
_TITLE="Archboot ${_RUNNING_ARCH} | Basic Setup | Launcher"
|
||||||
|
|
||||||
_show_login() {
|
_show_login() {
|
||||||
[[ -e /tmp/.launcher-running ]] && rm /tmp/.launcher-running
|
[[ -e /.launcher-running ]] && rm /.launcher-running
|
||||||
clear
|
clear
|
||||||
echo ""
|
echo ""
|
||||||
agetty --show-issue
|
agetty --show-issue
|
||||||
|
@ -30,7 +30,7 @@ _check_manage() {
|
||||||
|
|
||||||
_desktop () {
|
_desktop () {
|
||||||
_dialog --cancel-label "Back" --title " Desktop Menu " --menu "" 10 40 6 "${_DESKTOP[@]}" 2>${_ANSWER} || return 1
|
_dialog --cancel-label "Back" --title " Desktop Menu " --menu "" 10 40 6 "${_DESKTOP[@]}" 2>${_ANSWER} || return 1
|
||||||
[[ -e /tmp/.launcher-running ]] && rm /tmp/.launcher-running
|
[[ -e /.launcher-running ]] && rm /.launcher-running
|
||||||
_EXIT="$(cat ${_ANSWER})"
|
_EXIT="$(cat ${_ANSWER})"
|
||||||
if [[ "${_EXIT}" == "GNOME" ]]; then
|
if [[ "${_EXIT}" == "GNOME" ]]; then
|
||||||
if _dialog --defaultno --yesno "Gnome Desktop:\nDo you want to use the Wayland Backend?" 6 45; then
|
if _dialog --defaultno --yesno "Gnome Desktop:\nDo you want to use the Wayland Backend?" 6 45; then
|
||||||
|
@ -61,16 +61,12 @@ _desktop () {
|
||||||
_manage() {
|
_manage() {
|
||||||
_dialog --cancel-label "Back" --title " Manage Archboot Menu " --menu "" 9 50 5 "${_MANAGE[@]}" 2>${_ANSWER} || return 1
|
_dialog --cancel-label "Back" --title " Manage Archboot Menu " --menu "" 9 50 5 "${_MANAGE[@]}" 2>${_ANSWER} || return 1
|
||||||
clear
|
clear
|
||||||
[[ -e /tmp/.launcher-running ]] && rm /tmp/.launcher-running
|
[[ -e /.launcher-running ]] && rm /.launcher-running
|
||||||
_EXIT="$(cat ${_ANSWER})"
|
_EXIT="$(cat ${_ANSWER})"
|
||||||
if [[ "${_EXIT}" == "FULL" ]]; then
|
if [[ "${_EXIT}" == "FULL" ]]; then
|
||||||
update -full-system
|
update -full-system
|
||||||
elif [[ "${_EXIT}" == "UPDATE" ]]; then
|
elif [[ "${_EXIT}" == "UPDATE" ]]; then
|
||||||
if update | grep -q latest-install; then
|
_run_update_environment
|
||||||
update -latest-install
|
|
||||||
else
|
|
||||||
update -latest
|
|
||||||
fi
|
|
||||||
elif [[ "${_EXIT}" == "IMAGE" ]]; then
|
elif [[ "${_EXIT}" == "IMAGE" ]]; then
|
||||||
update -latest-image
|
update -latest-image
|
||||||
fi
|
fi
|
||||||
|
@ -85,7 +81,7 @@ _exit() {
|
||||||
"3" "Poweroff System" 2>${_ANSWER} || return 1
|
"3" "Poweroff System" 2>${_ANSWER} || return 1
|
||||||
_EXIT="$(cat ${_ANSWER})"
|
_EXIT="$(cat ${_ANSWER})"
|
||||||
if [[ "${_EXIT}" == "1" ]]; then
|
if [[ "${_EXIT}" == "1" ]]; then
|
||||||
[[ -e /tmp/.launcher-running ]] && rm /tmp/.launcher-running
|
[[ -e /.launcher-running ]] && rm /.launcher-running
|
||||||
_show_login
|
_show_login
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ "${_EXIT}" == "2" ]]; then
|
elif [[ "${_EXIT}" == "2" ]]; then
|
||||||
|
@ -113,7 +109,7 @@ _launcher() {
|
||||||
"1" "Launch Archboot Setup" "${_MENU[@]}" 2>${_ANSWER}
|
"1" "Launch Archboot Setup" "${_MENU[@]}" 2>${_ANSWER}
|
||||||
case $(cat ${_ANSWER}) in
|
case $(cat ${_ANSWER}) in
|
||||||
"1")
|
"1")
|
||||||
[[ -e /tmp/.launcher-running ]] && rm /tmp/.launcher-running
|
[[ -e /.launcher-running ]] && rm /.launcher-running
|
||||||
setup
|
setup
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
"2")
|
"2")
|
||||||
|
|
|
@ -106,7 +106,7 @@ _network() {
|
||||||
_abort
|
_abort
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "${_INTERFACE}" >/tmp/.network-interface
|
echo "${_INTERFACE}" >/.network-interface
|
||||||
# iwd renames wireless devices to wlanX
|
# iwd renames wireless devices to wlanX
|
||||||
if echo "${_INTERFACE}" | grep -q wlan; then
|
if echo "${_INTERFACE}" | grep -q wlan; then
|
||||||
_CONNECTION="wireless"
|
_CONNECTION="wireless"
|
||||||
|
|
|
@ -106,14 +106,7 @@ _update_environment() {
|
||||||
else
|
else
|
||||||
_dialog --title " New Kernel Available " --defaultno --yesno "Do you want to update the Archboot Environment to ${_ONLINE_KERNEL}?\n\nATTENTION:\nThis will reboot the system using kexec!" 9 60 && _UPDATE_ENVIRONMENT=1
|
_dialog --title " New Kernel Available " --defaultno --yesno "Do you want to update the Archboot Environment to ${_ONLINE_KERNEL}?\n\nATTENTION:\nThis will reboot the system using kexec!" 9 60 && _UPDATE_ENVIRONMENT=1
|
||||||
if [[ -n "${_UPDATE_ENVIRONMENT}" ]]; then
|
if [[ -n "${_UPDATE_ENVIRONMENT}" ]]; then
|
||||||
clear
|
_run_update_environment
|
||||||
echo -e "\e[93mGo and get a cup of coffee. Depending on your system setup,\e[m"
|
|
||||||
echo -e "\e[93myou can \e[1mstart\e[m\e[93m with your tasks in about \e[1m5\e[m\e[93m minutes...\e[m"
|
|
||||||
if update | grep -q latest-install; then
|
|
||||||
update -latest-install
|
|
||||||
else
|
|
||||||
update -latest
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -48,4 +48,15 @@ _cleanup() {
|
||||||
clear
|
clear
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_run_update_environment() {
|
||||||
|
clear
|
||||||
|
echo -e "\e[93mGo and get a cup of coffee. Depending on your system setup,\e[m"
|
||||||
|
echo -e "\e[93myou can \e[1mstart\e[m\e[93m with your tasks in about \e[1m5\e[m\e[93m minutes...\e[m"
|
||||||
|
if update | grep -q latest-install; then
|
||||||
|
update -latest-install
|
||||||
|
else
|
||||||
|
update -latest
|
||||||
|
fi
|
||||||
|
}
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
# vim: set ft=sh ts=4 sw=4 et:
|
||||||
|
|
|
@ -52,12 +52,12 @@ _auto_mdadm()
|
||||||
_auto_network()
|
_auto_network()
|
||||||
{
|
{
|
||||||
# exit if network wasn't configured in Basic Setup
|
# exit if network wasn't configured in Basic Setup
|
||||||
if [[ ! -e /tmp/.network ]]; then
|
if [[ ! -e /.network ]]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
_dialog --infobox "Enable network and proxy settings on installed system..." 3 70
|
_dialog --infobox "Enable network and proxy settings on installed system..." 3 70
|
||||||
# copy iwd keys and enable iwd
|
# copy iwd keys and enable iwd
|
||||||
if grep -q 'wlan' /tmp/.network-interface; then
|
if grep -q 'wlan' /.network-interface; then
|
||||||
cp -r /var/lib/iwd "${_DESTDIR}"/var/lib
|
cp -r /var/lib/iwd "${_DESTDIR}"/var/lib
|
||||||
chroot "${_DESTDIR}" systemctl enable iwd &>"${_NO_LOG}"
|
chroot "${_DESTDIR}" systemctl enable iwd &>"${_NO_LOG}"
|
||||||
fi
|
fi
|
||||||
|
@ -204,7 +204,7 @@ _auto_hostname() {
|
||||||
_auto_locale() {
|
_auto_locale() {
|
||||||
_dialog --infobox "Set default locale on installed system..." 3 70
|
_dialog --infobox "Set default locale on installed system..." 3 70
|
||||||
if [[ ! -f ${_DESTDIR}/etc/locale.conf ]]; then
|
if [[ ! -f ${_DESTDIR}/etc/locale.conf ]]; then
|
||||||
if [[ -n ${_DESTDIR} && -e /tmp/.localize ]]; then
|
if [[ -n ${_DESTDIR} && -e /.localize ]]; then
|
||||||
cp /etc/locale.conf "${_DESTDIR}"/etc/locale.conf
|
cp /etc/locale.conf "${_DESTDIR}"/etc/locale.conf
|
||||||
else
|
else
|
||||||
echo "LANG=C.UTF-8" > "${_DESTDIR}"/etc/locale.conf
|
echo "LANG=C.UTF-8" > "${_DESTDIR}"/etc/locale.conf
|
||||||
|
|
|
@ -31,7 +31,7 @@ _set_mkinitcpio() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_set_locale() {
|
_set_locale() {
|
||||||
if [[ -z "${_S_LOCALE}" && ! -e "/tmp/.localize" ]] && grep -qw '^archboot' /etc/hostname ; then
|
if [[ -z "${_S_LOCALE}" && ! -e "/.localize" ]] && grep -qw '^archboot' /etc/hostname ; then
|
||||||
localize
|
localize
|
||||||
_auto_locale
|
_auto_locale
|
||||||
_auto_set_locale
|
_auto_set_locale
|
||||||
|
|
|
@ -17,6 +17,8 @@ _INST="/${_LIB}/installer"
|
||||||
_HELP="/${_LIB}/installer/help"
|
_HELP="/${_LIB}/installer/help"
|
||||||
_RUN="/${_LIB}/run"
|
_RUN="/${_LIB}/run"
|
||||||
_UPDATE="/${_LIB}/update"
|
_UPDATE="/${_LIB}/update"
|
||||||
|
_LOG="/dev/tty7"
|
||||||
|
_NO_LOG="/dev/null"
|
||||||
[[ "${_RUNNING_ARCH}" == "x86_64" || "${_RUNNING_ARCH}" == "riscv64" ]] && _VMLINUZ="vmlinuz-linux"
|
[[ "${_RUNNING_ARCH}" == "x86_64" || "${_RUNNING_ARCH}" == "riscv64" ]] && _VMLINUZ="vmlinuz-linux"
|
||||||
[[ "${_RUNNING_ARCH}" == "aarch64" ]] && _VMLINUZ="Image"
|
[[ "${_RUNNING_ARCH}" == "aarch64" ]] && _VMLINUZ="Image"
|
||||||
|
|
||||||
|
@ -143,7 +145,7 @@ _download_latest() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_network_check() {
|
_network_check() {
|
||||||
if ! getent hosts www.google.com &>/dev/null; then
|
if ! getent hosts www.google.com &>"${_NO_LOG}"; then
|
||||||
echo -e "\e[91mAborting:\e[m"
|
echo -e "\e[91mAborting:\e[m"
|
||||||
echo -e "Network not yet ready."
|
echo -e "Network not yet ready."
|
||||||
echo -e "Please configure your network first."
|
echo -e "Please configure your network first."
|
||||||
|
@ -183,11 +185,11 @@ _clean_archboot() {
|
||||||
|
|
||||||
_gpg_check() {
|
_gpg_check() {
|
||||||
# pacman-key process itself
|
# pacman-key process itself
|
||||||
while pgrep -x pacman-key &>/dev/null; do
|
while pgrep -x pacman-key &>"${_NO_LOG}"; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
# gpg finished in background
|
# gpg finished in background
|
||||||
while pgrep -x gpg &>/dev/null; do
|
while pgrep -x gpg &>"${_NO_LOG}"; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
if [[ -e /etc/systemd/system/pacman-init.service ]]; then
|
if [[ -e /etc/systemd/system/pacman-init.service ]]; then
|
||||||
|
@ -198,7 +200,7 @@ _gpg_check() {
|
||||||
_create_container() {
|
_create_container() {
|
||||||
# create container without package cache
|
# create container without package cache
|
||||||
if [[ -n "${_L_COMPLETE}" ]]; then
|
if [[ -n "${_L_COMPLETE}" ]]; then
|
||||||
"archboot-${_RUNNING_ARCH}-create-container.sh" "${_W_DIR}" -cc -cp >/dev/tty7 2>&1 || exit 1
|
"archboot-${_RUNNING_ARCH}-create-container.sh" "${_W_DIR}" -cc -cp >"${_LOG}" 2>&1 || exit 1
|
||||||
fi
|
fi
|
||||||
# create container with package cache
|
# create container with package cache
|
||||||
if [[ -e /var/cache/pacman/pkg/archboot.db ]]; then
|
if [[ -e /var/cache/pacman/pkg/archboot.db ]]; then
|
||||||
|
@ -206,14 +208,14 @@ _create_container() {
|
||||||
# add the db too on reboot
|
# add the db too on reboot
|
||||||
install -D -m644 /var/cache/pacman/pkg/archboot.db "${_W_DIR}"/var/cache/pacman/pkg/archboot.db
|
install -D -m644 /var/cache/pacman/pkg/archboot.db "${_W_DIR}"/var/cache/pacman/pkg/archboot.db
|
||||||
if [[ -n "${_L_INSTALL_COMPLETE}" ]]; then
|
if [[ -n "${_L_INSTALL_COMPLETE}" ]]; then
|
||||||
"archboot-${_RUNNING_ARCH}-create-container.sh" "${_W_DIR}" -cc --install-source=file:///var/cache/pacman/pkg >/dev/tty7 2>&1 || exit 1
|
"archboot-${_RUNNING_ARCH}-create-container.sh" "${_W_DIR}" -cc --install-source=file:///var/cache/pacman/pkg >"${_LOG}" 2>&1 || exit 1
|
||||||
fi
|
fi
|
||||||
# needed for checks
|
# needed for checks
|
||||||
cp "${_W_DIR}"/var/cache/pacman/pkg/archboot.db /var/cache/pacman/pkg/archboot.db
|
cp "${_W_DIR}"/var/cache/pacman/pkg/archboot.db /var/cache/pacman/pkg/archboot.db
|
||||||
else
|
else
|
||||||
#online mode
|
#online mode
|
||||||
if [[ -n "${_L_INSTALL_COMPLETE}" ]]; then
|
if [[ -n "${_L_INSTALL_COMPLETE}" ]]; then
|
||||||
"archboot-${_RUNNING_ARCH}-create-container.sh" "${_W_DIR}" -cc >/dev/tty7 2>&1 || exit 1
|
"archboot-${_RUNNING_ARCH}-create-container.sh" "${_W_DIR}" -cc >"${_LOG}" 2>&1 || exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -222,7 +224,7 @@ _kver_x86() {
|
||||||
# get kernel version from installed kernel
|
# get kernel version from installed kernel
|
||||||
if [[ -f "${_RAM}/${_VMLINUZ}" ]]; then
|
if [[ -f "${_RAM}/${_VMLINUZ}" ]]; then
|
||||||
offset="$(od -An -j0x20E -dN2 "${_RAM}/${_VMLINUZ}")"
|
offset="$(od -An -j0x20E -dN2 "${_RAM}/${_VMLINUZ}")"
|
||||||
read -r _HWKVER _ < <(dd if="${_RAM}/${_VMLINUZ}" bs=1 count=127 skip=$((offset + 0x200)) 2>/dev/null)
|
read -r _HWKVER _ < <(dd if="${_RAM}/${_VMLINUZ}" bs=1 count=127 skip=$((offset + 0x200)) 2>"${_NO_LOG}")
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +249,7 @@ _create_initramfs() {
|
||||||
LANG=C bsdtar --null -cf - --format=newc @- |
|
LANG=C bsdtar --null -cf - --format=newc @- |
|
||||||
zstd --rm -T0> ${_RAM}/${_INITRD} &
|
zstd --rm -T0> ${_RAM}/${_INITRD} &
|
||||||
sleep 2
|
sleep 2
|
||||||
while pgrep -x zstd &>/dev/null; do
|
while pgrep -x zstd &>"${_NO_LOG}"; do
|
||||||
_clean_kernel_cache
|
_clean_kernel_cache
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
@ -290,14 +292,14 @@ _prepare_graphic() {
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
#shellcheck disable=SC2086
|
#shellcheck disable=SC2086
|
||||||
pacman -Syu ${_IGNORE} --noconfirm &>/dev/null || exit 1
|
pacman -Syu ${_IGNORE} --noconfirm &>"${_NO_LOG}" || exit 1
|
||||||
[[ ! -e "/.full_system" ]] && _cleanup_install
|
[[ ! -e "/.full_system" ]] && _cleanup_install
|
||||||
# check for qxl module
|
# check for qxl module
|
||||||
grep -q qxl /proc/modules && grep -q xorg "${_GRAPHIC}" && _GRAPHIC="${_GRAPHIC} xf86-video-qxl"
|
grep -q qxl /proc/modules && grep -q xorg "${_GRAPHIC}" && _GRAPHIC="${_GRAPHIC} xf86-video-qxl"
|
||||||
echo "Running pacman to install packages: ${_GRAPHIC}..."
|
echo "Running pacman to install packages: ${_GRAPHIC}..."
|
||||||
for i in ${_GRAPHIC}; do
|
for i in ${_GRAPHIC}; do
|
||||||
#shellcheck disable=SC2086
|
#shellcheck disable=SC2086
|
||||||
pacman -S ${i} --noconfirm &>/dev/null || exit 1
|
pacman -S ${i} --noconfirm &>"${_NO_LOG}" || exit 1
|
||||||
[[ ! -e "/.full_system" ]] && _cleanup_install
|
[[ ! -e "/.full_system" ]] && _cleanup_install
|
||||||
[[ "$(grep -w MemTotal /proc/meminfo | cut -d ':' -f2 | sed -e 's# ##g' -e 's#kB$##g')" -lt 4413000 ]] && _cleanup_cache
|
[[ "$(grep -w MemTotal /proc/meminfo | cut -d ':' -f2 | sed -e 's# ##g' -e 's#kB$##g')" -lt 4413000 ]] && _cleanup_cache
|
||||||
rm -f /var/log/pacman.log
|
rm -f /var/log/pacman.log
|
||||||
|
@ -307,17 +309,17 @@ _prepare_graphic() {
|
||||||
_LANG="be bg cs da de el fi fr hu it lt lv mk nl nn pl ro ru sk sr uk"
|
_LANG="be bg cs da de el fi fr hu it lt lv mk nl nn pl ro ru sk sr uk"
|
||||||
for i in ${_LANG}; do
|
for i in ${_LANG}; do
|
||||||
if grep -q "${i}" /etc/locale.conf; then
|
if grep -q "${i}" /etc/locale.conf; then
|
||||||
pacman -S firefox-i18n-"${i}" --noconfirm &>/dev/null || exit 1
|
pacman -S firefox-i18n-"${i}" --noconfirm &>"${_NO_LOG}" || exit 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if grep -q en_US /etc/locale.conf; then
|
if grep -q en_US /etc/locale.conf; then
|
||||||
pacman -S firefox-i18n-en-us --noconfirm &>/dev/null || exit 1
|
pacman -S firefox-i18n-en-us --noconfirm &>"${_NO_LOG}" || exit 1
|
||||||
elif grep -q es_ES /etc/locale.conf; then
|
elif grep -q es_ES /etc/locale.conf; then
|
||||||
pacman -S firefox-i18n-es-es --noconfirm &>/dev/null || exit 1
|
pacman -S firefox-i18n-es-es --noconfirm &>"${_NO_LOG}" || exit 1
|
||||||
elif grep -q pt_PT /etc/locale.conf; then
|
elif grep -q pt_PT /etc/locale.conf; then
|
||||||
pacman -S firefox-i18n-pt-pt --noconfirm &>/dev/null || exit 1
|
pacman -S firefox-i18n-pt-pt --noconfirm &>"${_NO_LOG}" || exit 1
|
||||||
elif grep -q sv_SE /etc/locale.conf; then
|
elif grep -q sv_SE /etc/locale.conf; then
|
||||||
pacman -S firefox-i18n-sv-se --noconfirm &>/dev/null || exit 1
|
pacman -S firefox-i18n-sv-se --noconfirm &>"${_NO_LOG}" || exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ ! -e "/.full_system" ]]; then
|
if [[ ! -e "/.full_system" ]]; then
|
||||||
|
@ -329,11 +331,11 @@ _prepare_graphic() {
|
||||||
! -path '*/fi/*' ! -path '*/fr/*' ! -path '*/hu/*' ! -path '*/it/*' ! -path '*/lt/*' \
|
! -path '*/fi/*' ! -path '*/fr/*' ! -path '*/hu/*' ! -path '*/it/*' ! -path '*/lt/*' \
|
||||||
! -path '*/lv/*' ! -path '*/mk/*' ! -path '*/nl/*' ! -path '*/nn/*' ! -path '*/pl/*' \
|
! -path '*/lv/*' ! -path '*/mk/*' ! -path '*/nl/*' ! -path '*/nn/*' ! -path '*/pl/*' \
|
||||||
! -path '*/pt/*' ! -path '*/ro/*' ! -path '*/ru/*' ! -path '*/sk/*' ! -path '*/sr/*' \
|
! -path '*/pt/*' ! -path '*/ro/*' ! -path '*/ru/*' ! -path '*/sk/*' ! -path '*/sr/*' \
|
||||||
! -path '*/sv/*' ! -path '*/uk/*' -delete &>/dev/null
|
! -path '*/sv/*' ! -path '*/uk/*' -delete &>"${_NO_LOG}"
|
||||||
find /usr/share/i18n/charmaps ! -name 'UTF-8.gz' -delete &>/dev/null
|
find /usr/share/i18n/charmaps ! -name 'UTF-8.gz' -delete &>"${_NO_LOG}"
|
||||||
fi
|
fi
|
||||||
systemd-sysusers >/dev/tty7 2>&1
|
systemd-sysusers >"${_LOG}" 2>&1
|
||||||
systemd-tmpfiles --create >/dev/tty7 2>&1
|
systemd-tmpfiles --create >"${_LOG}" 2>&1
|
||||||
# fixing dbus requirements
|
# fixing dbus requirements
|
||||||
systemctl reload dbus
|
systemctl reload dbus
|
||||||
systemctl reload dbus-org.freedesktop.login1.service
|
systemctl reload dbus-org.freedesktop.login1.service
|
||||||
|
@ -343,7 +345,7 @@ _new_environment() {
|
||||||
_update_installer_check
|
_update_installer_check
|
||||||
touch /.update
|
touch /.update
|
||||||
_kill_w_dir
|
_kill_w_dir
|
||||||
_STEPS="10"
|
_STEPS="11"
|
||||||
_S_APPEND="0"
|
_S_APPEND="0"
|
||||||
_S_EMPTY=" "
|
_S_EMPTY=" "
|
||||||
if [[ -e /var/cache/pacman/pkg/archboot.db ]]; then
|
if [[ -e /var/cache/pacman/pkg/archboot.db ]]; then
|
||||||
|
@ -377,7 +379,7 @@ _new_environment() {
|
||||||
echo -e "\e[1mStep ${_S_APPEND}5/${_STEPS}:\e[m Collecting rootfs files in ${_W_DIR}..."
|
echo -e "\e[1mStep ${_S_APPEND}5/${_STEPS}:\e[m Collecting rootfs files in ${_W_DIR}..."
|
||||||
echo "${_S_EMPTY} This will need some time..."
|
echo "${_S_EMPTY} This will need some time..."
|
||||||
# write initramfs to "${_W_DIR}"/tmp
|
# write initramfs to "${_W_DIR}"/tmp
|
||||||
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount tmp;archboot-cpio.sh -k ${_HWKVER} -c ${_CONFIG} -d /tmp" >/dev/tty7 2>&1 || exit 1
|
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount tmp;archboot-cpio.sh -k ${_HWKVER} -c ${_CONFIG} -d /tmp" >"${_LOG}" 2>&1 || exit 1
|
||||||
echo -e "\e[1mStep ${_S_APPEND}6/${_STEPS}:\e[m Cleanup ${_W_DIR}..."
|
echo -e "\e[1mStep ${_S_APPEND}6/${_STEPS}:\e[m Cleanup ${_W_DIR}..."
|
||||||
find "${_W_DIR}"/. -mindepth 1 -maxdepth 1 ! -name 'tmp' -exec rm -rf {} \;
|
find "${_W_DIR}"/. -mindepth 1 -maxdepth 1 ! -name 'tmp' -exec rm -rf {} \;
|
||||||
_clean_kernel_cache
|
_clean_kernel_cache
|
||||||
|
@ -387,8 +389,8 @@ _new_environment() {
|
||||||
echo -e "\e[1mStep ${_STEPS}/${_STEPS}:\e[m Switch root to ${_RAM}..."
|
echo -e "\e[1mStep ${_STEPS}/${_STEPS}:\e[m Switch root to ${_RAM}..."
|
||||||
mv ${_W_DIR}/tmp/* /${_RAM}/
|
mv ${_W_DIR}/tmp/* /${_RAM}/
|
||||||
# cleanup mkinitcpio directories and files
|
# cleanup mkinitcpio directories and files
|
||||||
rm -rf /sysroot/{hooks,install,kernel,new_root,sysroot,mkinitcpio.*} &>/dev/null
|
rm -rf /sysroot/{hooks,install,kernel,new_root,sysroot,mkinitcpio.*} &>"${_NO_LOG}"
|
||||||
rm -f /sysroot/{VERSION,config,buildconfig,init} &>/dev/null
|
rm -f /sysroot/{VERSION,config,buildconfig,init} &>"${_NO_LOG}"
|
||||||
# https://www.freedesktop.org/software/systemd/man/bootup.html
|
# https://www.freedesktop.org/software/systemd/man/bootup.html
|
||||||
# enable systemd initrd functionality
|
# enable systemd initrd functionality
|
||||||
touch /etc/initrd-release
|
touch /etc/initrd-release
|
||||||
|
@ -401,47 +403,48 @@ _new_environment() {
|
||||||
systemctl start initrd-cleanup.service
|
systemctl start initrd-cleanup.service
|
||||||
systemctl start initrd-switch-root.target
|
systemctl start initrd-switch-root.target
|
||||||
fi
|
fi
|
||||||
# copy configs to new container
|
_C_DIR="${_W_DIR}/tmp"
|
||||||
|
echo -e "\e[1mStep ${_S_APPEND}7/${_STEPS}:\e[m Preserving Basic Setup values..."
|
||||||
if [[ -e '/.localize' ]]; then
|
if [[ -e '/.localize' ]]; then
|
||||||
cp /etc/locale.gen "${_W_DIR}"/tmp/etc
|
cp /etc/{locale.gen,locale.conf} "${_C_DIR}"/etc
|
||||||
cp /etc/locale.conf "${_W_DIR}"/tmp/etc
|
cp /.localize "${_C_DIR}"/
|
||||||
cp /.localize "${_W_DIR}"/tmp/
|
${_NSPAWN} "${_C_DIR}" /bin/bash -c "locale-gen" &>"${_NO_LOG}"
|
||||||
${_NSPAWN} "${_W_DIR}"/tmp /bin/bash -c "locale-gen"
|
|
||||||
fi
|
fi
|
||||||
if [[ -e '/.vconsole' ]]; then
|
if [[ -e '/.vconsole' ]]; then
|
||||||
cp /etc/vconsole "${_W_DIR}"/tmp/etc
|
cp /etc/vconsole.conf "${_C_DIR}"/etc
|
||||||
cp /.vconsole "${_W_DIR}"/tmp/
|
cp /.vconsole "${_C_DIR}"/
|
||||||
|
: >"${_C_DIR}"/.vconsole-run
|
||||||
fi
|
fi
|
||||||
if [[ -e '/.clock' ]]; then
|
if [[ -e '/.clock' ]]; then
|
||||||
cp -a /etc/{adjtime,localtime} "${_W_DIR}"/tmp/etc
|
cp -a /etc/{adjtime,localtime} "${_C_DIR}"/etc
|
||||||
${_NSPAWN} "${_W_DIR}"/tmp /bin/bash -c "systemctl enable systemd-timesyncd.service;timedatectl set-ntp 1"
|
${_NSPAWN} "${_C_DIR}" /bin/bash -c "systemctl enable systemd-timesyncd.service" &>"${_NO_LOG}"
|
||||||
cp /.vconsole "${_W_DIR}"/tmp/
|
cp /.clock "${_C_DIR}"/
|
||||||
fi
|
fi
|
||||||
if [[ -e '/.network' ]]; then
|
if [[ -e '/.network' ]]; then
|
||||||
cp -r /var/lib/iwd "${_W_DIR}"/tmp/var/lib
|
cp -r /var/lib/iwd "${_C_DIR}"/var/lib
|
||||||
${_NSPAWN} "${_W_DIR}"/tmp /bin/bash -c "systemctl enable iwd"
|
${_NSPAWN} "${_C_DIR}" /bin/bash -c "systemctl enable iwd" &>"${_NO_LOG}"
|
||||||
cp /etc/systemd/network/* "${_W_DIR}"/tmp//etc/systemd/network/
|
cp /etc/systemd/network/* "${_C_DIR}"/etc/systemd/network/
|
||||||
${_NSPAWN} "${_W_DIR}"/tmp /bin/bash -c "systemctl enable systemd-networkd"
|
${_NSPAWN} "${_C_DIR}" /bin/bash -c "systemctl enable systemd-networkd" &>"${_NO_LOG}"
|
||||||
${_NSPAWN} "${_W_DIR}"/tmp /bin/bash -c "systemctl enable systemd-resolved"
|
${_NSPAWN} "${_C_DIR}" /bin/bash -c "systemctl enable systemd-resolved" &>"${_NO_LOG}"
|
||||||
rm "${_W_DIR}"/tmp/etc/systemd/network/10-wired-auto-dhcp.network
|
rm "${_C_DIR}"/etc/systemd/network/10-wired-auto-dhcp.network
|
||||||
[[ -e '/etc/profile.d/proxy.sh' ]] && cp /etc/profile.d/proxy.sh "${_W_DIR}"/tmp/etc/profile.d/proxy.sh
|
[[ -e '/etc/profile.d/proxy.sh' ]] && cp /etc/profile.d/proxy.sh "${_C_DIR}"/etc/profile.d/proxy.sh
|
||||||
cp /.network "${_W_DIR}"/tmp/
|
cp /.network "${_C_DIR}"/
|
||||||
|
cp /.network-interface "${_C_DIR}"/
|
||||||
fi
|
fi
|
||||||
if [[ -e '/.pacsetup' ]]; then
|
if [[ -e '/.pacsetup' ]]; then
|
||||||
cp /etc/pacman.conf "${_W_DIR}"/tmp/etc
|
cp /etc/pacman.conf "${_C_DIR}"/etc
|
||||||
cp /etc/pacman.d/mirrorlist "${_W_DIR}"/tmp/etc/pacman.d/
|
cp /etc/pacman.d/mirrorlist "${_C_DIR}"/etc/pacman.d/
|
||||||
cp -ar /etc/pacman.d/gnupg "${_W_DIR}"/tmp/etc/pacman.d
|
cp -ar /etc/pacman.d/gnupg "${_C_DIR}"/etc/pacman.d
|
||||||
rm "${_W_DIR}"/tmp/etc/systemd/system/pacman-init.service
|
cp /.pacsetup "${_C_DIR}"/
|
||||||
cp /.pacsetup "${_W_DIR}"/tmp/
|
|
||||||
fi
|
fi
|
||||||
echo -e "\e[1mStep ${_S_APPEND}7/${_STEPS}:\e[m Creating initramfs ${_RAM}/${_INITRD}..."
|
echo -e "\e[1mStep ${_S_APPEND}8/${_STEPS}:\e[m Creating initramfs ${_RAM}/${_INITRD}..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
_create_initramfs
|
_create_initramfs
|
||||||
echo -e "\e[1mStep ${_S_APPEND}8/${_STEPS}:\e[m Cleanup ${_W_DIR}..."
|
echo -e "\e[1mStep ${_S_APPEND}9/${_STEPS}:\e[m Cleanup ${_W_DIR}..."
|
||||||
cd /
|
cd /
|
||||||
_kill_w_dir
|
_kill_w_dir
|
||||||
_clean_kernel_cache
|
_clean_kernel_cache
|
||||||
echo -e "\e[1mStep ${_S_APPEND}9/${_STEPS}:\e[m Waiting for kernel to free RAM..."
|
echo -e "\e[1mStep 10/${_STEPS}:\e[m Waiting for kernel to free RAM..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
# wait until enough memory is available!
|
# wait until enough memory is available!
|
||||||
while true; do
|
while true; do
|
||||||
|
@ -459,10 +462,10 @@ _new_environment() {
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
_clean_kernel_cache
|
_clean_kernel_cache
|
||||||
rm ${_RAM}/{"${_VMLINUZ}","${_INITRD}"}
|
rm ${_RAM}/{"${_VMLINUZ}","${_INITRD}"}
|
||||||
umount ${_RAM} &>/dev/null
|
umount ${_RAM} &>"${_NO_LOG}"
|
||||||
rm -r ${_RAM} &>/dev/null
|
rm -r ${_RAM} &>"${_NO_LOG}"
|
||||||
#shellcheck disable=SC2115
|
#shellcheck disable=SC2115
|
||||||
rm -rf /usr/* &>/dev/null
|
rm -rf /usr/* &>"${_NO_LOG}"
|
||||||
while true; do
|
while true; do
|
||||||
_clean_kernel_cache
|
_clean_kernel_cache
|
||||||
read -r -t 1
|
read -r -t 1
|
||||||
|
@ -489,8 +492,8 @@ _full_system() {
|
||||||
echo -e "\e[1mInitializing full Arch Linux system...\e[m"
|
echo -e "\e[1mInitializing full Arch Linux system...\e[m"
|
||||||
echo -e "\e[1mStep 1/3:\e[m Reinstalling packages and adding info/man-pages..."
|
echo -e "\e[1mStep 1/3:\e[m Reinstalling packages and adding info/man-pages..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
pacman -Sy >/dev/tty7 2>&1 || exit 1
|
pacman -Sy >"${_LOG}" 2>&1 || exit 1
|
||||||
pacman -Qqn | pacman -S --noconfirm man-db man-pages texinfo - >/dev/tty7 2>&1 || exit 1
|
pacman -Qqn | pacman -S --noconfirm man-db man-pages texinfo - >"${_LOG}" 2>&1 || exit 1
|
||||||
echo -e "\e[1mStep 2/3:\e[m Checking kernel version..."
|
echo -e "\e[1mStep 2/3:\e[m Checking kernel version..."
|
||||||
_kernel_check
|
_kernel_check
|
||||||
echo -e "\e[1mStep 3/3:\e[m Trigger kernel module loading..."
|
echo -e "\e[1mStep 3/3:\e[m Trigger kernel module loading..."
|
||||||
|
@ -514,35 +517,35 @@ _new_image() {
|
||||||
cd /archboot || exit 1
|
cd /archboot || exit 1
|
||||||
_W_DIR="$(mktemp -u archboot-release.XXX)"
|
_W_DIR="$(mktemp -u archboot-release.XXX)"
|
||||||
# create container
|
# create container
|
||||||
archboot-"${_RUNNING_ARCH}"-create-container.sh "${_W_DIR}" -cc > /dev/tty7 || exit 1
|
archboot-"${_RUNNING_ARCH}"-create-container.sh "${_W_DIR}" -cc > "${_LOG}" || exit 1
|
||||||
_create_archboot_db "${_W_DIR}"/var/cache/pacman/pkg > /dev/tty7
|
_create_archboot_db "${_W_DIR}"/var/cache/pacman/pkg > "${_LOG}"
|
||||||
# riscv64 does not support kexec at the moment
|
# riscv64 does not support kexec at the moment
|
||||||
if ! [[ "${_RUNNING_ARCH}" == "riscv64" ]]; then
|
if ! [[ "${_RUNNING_ARCH}" == "riscv64" ]]; then
|
||||||
# generate tarball in container, umount tmp it's a tmpfs and weird things could happen then
|
# generate tarball in container, umount tmp it's a tmpfs and weird things could happen then
|
||||||
# removing not working lvm2 from latest image
|
# removing not working lvm2 from latest image
|
||||||
echo "Removing lvm2 from container ${_W_DIR}..." > /dev/tty7
|
echo "Removing lvm2 from container ${_W_DIR}..." > "${_LOG}"
|
||||||
${_NSPAWN} "${_W_DIR}" pacman -Rdd lvm2 --noconfirm &>/dev/null
|
${_NSPAWN} "${_W_DIR}" pacman -Rdd lvm2 --noconfirm &>"${_NO_LOG}"
|
||||||
# generate latest tarball in container
|
# generate latest tarball in container
|
||||||
echo "Generating local ISO..." > /dev/tty7
|
echo "Generating local ISO..." > "${_LOG}"
|
||||||
# generate local iso in container
|
# generate local iso in container
|
||||||
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount /tmp;rm -rf /tmp/*; archboot-${_RUNNING_ARCH}-iso.sh -g -p=${_PRESET_LOCAL} \
|
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount /tmp;rm -rf /tmp/*; archboot-${_RUNNING_ARCH}-iso.sh -g -p=${_PRESET_LOCAL} \
|
||||||
-i=${_ISONAME}-local-${_RUNNING_ARCH}" > /dev/tty7 || exit 1
|
-i=${_ISONAME}-local-${_RUNNING_ARCH}" > "${_LOG}" || exit 1
|
||||||
rm -rf "${_W_DIR}"/var/cache/pacman/pkg/*
|
rm -rf "${_W_DIR}"/var/cache/pacman/pkg/*
|
||||||
_ram_check
|
_ram_check
|
||||||
echo "Generating latest ISO..." > /dev/tty7
|
echo "Generating latest ISO..." > "${_LOG}"
|
||||||
# generate latest iso in container
|
# generate latest iso in container
|
||||||
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount /tmp;rm -rf /tmp/*;archboot-${_RUNNING_ARCH}-iso.sh -g -p=${_PRESET_LATEST} \
|
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount /tmp;rm -rf /tmp/*;archboot-${_RUNNING_ARCH}-iso.sh -g -p=${_PRESET_LATEST} \
|
||||||
-i=${_ISONAME}-latest-${_RUNNING_ARCH}" > /dev/tty7 || exit 1
|
-i=${_ISONAME}-latest-${_RUNNING_ARCH}" > "${_LOG}" || exit 1
|
||||||
echo "Installing lvm2 to container ${_W_DIR}..." > /dev/tty7
|
echo "Installing lvm2 to container ${_W_DIR}..." > "${_LOG}"
|
||||||
${_NSPAWN} "${_W_DIR}" pacman -Sy lvm2 --noconfirm &>/dev/null
|
${_NSPAWN} "${_W_DIR}" pacman -Sy lvm2 --noconfirm &>"${_NO_LOG}"
|
||||||
fi
|
fi
|
||||||
echo "Generating normal ISO..." > /dev/tty7
|
echo "Generating normal ISO..." > "${_LOG}"
|
||||||
# generate iso in container
|
# generate iso in container
|
||||||
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount /tmp;archboot-${_RUNNING_ARCH}-iso.sh -g \
|
${_NSPAWN} "${_W_DIR}" /bin/bash -c "umount /tmp;archboot-${_RUNNING_ARCH}-iso.sh -g \
|
||||||
-i=${_ISONAME}-${_RUNNING_ARCH}" > /dev/tty7 || exit 1
|
-i=${_ISONAME}-${_RUNNING_ARCH}" > "${_LOG}" || exit 1
|
||||||
# move iso out of container
|
# move iso out of container
|
||||||
mv "${_W_DIR}"/*.iso ./ &>/dev/null
|
mv "${_W_DIR}"/*.iso ./ &>"${_NO_LOG}"
|
||||||
mv "${_W_DIR}"/*.img ./ &>/dev/null
|
mv "${_W_DIR}"/*.img ./ &>"${_NO_LOG}"
|
||||||
rm -r "${_W_DIR}"
|
rm -r "${_W_DIR}"
|
||||||
echo -e "\e[1mFinished:\e[m New isofiles are located in /archboot"
|
echo -e "\e[1mFinished:\e[m New isofiles are located in /archboot"
|
||||||
}
|
}
|
||||||
|
@ -559,8 +562,8 @@ _install_graphic () {
|
||||||
# only start vnc on xorg environment
|
# only start vnc on xorg environment
|
||||||
echo -e "\e[1mStep 3/3:\e[m Setting up VNC and browser...\e[m"
|
echo -e "\e[1mStep 3/3:\e[m Setting up VNC and browser...\e[m"
|
||||||
[[ -n "${_L_XFCE}" || -n "${_L_PLASMA}" || -n "${_L_GNOME}" ]] && _autostart_vnc
|
[[ -n "${_L_XFCE}" || -n "${_L_PLASMA}" || -n "${_L_GNOME}" ]] && _autostart_vnc
|
||||||
command -v firefox &>/dev/null && _firefox_flags
|
command -v firefox &>"${_NO_LOG}" && _firefox_flags
|
||||||
command -v chromium &>/dev/null && _chromium_flags
|
command -v chromium &>"${_NO_LOG}" && _chromium_flags
|
||||||
[[ -n "${_L_XFCE}" ]] && _start_xfce
|
[[ -n "${_L_XFCE}" ]] && _start_xfce
|
||||||
[[ -n "${_L_GNOME}" ]] && _start_gnome
|
[[ -n "${_L_GNOME}" ]] && _start_gnome
|
||||||
[[ -n "${_L_GNOME_WAYLAND}" ]] && _start_gnome_wayland
|
[[ -n "${_L_GNOME_WAYLAND}" ]] && _start_gnome_wayland
|
||||||
|
@ -579,9 +582,9 @@ _prepare_gnome() {
|
||||||
if ! [[ -e /usr/bin/gnome-session ]]; then
|
if ! [[ -e /usr/bin/gnome-session ]]; then
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing GNOME desktop now..."
|
echo -e "\e[1mStep 1/3:\e[m Installing GNOME desktop now..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
_prepare_graphic "${_PACKAGES}" >/dev/tty7 2>&1
|
_prepare_graphic "${_PACKAGES}" >"${_LOG}" 2>&1
|
||||||
echo -e "\e[1mStep 2/3:\e[m Configuring GNOME desktop..."
|
echo -e "\e[1mStep 2/3:\e[m Configuring GNOME desktop..."
|
||||||
_configure_gnome >/dev/tty7 2>&1
|
_configure_gnome >"${_LOG}" 2>&1
|
||||||
else
|
else
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing GNOME desktop already done..."
|
echo -e "\e[1mStep 1/3:\e[m Installing GNOME desktop already done..."
|
||||||
echo -e "\e[1mStep 2/3:\e[m Configuring GNOME desktop already done..."
|
echo -e "\e[1mStep 2/3:\e[m Configuring GNOME desktop already done..."
|
||||||
|
@ -592,9 +595,9 @@ _prepare_plasma() {
|
||||||
if ! [[ -e /usr/bin/startplasma-x11 ]]; then
|
if ! [[ -e /usr/bin/startplasma-x11 ]]; then
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing KDE/Plasma desktop now..."
|
echo -e "\e[1mStep 1/3:\e[m Installing KDE/Plasma desktop now..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
_prepare_graphic "${_PACKAGES}" >/dev/tty7 2>&1
|
_prepare_graphic "${_PACKAGES}" >"${_LOG}" 2>&1
|
||||||
echo -e "\e[1mStep 2/3:\e[m Configuring KDE/Plasma desktop..."
|
echo -e "\e[1mStep 2/3:\e[m Configuring KDE/Plasma desktop..."
|
||||||
_configure_plasma >/dev/tty7 2>&1
|
_configure_plasma >"${_LOG}" 2>&1
|
||||||
else
|
else
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing KDE/Plasma desktop already done..."
|
echo -e "\e[1mStep 1/3:\e[m Installing KDE/Plasma desktop already done..."
|
||||||
echo -e "\e[1mStep 2/3:\e[m Configuring KDE/Plasma desktop already done..."
|
echo -e "\e[1mStep 2/3:\e[m Configuring KDE/Plasma desktop already done..."
|
||||||
|
@ -605,9 +608,9 @@ _prepare_sway() {
|
||||||
if ! [[ -e /usr/bin/sway ]]; then
|
if ! [[ -e /usr/bin/sway ]]; then
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing Sway desktop now..."
|
echo -e "\e[1mStep 1/3:\e[m Installing Sway desktop now..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
_prepare_graphic "${_PACKAGES}" >/dev/tty7 2>&1
|
_prepare_graphic "${_PACKAGES}" >"${_LOG}" 2>&1
|
||||||
echo -e "\e[1mStep 2/3:\e[m Configuring Sway desktop..."
|
echo -e "\e[1mStep 2/3:\e[m Configuring Sway desktop..."
|
||||||
_configure_sway >/dev/tty7 2>&1
|
_configure_sway >"${_LOG}" 2>&1
|
||||||
else
|
else
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing Sway desktop already done..."
|
echo -e "\e[1mStep 1/3:\e[m Installing Sway desktop already done..."
|
||||||
echo -e "\e[1mStep 2/3:\e[m Configuring Sway desktop already done..."
|
echo -e "\e[1mStep 2/3:\e[m Configuring Sway desktop already done..."
|
||||||
|
@ -807,22 +810,22 @@ _custom_wayland_xorg() {
|
||||||
if [[ -n "${_CUSTOM_WAYLAND}" ]]; then
|
if [[ -n "${_CUSTOM_WAYLAND}" ]]; then
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing custom wayland..."
|
echo -e "\e[1mStep 1/3:\e[m Installing custom wayland..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
_prepare_graphic "${_WAYLAND_PACKAGE} ${_CUSTOM_WAYLAND}" > /dev/tty7 2>&1
|
_prepare_graphic "${_WAYLAND_PACKAGE} ${_CUSTOM_WAYLAND}" > "${_LOG}" 2>&1
|
||||||
fi
|
fi
|
||||||
if [[ -n "${_CUSTOM_X}" ]]; then
|
if [[ -n "${_CUSTOM_X}" ]]; then
|
||||||
echo -e "\e[1mStep 1/3:\e[m Installing custom xorg..."
|
echo -e "\e[1mStep 1/3:\e[m Installing custom xorg..."
|
||||||
echo " This will need some time..."
|
echo " This will need some time..."
|
||||||
_prepare_graphic "${_XORG_PACKAGE} ${_CUSTOM_XORG}" > /dev/tty7 2>&1
|
_prepare_graphic "${_XORG_PACKAGE} ${_CUSTOM_XORG}" > "${_LOG}" 2>&1
|
||||||
fi
|
fi
|
||||||
echo -e "\e[1mStep 2/3:\e[m Starting avahi-daemon..."
|
echo -e "\e[1mStep 2/3:\e[m Starting avahi-daemon..."
|
||||||
systemctl start avahi-daemon.service
|
systemctl start avahi-daemon.service
|
||||||
echo -e "\e[1mStep 3/3:\e[m Setting up browser...\e[m"
|
echo -e "\e[1mStep 3/3:\e[m Setting up browser...\e[m"
|
||||||
which firefox &>/dev/null && _firefox_flags
|
which firefox &>"${_NO_LOG}" && _firefox_flags
|
||||||
which chromium &>/dev/null && _chromium_flags
|
which chromium &>"${_NO_LOG}" && _chromium_flags
|
||||||
}
|
}
|
||||||
|
|
||||||
_chromium_flags() {
|
_chromium_flags() {
|
||||||
echo "Adding chromium flags to /etc/chromium-flags.conf..." >/dev/tty7
|
echo "Adding chromium flags to /etc/chromium-flags.conf..." >"${_LOG}"
|
||||||
cat << EOF >/etc/chromium-flags.conf
|
cat << EOF >/etc/chromium-flags.conf
|
||||||
--no-sandbox
|
--no-sandbox
|
||||||
--test-type
|
--test-type
|
||||||
|
@ -834,7 +837,7 @@ EOF
|
||||||
_firefox_flags() {
|
_firefox_flags() {
|
||||||
if [[ -f "/usr/lib/firefox/browser/defaults/preferences/vendor.js" ]]; then
|
if [[ -f "/usr/lib/firefox/browser/defaults/preferences/vendor.js" ]]; then
|
||||||
if ! grep -q startup /usr/lib/firefox/browser/defaults/preferences/vendor.js; then
|
if ! grep -q startup /usr/lib/firefox/browser/defaults/preferences/vendor.js; then
|
||||||
echo "Adding firefox flags vendor.js..." >/dev/tty7
|
echo "Adding firefox flags vendor.js..." >"${_LOG}"
|
||||||
cat << EOF >> /usr/lib/firefox/browser/defaults/preferences/vendor.js
|
cat << EOF >> /usr/lib/firefox/browser/defaults/preferences/vendor.js
|
||||||
pref("browser.aboutwelcome.enabled", false, locked);
|
pref("browser.aboutwelcome.enabled", false, locked);
|
||||||
pref("browser.startup.homepage_override.once", false, locked);
|
pref("browser.startup.homepage_override.once", false, locked);
|
||||||
|
@ -848,10 +851,10 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
_autostart_vnc() {
|
_autostart_vnc() {
|
||||||
echo "Setting VNC password /etc/tigervnc/passwd to ${_VNC_PW}..." >/dev/tty7
|
echo "Setting VNC password /etc/tigervnc/passwd to ${_VNC_PW}..." >"${_LOG}"
|
||||||
echo "${_VNC_PW}" | vncpasswd -f > /etc/tigervnc/passwd
|
echo "${_VNC_PW}" | vncpasswd -f > /etc/tigervnc/passwd
|
||||||
cp /etc/xdg/autostart/archboot.desktop /usr/share/applications/archboot.desktop
|
cp /etc/xdg/autostart/archboot.desktop /usr/share/applications/archboot.desktop
|
||||||
echo "Autostarting tigervnc..." >/dev/tty7
|
echo "Autostarting tigervnc..." >"${_LOG}"
|
||||||
cat << EOF > /etc/xdg/autostart/tigervnc.desktop
|
cat << EOF > /etc/xdg/autostart/tigervnc.desktop
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|
|
@ -11,19 +11,8 @@ build ()
|
||||||
[[ "$(uname -m)" == "riscv64" ]] && echo -e "\e[1mWelcome to \e[36mArchboot\e[m\e[1m - Arch Linux RISCV64\e[m" >> "${MOTD}"
|
[[ "$(uname -m)" == "riscv64" ]] && echo -e "\e[1mWelcome to \e[36mArchboot\e[m\e[1m - Arch Linux RISCV64\e[m" >> "${MOTD}"
|
||||||
#shellcheck disable=SC2129
|
#shellcheck disable=SC2129
|
||||||
echo -e "\e[1m----------------------------------------\e[m" >> "${MOTD}"
|
echo -e "\e[1m----------------------------------------\e[m" >> "${MOTD}"
|
||||||
echo -e "\e[1mVconsole Configuration:\e[m" >> "${MOTD}"
|
echo -e "\e[1mVconsole:\e[m" >> "${MOTD}"
|
||||||
echo -e " - Use the \e[1;92mALT + F1 - F6\e[m keys to change the virtual console." >> "${MOTD}"
|
echo -e " - Use the \e[1;92mALT + F1 - F7\e[m keys to change the virtual console." >> "${MOTD}"
|
||||||
if echo "${HOOKS[@]}" | grep -qw archboot_keymap ; then
|
|
||||||
echo -e " - Use the \e[1;92m'vconsole'\e[m script to change to a non-US keymap." >> "${MOTD}"
|
|
||||||
fi
|
|
||||||
if echo "${HOOKS[@]}" | grep -qw archboot_net_common ; then
|
|
||||||
echo -e "\e[1mNetwork Configuration:\e[m" >> "${MOTD}"
|
|
||||||
echo -e " - Use the \e[1;92m'network'\e[m script to change your network settings." >> "${MOTD}"
|
|
||||||
fi
|
|
||||||
if echo "${HOOKS[@]}" | grep -qw archboot_clock; then
|
|
||||||
echo -e "\e[1mClock Configuration:\e[m" >> "${MOTD}"
|
|
||||||
echo -e " - Use the \e[1;92m'clock'\e[m script to change your time and date." >> "${MOTD}"
|
|
||||||
fi
|
|
||||||
if echo "${HOOKS[@]}" | grep -qw archboot_net; then
|
if echo "${HOOKS[@]}" | grep -qw archboot_net; then
|
||||||
#shellcheck disable=SC2129
|
#shellcheck disable=SC2129
|
||||||
echo -e "\e[1mFor Additional Wi-Fi Authentification Or Online Help:\e[m" >> "${MOTD}"
|
echo -e "\e[1mFor Additional Wi-Fi Authentification Or Online Help:\e[m" >> "${MOTD}"
|
||||||
|
@ -32,7 +21,7 @@ if echo "${HOOKS[@]}" | grep -qw archboot_net; then
|
||||||
echo -e " - Use the \e[1;92m'weechat'\e[m IRC client." >> "${MOTD}"
|
echo -e " - Use the \e[1;92m'weechat'\e[m IRC client." >> "${MOTD}"
|
||||||
fi
|
fi
|
||||||
if echo "${HOOKS[@]}" | grep -qw archboot_installer; then
|
if echo "${HOOKS[@]}" | grep -qw archboot_installer; then
|
||||||
echo -e "\e[1mManage Archboot Environment:\e[m" >> "${MOTD}"
|
echo -e "\e[1mManage Archboot Environment Or For Experts:\e[m" >> "${MOTD}"
|
||||||
echo -e " - Use the \e[1;92m'launcher'\e[m or \e[1;92m'update'\e[m script." >> "${MOTD}"
|
echo -e " - Use the \e[1;92m'launcher'\e[m or \e[1;92m'update'\e[m script." >> "${MOTD}"
|
||||||
#shellcheck disable=SC2129
|
#shellcheck disable=SC2129
|
||||||
echo -e "\e[1mInstallation Or Installation For Experts:\e[m" >> "${MOTD}"
|
echo -e "\e[1mInstallation Or Installation For Experts:\e[m" >> "${MOTD}"
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<body>
|
<body>
|
||||||
<p><span><img src="/web/logo.png" alt="Logo"></span></p>
|
<p><span><img src="/web/logo.png" alt="Logo"></span></p>
|
||||||
<h1>Archboot Project | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z7GXKW4MKHK7C"><img src="/web/donate.png" alt="Donate"></a></h1>
|
<h1>Archboot Project | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z7GXKW4MKHK7C"><img src="/web/donate.png" alt="Donate"></a></h1>
|
||||||
<p><strong>© 2006 - 2023 | <a href=mailto:tpowa@archlinux.org>Tobias Powalowski</a></strong><br>Arch Linux Developer <strong><a href="https://archlinux.org/people/developers/#tpowa">tpowa</a><br>Last update: 17.07.2023 18:49</strong></p>
|
<p><strong>© 2006 - 2023 | <a href=mailto:tpowa@archlinux.org>Tobias Powalowski</a></strong><br>Arch Linux Developer <strong><a href="https://archlinux.org/people/developers/#tpowa">tpowa</a><br>Last update: 18.07.2023 10:02</strong></p>
|
||||||
<nav id="TOC" role="doc-toc">
|
<nav id="TOC" role="doc-toc">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#introduction" id="toc-introduction"><strong><span class="toc-section-number">1.</span> Introduction</strong></a></li>
|
<li><a href="#introduction" id="toc-introduction"><strong><span class="toc-section-number">1.</span> Introduction</strong></a></li>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
<li><a href="#interactive-launcher" id="toc-interactive-launcher"><span class="toc-section-number">3.4</span> Interactive Launcher</a></li>
|
<li><a href="#interactive-launcher" id="toc-interactive-launcher"><span class="toc-section-number">3.4</span> Interactive Launcher</a></li>
|
||||||
<li><a href="#interactive-setup" id="toc-interactive-setup"><span class="toc-section-number">3.5</span> Interactive Setup</a></li>
|
<li><a href="#interactive-setup" id="toc-interactive-setup"><span class="toc-section-number">3.5</span> Interactive Setup</a></li>
|
||||||
<li><a href="#for-experts-quickinst-installation" id="toc-for-experts-quickinst-installation"><span class="toc-section-number">3.6</span> For Experts: Quickinst Installation</a></li>
|
<li><a href="#for-experts-quickinst-installation" id="toc-for-experts-quickinst-installation"><span class="toc-section-number">3.6</span> For Experts: Quickinst Installation</a></li>
|
||||||
<li><a href="#manage-archboot" id="toc-manage-archboot"><span class="toc-section-number">3.7</span> CLI Manage Environment</a></li>
|
<li><a href="#cli-manage-archboot" id="toc-manage-archboot"><span class="toc-section-number">3.7</span> For Experts CLI Manage Environment</a></li>
|
||||||
<li><a href="#tools-for-backup-and-copying-of-an-existing-system" id="toc-tools-for-backup-and-copying-of-an-existing-system"><span class="toc-section-number">3.8</span> Tools For Backup And Copying Of An Existing System</a></li>
|
<li><a href="#tools-for-backup-and-copying-of-an-existing-system" id="toc-tools-for-backup-and-copying-of-an-existing-system"><span class="toc-section-number">3.8</span> Tools For Backup And Copying Of An Existing System</a></li>
|
||||||
<li><a href="#restoring-an-usb-device-to-fat32-state" id="toc-restoring-an-usb-device-to-fat32-state"><span class="toc-section-number">3.9</span> Restoring An USB Device To FAT32 State</a></li>
|
<li><a href="#restoring-an-usb-device-to-fat32-state" id="toc-restoring-an-usb-device-to-fat32-state"><span class="toc-section-number">3.9</span> Restoring An USB Device To FAT32 State</a></li>
|
||||||
<li><a href="#system-configuration" id="toc-system-configuration"><span class="toc-section-number">3.10</span> System configuration on installed system</a></li>
|
<li><a href="#system-configuration" id="toc-system-configuration"><span class="toc-section-number">3.10</span> System configuration on installed system</a></li>
|
||||||
|
@ -478,7 +478,7 @@
|
||||||
<p>Your <a href="https://wiki.archlinux.org/title/Console_fonts" title="Console fonts"><strong>console fonts</strong></a> and <a href="https://wiki.archlinux.org/title/Keymap" title="Keymap"><strong>keymap</strong></a> will be set by <strong>vconsole</strong> script.</p>
|
<p>Your <a href="https://wiki.archlinux.org/title/Console_fonts" title="Console fonts"><strong>console fonts</strong></a> and <a href="https://wiki.archlinux.org/title/Keymap" title="Keymap"><strong>keymap</strong></a> will be set by <strong>vconsole</strong> script.</p>
|
||||||
<h4 data-number="3.3.3" id="network"><span class="header-section-number">3.3.3</span> <strong>Network Configuration</strong></h4>
|
<h4 data-number="3.3.3" id="network"><span class="header-section-number">3.3.3</span> <strong>Network Configuration</strong></h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Offline Mode</strong>:
|
<li><strong>Offline Mode (local medium)</strong>:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Skipped in this mode.</li>
|
<li>Skipped in this mode.</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
@ -492,9 +492,9 @@
|
||||||
<h4 data-number="3.3.4" id="clock"><span class="header-section-number">3.3.4</span> <strong>Clock Configuration</strong></h4>
|
<h4 data-number="3.3.4" id="clock"><span class="header-section-number">3.3.4</span> <strong>Clock Configuration</strong></h4>
|
||||||
<p>You set your <a href="https://wiki.archlinux.org/title/Timezone" title="Timezone"><strong>timezone</strong></a> and <a href="https://wiki.archlinux.org/title/Date" title="Date"><strong>date</strong></a> with the <strong>clock</strong> script.</p>
|
<p>You set your <a href="https://wiki.archlinux.org/title/Timezone" title="Timezone"><strong>timezone</strong></a> and <a href="https://wiki.archlinux.org/title/Date" title="Date"><strong>date</strong></a> with the <strong>clock</strong> script.</p>
|
||||||
<h4 data-number="3.3.5" id="pacman"><span class="header-section-number">3.3.5</span> <strong>Pacman Setup</strong></h4>
|
<h4 data-number="3.3.5" id="pacman"><span class="header-section-number">3.3.5</span> <strong>Pacman Setup</strong></h4>
|
||||||
<p>Your <a href="https://wiki.archlinux.org/title/Pacman" title="Pacman"><strong>pacman</strong></a> will be configured by <strong>pacsetup</strong> script.</p>
|
<p><a href="https://wiki.archlinux.org/title/Pacman" title="Pacman"><strong>Pacman</strong></a> will be configured by <strong>pacsetup</strong> script.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Offline Mode</strong>:
|
<li><strong>Offline Mode (local medium)</strong>:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Skipped in this mode.</li>
|
<li>Skipped in this mode.</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
@ -511,7 +511,7 @@
|
||||||
<li>You can go straight to <strong>setup</strong>, leave to <strong>shell</strong>, launch <strong>desktop environment</strong> or do <strong>environment management</strong>.</li>
|
<li>You can go straight to <strong>setup</strong>, leave to <strong>shell</strong>, launch <strong>desktop environment</strong> or do <strong>environment management</strong>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h4 data-number="3.4.1" id="desktop-environments"><span class="header-section-number">3.4.1</span> <strong>Launch Desktop Environment / Remote VNC Access</strong></h4>
|
<h4 data-number="3.4.1" id="desktop-environments"><span class="header-section-number">3.4.1</span> <strong>Launch Desktop Environment / Remote VNC Access</strong></h4>
|
||||||
<p><a href="https://wiki.archlinux.org/title/Gnome" title="GNOME"><strong>Gnome</strong></a>, <a href="https://wiki.archlinux.org/title/Plasma" title="PLASMA"><strong>Plasma</strong></a>, <a href="https://wiki.archlinux.org/title/Sway" title="SWAY"><strong>Sway</strong></a> and <a href="https://wiki.archlinux.org/title/Xfce" title="XFCE"><strong>Xfce</strong></a> are supported.</p>
|
<p><a href="https://wiki.archlinux.org/title/Gnome" title="Gnome"><strong>Gnome</strong></a>, <a href="https://wiki.archlinux.org/title/Plasma" title="Plasma"><strong>Plasma</strong></a>, <a href="https://wiki.archlinux.org/title/Sway" title="Sway"><strong>Sway</strong></a> and <a href="https://wiki.archlinux.org/title/Xfce" title="XFCE"><strong>Xfce</strong></a> are supported.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://wiki.archlinux.org/title/VNC" title="VNC"><strong>VNC</strong></a> is automatically launched with starting <a href="https://wiki.archlinux.org/title/Xorg" title="Xorg"><strong>Xorg</strong></a>.
|
<li><a href="https://wiki.archlinux.org/title/VNC" title="VNC"><strong>VNC</strong></a> is automatically launched with starting <a href="https://wiki.archlinux.org/title/Xorg" title="Xorg"><strong>Xorg</strong></a>.
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -532,7 +532,15 @@
|
||||||
<li>This will also <strong>stop</strong> cleaning the system, while running other <strong>update</strong> tasks.</li>
|
<li>This will also <strong>stop</strong> cleaning the system, while running other <strong>update</strong> tasks.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h5 data-number="3.4.2.2" id="update-archboot-environment"><span class="header-section-number">3.4.2.2</span> <strong>Update Archboot Environment</strong></h5>
|
<h5 data-number="3.4.2.2" id="update-archboot-environment"><span class="header-section-number">3.4.2.2</span> <strong>Update Archboot Environment</strong></h5>
|
||||||
|
<ul>
|
||||||
|
<li>The <strong>Archboot Environment</strong> will be updated to <strong>latest</strong> packages.</li>
|
||||||
|
<li>Depending on the available <strong>RAM</strong>, you will get the new system with <strong>or</strong> without package cache.</li>
|
||||||
|
<li>The new system will be booted through <a href="https://wiki.archlinux.org/title/Kexec" title="kexec"><strong>kexec</strong></a>.</li>
|
||||||
|
</ul>
|
||||||
<h5 data-number="3.4.2.3" id="create-new-images"><span class="header-section-number">3.4.2.3</span> <strong>Create New Images</strong></h5>
|
<h5 data-number="3.4.2.3" id="create-new-images"><span class="header-section-number">3.4.2.3</span> <strong>Create New Images</strong></h5>
|
||||||
|
<ul>
|
||||||
|
<li>You will get <strong>new</strong> images with <strong>latest</strong> packages.</li>
|
||||||
|
</ul>
|
||||||
<h3 data-number="3.5" id="interactive-setup"><span class="header-section-number">3.5</span> <strong>Interactive Setup</strong></h3>
|
<h3 data-number="3.5" id="interactive-setup"><span class="header-section-number">3.5</span> <strong>Interactive Setup</strong></h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>You can run each menu point for doing the mentioned task.</li>
|
<li>You can run each menu point for doing the mentioned task.</li>
|
||||||
|
@ -587,7 +595,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<h3 data-number="3.7" id="cli-manage-archboot"><span class="header-section-number">3.7</span> <strong>CLI Manage Environment</strong></h3>
|
<h3 data-number="3.7" id="cli-manage-archboot"><span class="header-section-number">3.7</span> <strong>For Experts CLI Manage Environment</strong></h3>
|
||||||
<p>You can always bump your image to <strong>latest</strong> available possibilities.</p>
|
<p>You can always bump your image to <strong>latest</strong> available possibilities.</p>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -734,13 +742,13 @@ The calculated size to boot the image follows the formula:<br>
|
||||||
<td class="MyYes">✔</td>
|
<td class="MyYes">✔</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td>Archboot installer</td>
|
<td>Interactive Setup</td>
|
||||||
<td class="MyYes">✔</td>
|
<td class="MyYes">✔</td>
|
||||||
<td class="MyNo">✖</td>
|
<td class="MyNo">✖</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td><a href="https://wiki.archlinux.org/title/Archinstall" title="Archinstall"><strong>Archinstall</strong></a></td>
|
<td><a href="https://wiki.archlinux.org/title/Archinstall" title="Archinstall"><strong>Archinstall</strong></a></td>
|
||||||
<td class="MyOpt">★</td>
|
<td class="MyNo">★</td>
|
||||||
<td class="MyYes">✔</td>
|
<td class="MyYes">✔</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
|
@ -767,11 +775,6 @@ The calculated size to boot the image follows the formula:<br>
|
||||||
<td class="MyYes">✔</td>
|
<td class="MyYes">✔</td>
|
||||||
<td class="MyNo">✖</td>
|
<td class="MyNo">✖</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
|
||||||
<td>Glibc Localization Switch</td>
|
|
||||||
<td class="MyYes">✔</td>
|
|
||||||
<td class="MyOpt">★</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td><a href="https://wiki.archlinux.org/title/Accessibility" title="Accessibility"><strong>Accessibility</strong></a> support</td>
|
<td><a href="https://wiki.archlinux.org/title/Accessibility" title="Accessibility"><strong>Accessibility</strong></a> support</td>
|
||||||
<td class="MyNo">✖</td>
|
<td class="MyNo">✖</td>
|
||||||
|
|
Loading…
Reference in a new issue