archboot/usr/bin/archboot-update-installer.sh

100 lines
4.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# created by Tobias Powalowski <tpowa@archlinux.org>
. /etc/archboot/defaults
2022-03-21 22:25:15 +01:00
. /usr/lib/archboot/common.sh
2022-05-03 15:36:34 +02:00
. /usr/lib/archboot/container.sh
2022-04-25 15:11:54 +02:00
. /usr/lib/archboot/update-installer.sh
2021-09-22 09:02:56 +02:00
[[ -z "${1}" ]] && usage
while [ $# -gt 0 ]; do
2022-04-30 08:47:58 +02:00
case ${1} in
-u|--u) _D_SCRIPTS="1" ;;
-latest|--latest) _L_COMPLETE="1" ;;
-latest-install|--latest-install) _L_INSTALL_COMPLETE="1";;
-latest-image|--latest-image) _G_RELEASE="1" ;;
-launch-xfce|--launch-xfce) _L_XFCE="1" ;;
2022-04-30 08:47:58 +02:00
-h|--h|?) usage ;;
*) usage ;;
esac
shift
2021-09-22 09:02:56 +02:00
done
2022-04-25 15:11:54 +02:00
_archboot_check
_download_latest
2022-03-27 13:16:20 +02:00
echo -e "\033[1mInformation:\033[0m Logging is done on \033[1m/dev/tty7\033[0m ..."
2021-10-08 10:04:39 +02:00
2021-09-22 09:02:56 +02:00
# Generate new environment and launch it with kexec
2022-01-13 17:21:39 +01:00
if [[ "${_L_COMPLETE}" == "1" || "${_L_INSTALL_COMPLETE}" == "1" ]]; then
2022-04-25 15:11:54 +02:00
_update_installer_check
touch /.update-installer
2022-04-25 15:11:54 +02:00
_umount_w_dir
_zram_mount "${_ZRAM_SIZE}"
echo -e "\033[1mStep 1/9:\033[0m Waiting for gpg pacman keyring import to finish ..."
2022-04-25 15:11:54 +02:00
_gpg_check
echo -e "\033[1mStep 2/9:\033[0m Removing not necessary files from / ..."
_clean_archboot
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 3/9:\033[0m Generating archboot container in ${_W_DIR} ..."
echo " This will need some time ..."
2022-04-25 15:11:54 +02:00
_create_container || exit 1
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 4/9:\033[0m Moving kernel ${VMLINUZ} to /${VMLINUZ} ..."
2022-03-25 09:14:25 +01:00
mv "${_W_DIR}"/boot/${VMLINUZ} / || exit 1
2022-04-26 07:17:03 +02:00
[[ ${_RUNNING_ARCH} == "x86_64" ]] && _kver_x86
[[ ${_RUNNING_ARCH} == "aarch64" ]] && _kver_generic
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 5/9:\033[0m Collect initramfs files in ${_W_DIR} ..."
echo " This will need some time ..."
# add fix for mkinitcpio 31, remove when 32 is released
cp "${_W_DIR}"/usr/share/archboot/patches/31-mkinitcpio.fixed "${_W_DIR}"/usr/bin/mkinitcpio
2022-03-21 22:28:08 +01:00
cp "${_W_DIR}"/usr/share/archboot/patches/31-initcpio.functions.fixed "${_W_DIR}"/usr/lib/initcpio/functions
# write initramfs to "${_W_DIR}"/tmp
systemd-nspawn -D "${_W_DIR}" /bin/bash -c "umount tmp;mkinitcpio -k ${_HWKVER} -c ${_CONFIG} -d /tmp" >/dev/tty7 2>&1 || exit 1
rm -f "${_W_DIR}"/tmp/etc/initrd-release
#mv "${_W_DIR}/tmp" /initrd || exit 1
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 6/9:\033[0m Cleanup ${_W_DIR} ..."
find "${_W_DIR}"/. -mindepth 1 -maxdepth 1 ! -name 'tmp' ! -name "${VMLINUZ}" -exec rm -rf {} \;
2022-03-25 09:14:25 +01:00
# 10 seconds for getting free RAM
sleep 10
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 7/9:\033[0m Create initramfs /initrd.img ..."
2022-02-03 09:25:48 +01:00
echo " This will need some time ..."
2022-04-25 15:11:54 +02:00
_create_initramfs
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 8/9:\033[0m Cleanup ${_W_DIR} ..."
2022-03-25 09:14:25 +01:00
cd /
2022-04-25 15:11:54 +02:00
_umount_w_dir
# unload virtio-net to avoid none functional network device on aarch64
2022-04-30 17:52:45 +02:00
grep -qw virtio_net < /proc/modules && rmmod virtio_net
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 9/9:\033[0m Loading files through kexec into kernel now ..."
2022-04-25 15:11:54 +02:00
_kexec
2021-09-22 09:02:56 +02:00
fi
2021-09-22 09:02:56 +02:00
# Generate new images
2022-01-13 17:21:39 +01:00
if [[ "${_G_RELEASE}" == "1" ]]; then
2022-03-28 21:46:14 +02:00
_ZRAM_IMAGE_SIZE=${_ZRAM_IMAGE_SIZE:-"5G"}
2022-04-25 15:11:54 +02:00
_zram_mount "${_ZRAM_IMAGE_SIZE}"
2022-03-27 13:16:20 +02:00
echo -e "\033[1mStep 1/2:\033[0m Removing not necessary files from / ..."
2022-04-25 15:11:54 +02:00
_clean_archboot
2022-03-27 13:37:39 +02:00
echo -e "\033[1mStep 2/2:\033[0m Generating new iso files in ${_W_DIR} now ..."
2021-10-07 07:22:05 +02:00
echo " This will need some time ..."
2022-01-21 11:54:13 +01:00
"archboot-${_RUNNING_ARCH}-release.sh" "${_W_DIR}" >/dev/tty7 2>&1 || exit 1
2022-03-27 13:16:20 +02:00
echo -e "\033[1mFinished:\033[0m New isofiles are located in ${_W_DIR}"
2021-09-22 09:02:56 +02:00
fi
# Launch xfce
if [[ "${_L_XFCE}" == "1" ]]; then
2022-05-12 08:10:44 +02:00
if ! [[ -e /usr/bin/startxfce4 ]]; then
2022-05-12 08:12:45 +02:00
echo -e "\033[1mStep 1/4:\033[0m Waiting for gpg pacman keyring import to finish ..."
2022-05-12 08:10:44 +02:00
_gpg_check
2022-05-12 08:12:45 +02:00
echo -e "\033[1mStep 2/4:\033[0m Installing XFCE desktop now ..."
2022-05-12 08:10:44 +02:00
echo " This will need some time ..."
_prepare_xfce >/dev/tty7 2>&1
2022-05-12 08:12:45 +02:00
echo -e "\033[1mStep 3/4:\033[0m Configuring XFCE desktop ..."
2022-05-12 08:10:44 +02:00
_configure_xfce >/dev/tty7 2>&1
2022-05-12 08:12:45 +02:00
echo -e "\033[1mStep 4/4:\033[0m Starting avahi-daemon ..."
2022-05-12 08:10:44 +02:00
systemctl start avahi-daemon.service
fi
echo "Setting VNC password /etc/tigervnc/passwd to ${_VNC_PW} ..."
echo "${_VNC_PW}" | vncpasswd -f > /etc/tigervnc/passwd
2022-05-12 08:12:45 +02:00
echo -e "Launching XFCE now, logging is done on \033[1m/dev/tty8\033[0m ..."
2022-05-12 08:07:32 +02:00
startxfce4 >/dev/tty8 2>&1
2022-05-11 20:30:18 +02:00
echo -e "To relaunch XFCE desktop use: \033[92mstartxfce4\033[0m"
fi