2021-09-15 07:35:02 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# created by Tobias Powalowski <tpowa@archlinux.org>
|
2022-03-28 20:51:10 +02:00
|
|
|
. /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
|
2022-05-20 10:32:26 +02:00
|
|
|
. /usr/lib/archboot/xfce.sh
|
2022-05-23 10:04:50 +02:00
|
|
|
. /usr/lib/archboot/gnome.sh
|
2022-05-28 11:19:22 +02:00
|
|
|
. /usr/lib/archboot/gnome-wayland.sh
|
2022-05-20 10:32:26 +02:00
|
|
|
. /usr/lib/archboot/kde.sh
|
2022-05-28 22:38:41 +02:00
|
|
|
. /usr/lib/archboot/kde-wayland.sh
|
2021-09-22 09:02:56 +02:00
|
|
|
|
|
|
|
[[ -z "${1}" ]] && usage
|
2022-06-01 19:42:15 +02:00
|
|
|
_RUN_OPTION="$1"
|
2021-09-22 09:02:56 +02:00
|
|
|
|
|
|
|
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" ;;
|
2022-05-03 11:01:16 +02:00
|
|
|
-launch-xfce|--launch-xfce) _L_XFCE="1" ;;
|
2022-05-23 10:00:01 +02:00
|
|
|
-launch-gnome|--launch-gnome) _L_GNOME="1";;
|
2022-05-28 22:38:41 +02:00
|
|
|
-gnome-wayland|--gnome-wayland) _L_GNOME_WAYLAND="1";;
|
2022-05-20 10:32:26 +02:00
|
|
|
-launch-kde|--launch-kde) _L_KDE="1" ;;
|
2022-05-28 22:38:41 +02:00
|
|
|
-kde-wayland|--kde-wayland) _L_KDE_WAYLAND="1" ;;
|
2022-05-22 14:13:58 +02:00
|
|
|
-custom-xorg|--custom-xorg) _CUSTOM_X="1" ;;
|
2022-05-29 08:43:53 +02:00
|
|
|
-custom-wayland|--custom-wayland) _CUSTOM_WAYLAND="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 ..."
|
2022-06-01 19:42:15 +02:00
|
|
|
_zram_initialize
|
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
|
2022-03-21 09:32:55 +01:00
|
|
|
touch /.update-installer
|
2022-06-02 13:41:30 +02:00
|
|
|
if ! [[ -e /etc/profile.d/zz-00-archboot ]]; then
|
|
|
|
echo -e "\033[1mStep 1/2:\033[0m Removing not necessary files from / ..."
|
|
|
|
_clean_archboot
|
|
|
|
echo -e "\033[1mStep 2/3:\033[0m Generating archboot container in ${_W_DIR} ..."
|
|
|
|
echo " This will need some time ..."
|
|
|
|
_create_container || exit 1
|
|
|
|
echo "update-installer.sh ${_RUN_OPTION}" > /archboot/etc/profile.d/zz-00-archboot
|
|
|
|
systemctl stop dbus
|
|
|
|
echo -e "\033[1mStep 3/3:\033[0m Switching to new root ${_W_DIR} ..."
|
|
|
|
systemctl switch-root ${_W_DIR}
|
|
|
|
fi
|
2022-04-26 07:17:03 +02:00
|
|
|
[[ ${_RUNNING_ARCH} == "x86_64" ]] && _kver_x86
|
|
|
|
[[ ${_RUNNING_ARCH} == "aarch64" ]] && _kver_generic
|
2022-06-02 13:41:30 +02:00
|
|
|
echo -e "\033[1mStep 1/4:\033[0m Collect initramfs files ..."
|
2022-02-03 09:09:19 +01:00
|
|
|
echo " This will need some time ..."
|
|
|
|
# add fix for mkinitcpio 31, remove when 32 is released
|
2022-06-02 13:41:30 +02:00
|
|
|
cp /usr/share/archboot/patches/31-mkinitcpio.fixed /usr/bin/mkinitcpio
|
|
|
|
cp /usr/share/archboot/patches/31-initcpio.functions.fixed /usr/lib/initcpio/functions
|
2022-03-24 16:20:05 +01:00
|
|
|
# write initramfs to "${_W_DIR}"/tmp
|
2022-06-02 13:41:30 +02:00
|
|
|
mkinitcpio -k ${_HWKVER} -c ${_CONFIG} -d /tmp >/dev/tty7 2>&1 || exit 1
|
|
|
|
rm -f /tmp/etc/initrd-release
|
|
|
|
echo -e "\033[1mStep 2/4:\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-06-02 13:41:30 +02:00
|
|
|
echo -e "\033[1mStep 3/4:\033[0m Cleanup ${_W_DIR} ..."
|
2022-03-25 09:14:25 +01:00
|
|
|
cd /
|
2022-04-18 10:10:04 +02:00
|
|
|
# unload virtio-net to avoid none functional network device on aarch64
|
2022-05-17 20:26:48 +02:00
|
|
|
grep -qw virtio_net /proc/modules && rmmod virtio_net
|
2022-06-02 13:41:30 +02:00
|
|
|
echo -e "\033[1mStep 4/4:\033[0m Loading files through kexec into kernel now ..."
|
2022-05-18 07:41:35 +02:00
|
|
|
echo " This will need some time ..."
|
|
|
|
_kexec
|
2021-09-22 09:02:56 +02:00
|
|
|
fi
|
2021-09-15 07:35:02 +02:00
|
|
|
|
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-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
|
2022-05-03 11:01:16 +02:00
|
|
|
|
2022-05-29 08:43:53 +02:00
|
|
|
# install custom xorg or wayland
|
|
|
|
if [[ "${_CUSTOM_X}" == "1" || "${_CUSTOM_WAYLAND}" == "1" ]]; then
|
|
|
|
if [[ "${_CUSTOM_WAYLAND}" == "1" ]]; then
|
2022-06-02 08:14:15 +02:00
|
|
|
echo -e "\033[1mStep 1/1:\033[0m Installing custom wayland ..."
|
2022-05-29 08:43:53 +02:00
|
|
|
echo " This will need some time ..."
|
2022-05-29 22:34:55 +02:00
|
|
|
_prepare_graphic "${_WAYLAND_PACKAGE} ${_CUSTOM_WAYLAND}" > /dev/tty7 2>&1
|
2022-05-29 08:43:53 +02:00
|
|
|
fi
|
|
|
|
if [[ "${_CUSTOM_X}" == "1" ]]; then
|
2022-06-02 08:14:15 +02:00
|
|
|
echo -e "\033[1mStep 1/1:\033[0m Installing custom xorg ..."
|
2022-05-29 08:43:53 +02:00
|
|
|
echo " This will need some time ..."
|
2022-05-29 17:56:54 +02:00
|
|
|
_prepare_graphic "${_XORG_PACKAGE} ${_CUSTOM_XORG}" > /dev/tty7 2>&1
|
2022-05-29 08:43:53 +02:00
|
|
|
fi
|
2022-05-23 07:39:14 +02:00
|
|
|
systemctl start avahi-daemon.service
|
|
|
|
_chromium_flags
|
2022-05-22 11:27:43 +02:00
|
|
|
fi
|
|
|
|
|
2022-05-29 08:43:53 +02:00
|
|
|
# Gnome, KDE/PLASMA or XFCE launch
|
2022-05-28 22:45:22 +02:00
|
|
|
if [[ "${_L_XFCE}" == "1" || "${_L_KDE}" == "1" || "${_L_GNOME}" == "1" || "${_L_GNOME_WAYLAND}" == "1" || "${_L_KDE_WAYLAND}" == "1" ]]; then
|
2022-05-20 10:32:26 +02:00
|
|
|
# Launch xfce
|
2022-06-02 07:18:50 +02:00
|
|
|
[[ "${_L_XFCE}" == "1" ]] && _install_xfce
|
|
|
|
[[ "${_L_GNOME}" == "1" ]] && _install_gnome
|
|
|
|
[[ "${_L_GNOME_WAYLAND}" == "1" ]] && _install_gnome_wayland
|
|
|
|
[[ "${_L_KDE}" == "1" ]] && _install_kde
|
|
|
|
[[ "${_L_KDE_WAYLAND}" == "1" ]] && _install_kde_wayland
|
2022-06-02 08:14:15 +02:00
|
|
|
echo -e "\033[1mStep 3/3:\033[0m Starting avahi-daemon ..."
|
2022-05-20 10:32:26 +02:00
|
|
|
systemctl start avahi-daemon.service
|
2022-05-29 18:48:43 +02:00
|
|
|
# only start vnc on xorg environment
|
2022-06-02 07:18:50 +02:00
|
|
|
[[ "${_L_XFCE}" == "1" || "${_L_KDE}" == "1" || "${_L_GNOME}" == "1" ]] && _autostart_vnc
|
2022-05-20 21:53:27 +02:00
|
|
|
_chromium_flags
|
2022-06-02 07:18:50 +02:00
|
|
|
[[ "${_L_XFCE}" == "1" ]] && _start_xfce
|
|
|
|
[[ "${_L_GNOME}" == "1" ]] && _start_gnome
|
|
|
|
[[ "${_L_GNOME_WAYLAND}" == "1" ]] && _start_gnome_wayland
|
|
|
|
[[ "${_L_KDE}" == "1" ]] && _start_kde
|
|
|
|
[[ "${_L_KDE_WAYLAND}" == "1" ]] && _start_kde_wayland
|
2022-05-03 11:01:16 +02:00
|
|
|
fi
|
2022-05-20 10:32:26 +02:00
|
|
|
|
|
|
|
|