diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c6a855..1d52570 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,27 @@ Record of the modification in project development. ### Fixed ### Known Issue +## [1.3.0] - 2022-05-15 +### Added +- [Issue 31 : Add extra partition functionality.](https://github.com/suikan4github/kaiten-yaki/issues/31) +- [Issue 33 : Support "M/G/T" as size prefix.](https://github.com/suikan4github/kaiten-yaki/issues/33) + +### Changed +- [Issue 38 : "Ready to reboot" message should be changed](https://github.com/suikan4github/kaiten-yaki/issues/38) +- [Issue 39 : Change message style](https://github.com/suikan4github/kaiten-yaki/issues/39) + +### Deprecated +- [Issue 34 : BIOS support should be obsoleted ](https://github.com/suikan4github/kaiten-yaki/issues/34) + +### Removed +- [Issue 35 : Remove XTERMFONTSIZE variable.](https://github.com/suikan4github/kaiten-yaki/issues/35) + +### Fixed +- [Issue 32 : Ubuntu 22.04 fails to deactivate the swap](https://github.com/suikan4github/kaiten-yaki/issues/32) +- [Issue 36 : Clear the PASSPHRASE variable at the end of installation](https://github.com/suikan4github/kaiten-yaki/issues/36) + +### Known Issue + ## [1.2.0] - 2021-10-16 ### Added ### Changed @@ -74,7 +95,8 @@ See [Testing before release v1.1.0](https://github.com/suikan4github/kaiten-yaki ### Known Issue -[Unreleased]: https://github.com/suikan4github/kaiten-yaki/compare/v1.2.0...develop +[Unreleased]: https://github.com/suikan4github/kaiten-yaki/compare/v1.3.0...develop +[1.3.0]: https://github.com/suikan4github/kaiten-yaki/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/suikan4github/kaiten-yaki/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/suikan4github/kaiten-yaki/compare/v1.0.0...v1.1.0 [1.0.0]: https://github.com/suikan4github/kaiten-yaki/compare/v0.0.0...v1.0.0 diff --git a/INSTALL.md b/INSTALL.md index a4ef2d6..8fe6591 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,7 +48,8 @@ Followings are the set of the default settings of the parameters : - In the case of EFI firmware, 200MB is allocated to the EFI partition (EFISIZE). - Create a logical volume group named "vg1" in the encrypted volume (VGNAME) - Create a swap logical volume named "swap" in the "vg1". The size is 8GB (LVSWAPNAME,LVSWAPSIZE) -- Create a logical volume named **"anko"** as root volume, in the "vg1". The size of the new volume is the **50%** of the free space (LVROOTNAME, LVROOTSIZE). +- Create a logical volume named **"anko"** as root volume, in the "vg1". The size of the new volume is the **10GB** (LVROOTNAME, LVROOTSIZE). +- No Extra volumes will be created (USELVEXT1, LVEXT1SUFFIX, LVEXT1SIZE, USELVEXT2, LVEXT2SUFFIX, LVEXT2SIZE). ```sh # Configuration parameters for Kaiten-Yaki @@ -65,17 +66,53 @@ export ERASEALL=0 # Keep it unique from other distribution. export LVROOTNAME="anko" -# Logical volume size of the Linux installation. -# 30% mean, new logical volume will use 30% of the free space -# in the LVM volume group. For example, assume the free space is 100GB, -# and LVROOTSIZE is 30%FREE. Script will create 30GB logical volume. -export LVROOTSIZE="50%FREE" +# Suffix of the optional logical volumes. +# If you want to have optional OVs, set USELVEXT# to 1. +# Then, the suffix will be added to the LVROOTNAME. +# For example, Assume you have setting below : +# LVROOTNAME="anko" +# USELVEXT1=1 +# LVEXT1SUFFIX="_home" +# USELVEXT2=0 +# LVEXT2SUFFIX="_var" +# You will have +# anko +# anko_home +# You will not have anko_var because the USELVEXT2=0. +export USELVEXT1=0 +export LVEXT1SUFFIX="_home" +export USELVEXT2=0 +export LVEXT2SUFFIX="_var" + + +# Volume size parameters. +# Note that the order of the volume creation is : +# 1. EFI if needed +# 2. SWAP +# 3. LVROOT +# 4. LVEXT1 if needed +# 5. LVEXT2 if needed # Set the size of EFI partition and swap partition. # The unit is Byte. You can use M,G... notation. +# You CANNOT use the % notation. export EFISIZE="200M" + +# Logical volume size of the swap volumes. export LVSWAPSIZE="8G" +# Logical volume size of the Linux installation. +# There are four posibble way to specify the volume. +# nnnM, nnnG, nnnT : Absolute size speicification. nnnMbyte, nnnGByte, nnnT byte. +# mm%VG : Use mm% of the entire volume group. +# mm%FREE : Use mm% of the avairable storage are in the volume group. +export LVROOTSIZE="10G" + +# Logical volume size of the optional volumes. +export LVEXT1SIZE="30G" +export LVEXT2SIZE="10G" + + # Usually, these names can be left untouched. # If you change, keep them consistent through all installation in your system. export CRYPTPARTNAME="luks_volume" @@ -92,18 +129,22 @@ export OVERWRITEINSTALL=0 # If you specify 1000, that means 1000mSec. 0 means compile default. export ITERTIME=0 -# Void Linux only. Ignored in Ubuntu. -# The font size of the void-installer -export XTERMFONTSIZE=11 + ``` There are several restrictions : - For the first distribution installation, you must set ERASEALL to 1, to erase the entire storage device and create a LUKS partition. Kaiten-yaki script creates a maximum LUKS partition as possible. -- The LVROOTNAME must be unique among all installations in a computer. Otherwise, Kaiten-yaki terminates in a middle. -- The LVSWAPNAME must be identical among all installations in a computer. Otherwise, Kaiten-yaki creates an unnecessary logical volume. This is a waste of storage resources. +- The CRYPTPARTNAME and VGNAME must be unique among all installations in a physical disk. Otherwise, Kaiten-yaki terminates in a middle. +- The LVSWAPNAME must be identical among all installations in a physical disk. Otherwise, Kaiten-yaki creates an unnecessary logical volume. This is a waste of storage resources. - The EFISIZE and the LVSWAPSIZE are refereed during the first distribution installation only. -- The LVROOTSIZE is the size of a logical volume to create. This is a relative value to the existing free space in the volume group. If you want to install 3 distributions in a computer, you may want to set 33%FREE, 50%FREE, and 100%FREE for the first, second, and third distribution installation, respectively. -- The name with "-" is not allowed for the VGNAME, LVROOTNAME, and LVSWAPNAME. I saw some installer doesn't work if "-" in in the name. +- The LVROOTSIZE, LVEXT1SIZE, LVEXT2SIZE are the size of a logical volumes to create. There are several way to specify the size ( where n is number) : + - nnnM : New logical volume size is nnn**MByte**. + - nnnG : New logical volume size is nnn**GByte**. + - nnnT : New logical volume size is nnn**TByte**. + - nn%VG : New logical volume size is nn% of the **entire volume group**. + - nn%FREE : New logical volume size is nn% of the **free space** in the volume group. +- The name with "-" is not allowed for the VGNAME, LVROOTNAME, and LVSWAPNAME. I saw some distribution installer doesn't work if "-" in in the name. + ### About the overwrite-install The OVERWRITEINSTALL parameter allows you to use an existing logical volume as the root volume of the new installation. This is very dangerous because of several aspects like destroying the wrong volume and the risk of security. But sometimes it is @@ -131,6 +172,28 @@ The unit of value is milliseconds. The target linux kernel may take this duratio The smaller value gives the weaker security. +### About the extra logical volume +From ver 1.3.0, Kaiten-yaki support two extra volume in addition to LVROOT and LVSWAP. +- LVEXT1 +- LVEXT2 + +The usage of the extra logical volume is up to the user. Typically, user may want to use it for example separated /home partition. + +The name of the extra volume is the concatenation of the LVROOTNAME and LVEXTnSUFFIX ( where n is 1 or 2 ). For example, let's assume following configuration : +- LVROOTNAME="FOO" +- LVEXT1SUFFIX="_BAR" + +Thus, the name of the LVEXT1 is "FOO_BAR". + +### Partition and logical volume creation order. +Kaiten-yaki creates the partition/volume in the following order : +1. EFI partition +1. LUKS partition +1. LVSWAP +1. LVROOT +1. LVEXT1 +1. LVEXT2 + ## First stage: Setting up the volumes After you set the configuration parameters correctly, execute the following command from the shell. Again, you have to be promoted as the root user, and you have to use Bash. diff --git a/README.md b/README.md index aff6af9..bb95640 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ # Kaiten-yaki: Full disk encryption install script for Linux -Kaiten-yaki is a script set to install Linux to your AMD64 desktop system. With these scripts, you can install Ubuntu/Void Linux to an encrypted partition easily. +Kaiten-yaki v1.3.0 is a script set to install Linux to your AMD64 desktop system. With these scripts, you can install Ubuntu/Void Linux to an encrypted partition easily. The followings are the list of functionalities: -- Ubuntu and Void Linux. +- Ubuntu and Void Linux support. - Help to install from LiveCD/USB. - Invoke GUI/TUI installer automatically at the middle of script execution, for the ease of installation. -- Automatic detection of BIOS/EFI firmware and create MBR/GPT, respectively. +- Automatic detection of EFI firmware and create GPT (The BIOS detection and MBR creation function exist. But they are not test from v1.3.0). - Create an EFI partition, if needed. - Support multiple boot in a LUKS partition. - Support btrfs in addition to the major file systems. -- The "/boot" is located in the same logical volume as the "/". -- The swap logical volume is located inside the encrypted volume. -- You need to type a passphrase only once in the boot sequence. +- The "/boot" is located in the same encrypted logical volume with the "/". +- The swap is located in the same encrypted logical volume with the "/". +- You need to type a passphrase only once in the boot sequence of the installed system. With the configuration parameters, you can customize each installation. For example, you can configure the system to have 2, 3, or 4,... distributions in an HDD/SSD, as you want. @@ -25,15 +25,20 @@ As depicted above, the LVM volume group has only one physical volume. # Tested environment These scripts are tested with the following environment. -- VMWare Workstation 15.5.7 ( EFI/BIOS ) -- ThinkPad X220 (BIOS) -- Ubuntu 20.04.3 amd64 desktop -- Ubuntu 21.04 amd64 desktop -- Ubuntu 21.10 amd64 desktop -- Ubuntu Mate 20.04.3 amd64 desktop -- void-live-x86_64-20210218-mate.iso -- void-live-x86_64-musl-20210218-mate.iso -- void-live-x86_64-20210218.iso +- VMVare Workstation 15.5.7 ( EFI ) +- Ubuntu 22.04 amd64 desktop +- void-live-x86_64-20210930-xfce.iso +- void-live-x86_64-20210930.iso +- Followings are the tested environment of the Kaiten-Yaki v1.2.0 + - VMWare Workstation 15.5.7 ( EFI/BIOS ) + - ThinkPad X220 (BIOS) + - Ubuntu 20.04.3 amd64 desktop + - Ubuntu 21.04 amd64 desktop + - Ubuntu 21.10 amd64 desktop + - Ubuntu Mate 20.04.3 amd64 desktop + - void-live-x86_64-20210218-mate.iso + - void-live-x86_64-musl-20210218-mate.iso + - void-live-x86_64-20210218.iso # Installation Rough procedure of the installation is as followings : @@ -43,11 +48,8 @@ Rough procedure of the installation is as followings : The detail procedure is explained in the [INSTALL.md](INSTALL.md). -# Known issues -If you install two or more Void Linux into the EFI system, only the last one can boot without trouble. This is not the problem of Kaiten-yaki. - # Variants considerations -Ubuntu has several variants ( flavors ). While while only the MATE flavor is tested, other flavors may work correctly as far as it uses Ubiquity installer. +Ubuntu has several variants ( flavors ). While while only the Ubuntu desktop is tested, other flavors may work correctly as far as it uses Ubiquity installer. # Other resources See [Wiki](https://github.com/suikan4github/kaiten-yaki/wiki) for the application notes and the useful links. diff --git a/script/config.sh b/script/config.sh index bb378c0..4ed7602 100644 --- a/script/config.sh +++ b/script/config.sh @@ -14,17 +14,53 @@ export ERASEALL=0 # Keep it unique from other distribution. export LVROOTNAME="anko" -# Logical volume size of the Linux installation. -# 30% mean, new logical volume will use 30% of the free space -# in the LVM volume group. For example, assume the free space is 100GB, -# and LVROOTSIZE is 30%FREE. Script will create 30GB logical volume. -export LVROOTSIZE="50%FREE" +# Suffix of the optional logical volumes. +# If you want to have optional OVs, set USELVEXT# to 1. +# Then, the suffix will be added to the LVROOTNAME. +# For example, Assume you have setting below : +# LVROOTNAME="anko" +# USELVEXT1=1 +# LVEXT1SUFFIX="_home" +# USELVEXT2=0 +# LVEXT2SUFFIX="_var" +# You will have +# anko +# anko_home +# You will not have anko_var because the USELVEXT2=0. +export USELVEXT1=0 +export LVEXT1SUFFIX="_home" +export USELVEXT2=0 +export LVEXT2SUFFIX="_var" + + +# Volume size parameters. +# Note that the order of the volume creation is : +# 1. EFI if needed +# 2. SWAP +# 3. LVROOT +# 4. LVEXT1 if needed +# 5. LVEXT2 if needed # Set the size of EFI partition and swap partition. -# The unit is Byte. You can use M,G... notation. +# The unit is Byte. You can use M,G[Kaiten-Yaki] notation. +# You CANNOT use the % notation. export EFISIZE="200M" + +# Logical volume size of the swap volumes. export LVSWAPSIZE="8G" +# Logical volume size of the Linux installation. +# There are four posibble way to specify the volume. +# nnnM, nnnG, nnnT : Absolute size speicification. nnnMbyte, nnnGByte, nnnT byte. +# mm%VG : Use mm% of the entire volume group. +# mm%FREE : Use mm% of the avairable storage are in the volume group. +export LVROOTSIZE="10G" + +# Logical volume size of the optional volumes. +export LVEXT1SIZE="30G" +export LVEXT2SIZE="10G" + + # Usually, these names can be left untouched. # If you change, keep them consistent through all installation in your system. export CRYPTPARTNAME="luks_volume" @@ -41,9 +77,6 @@ export OVERWRITEINSTALL=0 # If you specify 1000, that means 1000mSec. 0 means compile default. export ITERTIME=0 -# Void Linux only. Ignored in Ubuntu. -# The font size of the void-installer -export XTERMFONTSIZE=11 # !!!!!!!!!!!!!! DO NOT EDIT FOLLOWING LINES. !!!!!!!!!!!!!! @@ -63,11 +96,3 @@ else # BIOS firmware export CRYPTPARTITION=1 fi # EFI firmware - -# Detect the GUI environment -# This code is not efered. Just left because it is interestintg code. -if env | grep -w -e XDG_SESSION_TYPE -e DISPLAY -e WAYLAND_DISPLAY > /dev/null ; then - export GUIENV=1 # set 1 if GUI env. -else - export GUIENV=0 # set 0 if not GUI env. -fi \ No newline at end of file diff --git a/script/lib/chrooted_job_ubuntu.sh b/script/lib/chrooted_job_ubuntu.sh index 9fdc473..2470a61 100644 --- a/script/lib/chrooted_job_ubuntu.sh +++ b/script/lib/chrooted_job_ubuntu.sh @@ -6,7 +6,7 @@ function chrooted_job() { mount -a # Prepare the crypto tool in the install target - echo "...Installing cryptsetup-initramfs package." + echo "[Kaiten-Yaki] Installing cryptsetup-initramfs package." apt -qq install -y cryptsetup-initramfs # Prepare a new key file to embed in to the ramfs. @@ -14,28 +14,28 @@ function chrooted_job() { # The new key is 4096byte length binary value. # Because this key is sotred as "cleartext", in the target file sysmte, # only root is allowed to access this key file. - echo "...Prepairing key file." + echo "[Kaiten-Yaki] Prepairing key file." mkdir /etc/luks dd if=/dev/urandom of=/etc/luks/boot_os.keyfile bs=4096 count=1 status=none chmod u=rx,go-rwx /etc/luks chmod u=r,go-rwx /etc/luks/boot_os.keyfile # Add the new key to the LUKS 2nd key slot. The passphrase is required to modify the LUKS keyslot. - echo "...Adding a key to the key file." + echo "[Kaiten-Yaki] Adding a key to the key file." printf %s "${PASSPHRASE}" | cryptsetup luksAddKey --iter-time "${ITERTIME}" -d - "${DEV}${CRYPTPARTITION}" /etc/luks/boot_os.keyfile # Register the LUKS voluem to /etc/crypttab to tell "This volume is encrypted" - echo "...Adding LUKS volume info to /etc/crypttab." + echo "[Kaiten-Yaki] Adding LUKS volume info to /etc/crypttab." echo "${CRYPTPARTNAME} UUID=$(blkid -s UUID -o value ${DEV}${CRYPTPARTITION}) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab # Add key file to the list of the intems in initramfs. # See https://cryptsetup-team.pages.debian.net/cryptsetup/README.initramfs.html for detail - echo "...Directing to include keyfile into the initramfs" + echo "[Kaiten-Yaki] Directing to include keyfile into the initramfs" echo "KEYFILE_PATTERN=/etc/luks/*.keyfile" >> /etc/cryptsetup-initramfs/conf-hook echo "UMASK=0077" >> /etc/initramfs-tools/initramfs.conf # Finally, update the ramfs initial image with the key file. - echo "...Upadting initramfs." + echo "[Kaiten-Yaki] Upadting initramfs." update-initramfs -uk all # Leave chroot diff --git a/script/lib/chrooted_job_void.sh b/script/lib/chrooted_job_void.sh index 2bb8430..a908bbb 100644 --- a/script/lib/chrooted_job_void.sh +++ b/script/lib/chrooted_job_void.sh @@ -6,7 +6,7 @@ function chrooted_job() { mount -a # Prepare the crypto tool in the install target - echo "...Installing cryptsetup-initramfs package." + echo "[Kaiten-Yaki] Installing cryptsetup-initramfs package." xbps-install -y lvm2 cryptsetup # Prepare a new key file to embed in to the ramfs. @@ -14,29 +14,29 @@ function chrooted_job() { # The new key is 4096byte length binary value. # Because this key is sotred as "cleartext", in the target file sysmte, # only root is allowed to access this key file. - echo "...Prepairing key file." + echo "[Kaiten-Yaki] Prepairing key file." mkdir /etc/luks dd if=/dev/urandom of=/etc/luks/boot_os.keyfile bs=4096 count=1 status=none chmod u=rx,go-rwx /etc/luks chmod u=r,go-rwx /etc/luks/boot_os.keyfile # Add the new key to the LUKS 2nd key slot. The passphrase is required to modify the LUKS keyslot. - echo "...Adding a key to the key file." + echo "[Kaiten-Yaki] Adding a key to the key file." printf %s "${PASSPHRASE}" | cryptsetup luksAddKey --iter-time "${ITERTIME}" -d - "${DEV}${CRYPTPARTITION}" /etc/luks/boot_os.keyfile # Register the LUKS voluem to /etc/crypttab to tell "This volume is encrypted" - echo "...Adding LUKS volume info to /etc/crypttab." + echo "[Kaiten-Yaki] Adding LUKS volume info to /etc/crypttab." echo "${CRYPTPARTNAME} UUID=$(blkid -s UUID -o value ${DEV}${CRYPTPARTITION}) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab # Add key file to the list of the intems in initramfs. # See https://man7.org/linux/man-pages/man5/dracut.conf.5.html for details. - echo "...Directing to include keyfile into the initramfs" + echo "[Kaiten-Yaki] Directing to include keyfile into the initramfs" echo 'install_items+=" /etc/luks/boot_os.keyfile /etc/crypttab " ' >> /etc/dracut.conf.d/10-crypt.conf # Finally, update the ramfs initial image with the key file. - echo "...Upadting initramfs." + echo "[Kaiten-Yaki] Upadting initramfs." xbps-reconfigure -fa - echo "...grub-mkconfig." + echo "[Kaiten-Yaki] grub-mkconfig." grub-mkconfig -o /boot/grub/grub.cfg # Leave chroot diff --git a/script/lib/common.sh b/script/lib/common.sh index cd0365c..ddd4fa0 100644 --- a/script/lib/common.sh +++ b/script/lib/common.sh @@ -9,11 +9,11 @@ function confirmation(){ if [ "${ERASEALL}" -ne 0 ] && [ "${OVERWRITEINSTALL}" -ne 0 ] ; then cat <<- HEREDOC ***** ERROR : Confliction between ERASEALL and OVERWRITEINSTALL ***** - ...ERASEALL = ${ERASEALL} - ...OVERWRITEINSTALL = ${OVERWRITEINSTALL} - ...Check configuration in your config.sh + [Kaiten-Yaki] ERASEALL = ${ERASEALL} + [Kaiten-Yaki] OVERWRITEINSTALL = ${OVERWRITEINSTALL} + [Kaiten-Yaki] Check configuration in your config.sh - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC return 1 # with error status fi @@ -22,10 +22,10 @@ function confirmation(){ if echo "${VGNAME}" | grep "-" -i > /dev/null ; then # "-" is found in the volume group name. cat <<- HEREDOC ***** ERROR : VGNAME is "${VGNAME}" ***** - ..."-" is not allowed in the volume name. - ...Check configuration in your config.sh + [Kaiten-Yaki] "-" is not allowed in the volume name. + [Kaiten-Yaki] Check configuration in your config.sh - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC return 1 # with error status fi # "-" is found in the volume group name. @@ -34,22 +34,50 @@ function confirmation(){ if echo "${LVROOTNAME}" | grep "-" -i > /dev/null ; then # "-" is found in the volume name. cat <<- HEREDOC ***** ERROR : LVROOTNAME is "${LVROOTNAME}" ***** - ..."-" is not allowed in the volume name. - ...Check configuration in your config.sh + [Kaiten-Yaki] "-" is not allowed in the volume name. + [Kaiten-Yaki] Check configuration in your config.sh - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC return 1 # with error status fi # "-" is found in the volume name. + # Sanity check for lvext1 volume suffix + if [ "${USELVEXT1}" -ne 0 ] ; then + if echo "${LVEXT1SUFFIX}" | grep "-" -i > /dev/null ; then # "-" is found in the volume name. + cat <<- HEREDOC + ***** ERROR : LVEXT1SUFFIX is "${LVEXT1SUFFIX}" ***** + [Kaiten-Yaki] "-" is not allowed in the volume name. + [Kaiten-Yaki] Check configuration in your config.sh + + [Kaiten-Yaki] Installation process terminated.. + HEREDOC + return 1 # with error status + fi # "-" is found in the volume suffix. + fi # USELVEXT1 + + # Sanity check for lvext2 volume suffix + if [ "${USELVEXT2}" -ne 0 ] ; then + if echo "${LVEXT2SUFFIX}" | grep "-" -i > /dev/null ; then # "-" is found in the volume name. + cat <<- HEREDOC + ***** ERROR : LVEXT2SUFFIX is "${LVEXT2SUFFIX}" ***** + [Kaiten-Yaki] "-" is not allowed in the volume name. + [Kaiten-Yaki] Check configuration in your config.sh + + [Kaiten-Yaki] Installation process terminated.. + HEREDOC + return 1 # with error status + fi # "-" is found in the volume suffix. + fi # USELVEXT2 + # Sanity check for swap volume name if echo "${LVSWAPNAME}" | grep "-" -i > /dev/null ; then # "-" is found in the volume name. cat <<- HEREDOC ***** ERROR : LVSWAPNAME is "${LVSWAPNAME}" ***** - ..."-" is not allowed in the volume name. - ...Check configuration in your config.sh + [Kaiten-Yaki] "-" is not allowed in the volume name. + [Kaiten-Yaki] Check configuration in your config.sh - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC return 1 # with error status fi # "-" is found in the volume name. @@ -62,28 +90,45 @@ function confirmation(){ Volume group name : "${VGNAME}" Root volume name : "${VGNAME}-${LVROOTNAME}" Root volume size : "${LVROOTSIZE}" + HEREDOC + + if [ "${USELVEXT1}" -ne 0 ] ; then + cat <<- HEREDOC + Extra volume name 1 : "${VGNAME}-${LVROOTNAME}${LVEXT1SUFFIX}" + Extra volume size 1 : "${LVEXT1SIZE}" + HEREDOC + fi # USELVEXT1 + + if [ "${USELVEXT2}" -ne 0 ] ; then + cat <<- HEREDOC + Extra volume name 2 : "${VGNAME}-${LVROOTNAME}${LVEXT2SUFFIX}" + Extra volume size 2 : "${LVEXT2SIZE}" + HEREDOC + fi # USELVEXT2 + + cat <<- HEREDOC Swap volume name : "${VGNAME}-${LVSWAPNAME}" Swap volume size : "${LVSWAPSIZE}" --iter-time parameter : ${ITERTIME} HEREDOC if [ "${ERASEALL}" -ne 0 ] ; then - echo "Going to erase entire disk ${DEV}." + echo "[Kaiten-Yaki] Going to erase entire disk ${DEV}." elif [ "${OVERWRITEINSTALL}" -ne 0 ] ; then - echo "Going to overwrite the logical volume \"${VGNAME}-${LVROOTNAME}\"." + echo "[Kaiten-Yaki] Going to overwrite the logical volume \"${VGNAME}-${LVROOTNAME}\"." else - echo "Going to create a new logical volume \"${VGNAME}-${LVROOTNAME}\"." + echo "[Kaiten-Yaki] Going to create a new logical volume \"${VGNAME}-${LVROOTNAME}\"." fi # ----- Set Passphrase ----- # Input passphrase echo "" - echo "Type passphrase for the disk encryption." + echo "[Kaiten-Yaki] Type passphrase for the disk encryption." read -sr PASSPHRASE export PASSPHRASE - echo "Type passphrase again, to confirm." + echo "[Kaiten-Yaki] Type passphrase again, to confirm." read -sr PASSPHRASE_C # Validate whether both are indentical or not @@ -91,11 +136,33 @@ function confirmation(){ cat <<-HEREDOC ***** ERROR : Passphrase doesn't match ***** - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC return 1 # with error status + else + # Clear the PASSPHRASE for checking because we don't use it anymore. + PASSPHRASE_C="" fi # passphrase validation + + # Add -l or -L parameter to the size. The lvcreate command have two size parameter. + # -l ###%[FREE|VG|PVS|ORIGIN] : Size by relative value. + # -L ###[M|G|T|m|g|t] : Size by absolute value. + # Too preven the duplicated match, awk exists the process after it match the /%/ pattern. + # If Unit is not specified, installation will fail. + + LVSWAPSIZE=$(echo "${LVSWAPSIZE}" | awk '/%/{print "-l", $0; exit} /M|G|T|m|g|t/{print "-L", $0}') + export LVSWAPSIZE + + LVROOTSIZE=$(echo "${LVROOTSIZE}" | awk '/%/{print "-l", $0; exit} /M|G|T|m|g|t/{print "-L", $0}') + export LVROOTSIZE + + LVEXT1SIZE=$(echo "${LVEXT1SIZE}" | awk '/%/{print "-l", $0; exit} /M|G|T|m|g|t/{print "-L", $0}') + export LVEXT1SIZE + + LVEXT2SIZE=$(echo "${LVEXT2SIZE}" | awk '/%/{print "-l", $0; exit} /M|G|T|m|g|t/{print "-L", $0}') + export LVEXT2SIZE + # succesfull return return 0 } @@ -107,6 +174,11 @@ function confirmation(){ function pre_install() { + # Internal variables. + # These variables displays whether the volumes are created in this installation. + IS_ROOT_CREATED=0 + IS_LVEXT1_CREATED=0 + IS_LVEXT2_CREATED=0 # ----- Erase entire disk, create partitions, format them and encrypt the LUKS partition ----- if [ "${ERASEALL}" -ne 0 ] ; then @@ -114,19 +186,19 @@ function pre_install() { # Assign specified space and rest of disk to the EFI and LUKS partition, respectively. if [ "${ISEFI}" -ne 0 ] ; then # EFI # Zap existing partition table and create new GPT - echo "...Initializing \"${DEV}\" with GPT." + echo "[Kaiten-Yaki] Initializing \"${DEV}\" with GPT." sgdisk --zap-all "${DEV}" if is_error ; then return 1 ; fi; # If error, terminate # Create EFI partition and format it - echo "...Creating an EFI partition on \"${DEV}\"." + echo "[Kaiten-Yaki] Creating an EFI partition on \"${DEV}\"." # shellcheck disable=SC2140 sgdisk --new="${EFIPARTITION}":0:+"${EFISIZE}" --change-name="${EFIPARTITION}":"EFI System" --typecode="${EFIPARTITION}":ef00 "${DEV}" if is_error ; then return 1 ; fi; # If error, terminate - echo "...Formatting the EFI parttion." + echo "[Kaiten-Yaki] Formatting the EFI parttion." mkfs.vfat -F 32 -n EFI-SP "${DEV}${EFIPARTITION}" if is_error ; then return 1 ; fi; # If error, terminate # Create Linux partition - echo "...Creating a Linux partition on ${DEV}." + echo "[Kaiten-Yaki] Creating a Linux partition on ${DEV}." # shellcheck disable=SC2140 sgdisk --new="${CRYPTPARTITION}":0:0 --change-name="${CRYPTPARTITION}":"Linux LUKS" --typecode="${CRYPTPARTITION}":8309 "${DEV}" if is_error ; then return 1 ; fi; # If error, terminate @@ -134,11 +206,11 @@ function pre_install() { sgdisk --print "${DEV}" else # BIOS # Zap existing partition table - echo "...Erasing partition table of \"${DEV}\"." + echo "[Kaiten-Yaki] Erasing partition table of \"${DEV}\"." dd if=/dev/zero of="${DEV}" bs=512 count=1 if is_error ; then return 1 ; fi; # If error, terminate # Create MBR and allocate max storage for Linux partition - echo "...Creating a Linux partition on ${DEV} with MBR." + echo "[Kaiten-Yaki] Creating a Linux partition on ${DEV} with MBR." sfdisk "${DEV}" <<- HEREDOC 2M,,L HEREDOC @@ -146,23 +218,23 @@ function pre_install() { fi # if EFI firmware # Encrypt the partition to install Linux - echo "...Initializing \"${DEV}${CRYPTPARTITION}\" as crypt partition" + echo "[Kaiten-Yaki] Initializing \"${DEV}${CRYPTPARTITION}\" as crypt partition" printf %s "${PASSPHRASE}" | cryptsetup luksFormat --iter-time "${ITERTIME}" --type=luks1 --key-file - --batch-mode "${DEV}${CRYPTPARTITION}" fi # if erase all # ----- Open the LUKS partition ----- # Open the crypt partition. - echo "...Opening a crypt partition \"${DEV}${CRYPTPARTITION}\" as \"${CRYPTPARTNAME}\"" + echo "[Kaiten-Yaki] Opening a crypt partition \"${DEV}${CRYPTPARTITION}\" as \"${CRYPTPARTNAME}\"" printf %s "${PASSPHRASE}" | cryptsetup open -d - "${DEV}${CRYPTPARTITION}" "${CRYPTPARTNAME}" # Check whether successful open. If mapped, it is successful. if [ ! -e /dev/mapper/"${CRYPTPARTNAME}" ] ; then cat <<- HEREDOC ***** ERROR : Cannot open LUKS volume "${CRYPTPARTNAME}" on "${DEV}${CRYPTPARTITION}". ***** - ...Check passphrase and your config.txt + [Kaiten-Yaki] Check passphrase and your config.txt - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC return 1 # with error status fi # if crypt volume is unable to open @@ -170,55 +242,68 @@ function pre_install() { # ----- Configure the LVM in LUKS volume ----- # Check volume group ${VGNAME} exist or not if vgdisplay -s "${VGNAME}" &> /dev/null ; then # if exist - echo "...Volume group \"${VGNAME}\" already exist. Skipped to create. No problem." - echo "...Activating all logical volumes in volume group \"${VGNAME}\"." + echo "[Kaiten-Yaki] Volume group \"${VGNAME}\" already exist. Skipped to create. No problem." + echo "[Kaiten-Yaki] Activating all logical volumes in volume group \"${VGNAME}\"." vgchange -ay - echo "...Scanning all logical volumes." + echo "[Kaiten-Yaki] Scanning all logical volumes." lvscan else - echo "...Initializing a physical volume on \"${CRYPTPARTNAME}\"" + echo "[Kaiten-Yaki] Initializing a physical volume on \"${CRYPTPARTNAME}\"" pvcreate /dev/mapper/"${CRYPTPARTNAME}" if [ $? -ne 0 ] ; then deactivate_and_close; return 1 ; fi; - echo "...And then creating Volume group \"${VGNAME}\"." + echo "[Kaiten-Yaki] And then creating Volume group \"${VGNAME}\"." vgcreate "${VGNAME}" /dev/mapper/"${CRYPTPARTNAME}" if [ $? -ne 0 ] ; then deactivate_and_close; return 1 ; fi; fi # if /dev/volume-groupt exist # Create a SWAP Logical Volume on VG, if it doesn't exist if [ -e /dev/mapper/"${VGNAME}"-"${LVSWAPNAME}" ] ; then - echo "...Swap volume already exist. Skipped to create. No problem." + echo "[Kaiten-Yaki] Swap volume already exist. Skipped to create. No problem." else - echo "...Creating logical volume \"${LVSWAPNAME}\" on \"${VGNAME}\"." - lvcreate -L "${LVSWAPSIZE}" -n "${LVSWAPNAME}" "${VGNAME}" + echo "[Kaiten-Yaki] Creating logical volume \"${LVSWAPNAME}\" on \"${VGNAME}\"." + # Too use the bash IFS, first parameter is not quoted. + lvcreate ${LVSWAPSIZE} -n "${LVSWAPNAME}" "${VGNAME}" if [ $? -ne 0 ] ; then deactivate_and_close; return 1 ; fi; fi # if /dev/mapper/swap volume already exit. # Create a ROOT Logical Volume on VG. if [ -e /dev/mapper/"${VGNAME}"-"${LVROOTNAME}" ] ; then # exist if [ "${OVERWRITEINSTALL}" -ne 0 ] ; then # exist and overwrite install - echo "...Logical volume \"${VGNAME}-${LVROOTNAME}\" already exists. OK." + echo "[Kaiten-Yaki] Logical volume \"${VGNAME}-${LVROOTNAME}\" already exists. OK." + + # Create extended volumes if needed + create_ext_lv + if [ $? -ne 0 ] ; then deactivate_and_close; return 1 ; fi; + else # exist and not overwriteinstall cat <<- HEREDOC ***** ERROR : Logical volume "${VGNAME}-${LVROOTNAME}" already exists. ***** - ...Check LVROOTNAME environment variable in your config.txt. + [Kaiten-Yaki] Check LVROOTNAME environment variable in your config.txt. HEREDOC # Deactivate all lg and close the LUKS volume deactivate_and_close return 1 # with error status fi else # not exsit - if [ "${OVERWRITEINSTALL}" -ne 0 ] ; then + if [ "${OVERWRITEINSTALL}" -ne 0 ] ; then # not exist and overwrite install cat <<- HEREDOC ***** ERROR : Logical volume "${VGNAME}-${LVROOTNAME}" doesn't exist while overwrite install. ***** - ...Check consistency of your config.txt. + [Kaiten-Yaki] Check consistency of your config.txt. HEREDOC # Deactivate all lg and close the LUKS volume deactivate_and_close return 1 # with error status else # not exist and not overwrite install - echo "...Creating logical volume \"${LVROOTNAME}\" on \"${VGNAME}\"." - lvcreate -l "${LVROOTSIZE}" -n "${LVROOTNAME}" "${VGNAME}" + echo "[Kaiten-Yaki] Creating logical volume \"${LVROOTNAME}\" on \"${VGNAME}\"." + # Too use the bash IFS, first parameter is not quoted. + lvcreate ${LVROOTSIZE} -n "${LVROOTNAME}" "${VGNAME}" if [ $? -ne 0 ] ; then deactivate_and_close; return 1 ; fi; + IS_ROOT_CREATED=1 + + # Create extended volumes if needed + create_ext_lv + if [ $? -ne 0 ] ; then deactivate_and_close; return 1 ; fi; + fi fi @@ -251,7 +336,17 @@ function para_install_msg() { fi # Root volume mapping - echo "/ : /dev/mapper/${VGNAME}-${LVROOTNAME}" + echo "/ : /dev/mapper/${VGNAME}-${LVROOTNAME}" + + # If USELVEXT1 exist. + if [ "${USELVEXT1}" -ne 0 ] ; then + echo "LVEXT1 : /dev/mapper/${VGNAME}-${LVROOTNAME}${LVEXT1SUFFIX}" + fi + + # If USELVEXT2 exist. + if [ "${USELVEXT2}" -ne 0 ] ; then + echo "LVEXT2 : /dev/mapper/${VGNAME}-${LVROOTNAME}${LVEXT2SUFFIX}" + fi # In case of erased storage, add this mapping if [ "${ERASEALL}" -ne 0 ] ; then @@ -272,15 +367,15 @@ function post_install() { # ${BTRFSOPTION} is defined by the caller of this function for BTRFS formated volume. # ${BTRFSOPTION} have to be NOT quoted. Otherwise, mount will receive an empty # string as first option, when the veraible is empty. - echo "...Mounting /dev/mapper/${VGNAME}-${LVROOTNAME} on ${TARGETMOUNTPOINT}." + echo "[Kaiten-Yaki] Mounting /dev/mapper/${VGNAME}-${LVROOTNAME} on ${TARGETMOUNTPOINT}." mount ${BTRFSOPTION} /dev/mapper/"${VGNAME}"-"${LVROOTNAME}" "${TARGETMOUNTPOINT}" # And mount other directories - echo "...Mounting all other dirs." + echo "[Kaiten-Yaki] Mounting all other dirs." for n in proc sys dev tmp etc/resolv.conf; do mount --rbind "/$n" "${TARGETMOUNTPOINT}/$n"; done # Copy all scripts to the target /tmp for using in chroot session. - echo "...Copying files in current dir to ${TARGETMOUNTPOINT}/tmp." + echo "[Kaiten-Yaki] Copying files in current dir to ${TARGETMOUNTPOINT}/tmp." mkdir "${TARGETMOUNTPOINT}/tmp/kaiten-yaki" cp -r ./* -t "${TARGETMOUNTPOINT}/tmp/kaiten-yaki" @@ -288,7 +383,7 @@ function post_install() { # The here-document is script executed under chroot. At here we call # the distribution dependent script "lib/chrooted_job_${DISTRIBUTIONSIGNATURE}.sh", # which was copied to /temp at previous code. - echo "...Chroot to ${TARGETMOUNTPOINT}. and execute chrooted_job_${DISTRIBUTIONSIGNATURE}.sh" + echo "[Kaiten-Yaki] Chroot to ${TARGETMOUNTPOINT}. and execute chrooted_job_${DISTRIBUTIONSIGNATURE}.sh" # shellcheck disable=SC2086 cat <<- HEREDOC | chroot "${TARGETMOUNTPOINT}" /bin/bash cd /tmp/kaiten-yaki @@ -297,14 +392,31 @@ function post_install() { HEREDOC # Unmount all. -l ( lazy ) option is added to supress the busy error. - echo "...Unmounting all." + echo "[Kaiten-Yaki] Unmounting all." umount -R -l "${TARGETMOUNTPOINT}" + echo "[Kaiten-Yaki] Post install process finished." + + # Free LUKS volume as swap volume. + echo "[Kaiten-Yaki] Disabling swap to release the LUKS volume." + swapoff -a + + # Close LUKS + echo "[Kaiten-Yaki] Deactivating all logical volumes in volume group \"${VGNAME}\"." + vgchange -a n "${VGNAME}" + echo "[Kaiten-Yaki] Closing LUKS volume \"${CRYPTPARTNAME}\"." + cryptsetup close "${CRYPTPARTNAME}" + + # Deleting the passphrase information. + echo "[Kaiten-Yaki] Deleting passphrase information." + PASSPHRASE="" + export PASSPHRASE + # Finishing message cat <<- HEREDOC - ****************** Post-install process finished ****************** + ****************** Install process finished ****************** - ...Ready to reboot. + [Kaiten-Yaki] Ready to reboot. HEREDOC return 0 @@ -317,13 +429,36 @@ function post_install() { # ******************************************************************************* function deactivate_and_close(){ - echo "...Deactivating all logical volumes in volume group \"${VGNAME}\"." + + + if [ "${IS_ROOT_CREATED}" -ne 0 ] ; then # if extra volume 1 created + # Remove newly created root volume + echo "[Kaiten-Yaki] Deleting the new logical volume \"${VGNAME}-${LVROOTNAME}\"." + lvremove -f /dev/mapper/"${VGNAME}"-"${LVROOTNAME}" + fi + + + if [ "${IS_LVEXT1_CREATED}" -ne 0 ] ; then # if extra volume 1 created + # Remove newly created extra volume 1 + echo "[Kaiten-Yaki] Deleting the new logical volume \"${VGNAME}-${LVROOTNAME}${LVEXT1SUFFIX}\"." + lvremove -f /dev/mapper/"${VGNAME}"-"${LVROOTNAME}${LVEXT1SUFFIX}" + fi + + if [ "${IS_LVEXT2_CREATED}" -ne 0 ] ; then # if extra volume 2 created + # Remove newly created extra volume 2 + echo "[Kaiten-Yaki] Deleting the new logical volume \"${VGNAME}-${LVROOTNAME}${LVEXT2SUFFIX}\"." + lvremove -f /dev/mapper/"${VGNAME}"-"${LVROOTNAME}${LVEXT2SUFFIX}" + fi + + + + echo "[Kaiten-Yaki] Deactivating all logical volumes in volume group \"${VGNAME}\"." vgchange -a n "${VGNAME}" - echo "...Closing LUKS volume \"${CRYPTPARTNAME}\"." + echo "[Kaiten-Yaki] Closing LUKS volume \"${CRYPTPARTNAME}\"." cryptsetup close "${CRYPTPARTNAME}" cat <<- HEREDOC - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC } @@ -334,14 +469,11 @@ function deactivate_and_close(){ function on_unexpected_installer_quit(){ echo "***** ERROR : The GUI/TUI installer terminated unexpectedly. *****" if [ "${OVERWRITEINSTALL}" -ne 0 ] ; then # If overwrite install, keep the volume - echo "...Keep logical volume \"${VGNAME}-${LVROOTNAME}\" untouched." - else # if not overwrite istall, delete the new volume - echo "...Deleting the new logical volume \"${VGNAME}-${LVROOTNAME}\"." - lvremove -f /dev/mapper/"${VGNAME}"-"${LVROOTNAME}" + echo "[Kaiten-Yaki] Keep logical volume \"${VGNAME}-${LVROOTNAME}\" untouched." fi # Deactivate all lg and close the LUKS volume deactivate_and_close - echo "...You can retry Kaiten-yaki again." + echo "[Kaiten-Yaki] You can retry Kaiten-yaki again." } @@ -361,7 +493,7 @@ function distribution_check(){ if [ "${YESNO}" != "Y" ] && [ "${YESNO}" != "y" ] ; then cat <<- HEREDOC - ...Installation process terminated.. + [Kaiten-Yaki] Installation process terminated.. HEREDOC return 1 # with error status fi # if YES @@ -372,6 +504,49 @@ function distribution_check(){ return 0 } +# ******************************************************************************* +# Create extended volume, if needed. +# ******************************************************************************* + + +function create_ext_lv() { + if [ "${USELVEXT1}" -ne 0 ] ; then # if using extra volume 1 + if [ -e /dev/mapper/"${VGNAME}-${LVROOTNAME}${LVEXT1SUFFIX}" ] ; then # if extra volume 1 exist + echo "[Kaiten-Yaki] Logical volume \"${VGNAME}-${LVROOTNAME}${LVEXT1SUFFIX}\" already exists. OK." + else + echo "[Kaiten-Yaki] Creating logical volume \"${LVROOTNAME}${LVEXT1SUFFIX}\" on \"${VGNAME}\"." + # Too use the bash IFS, first parameter is not quoted. + lvcreate ${LVEXT1SIZE} -n "${LVROOTNAME}${LVEXT1SUFFIX}" "${VGNAME}" + if [ $? -ne 0 ] ; then # if fail + echo "***** ERROR : failed to create "${VGNAME}-${LVROOTNAME}${LVEXT1SUFFIX}" . *****" + return 1 ; + else # if success + IS_LVEXT1_CREATED=1 # Mark this volume is created + fi; + fi + fi + + if [ "${USELVEXT2}" -ne 0 ] ; then # if using extra volume 2 + if [ -e /dev/mapper/"${VGNAME}-${LVROOTNAME}${LVEXT2SUFFIX}" ] ; then # if extra volume 2 exist + echo "[Kaiten-Yaki] Logical volume \"${VGNAME}-${LVROOTNAME}${LVEXT2SUFFIX}\" already exists. OK." + else + echo "[Kaiten-Yaki] Creating logical volume \"${LVROOTNAME}${LVEXT2SUFFIX}\" on \"${VGNAME}\"." + # Too use the bash IFS, first parameter is not quoted. + lvcreate ${LVEXT2SIZE} -n "${LVROOTNAME}${LVEXT2SUFFIX}" "${VGNAME}" + if [ $? -ne 0 ] ; then # if fail + echo "***** ERROR : failed to create "${VGNAME}-${LVROOTNAME}${LVEXT1SUFFIX}" . *****" + return 1 ; + else # if success + IS_LVEXT2_CREATED=1 # Mark this volume is created + fi; + fi + fi + + # no error + return 0 + + +} # ******************************************************************************* # Error report and return revsers status. diff --git a/script/ubuntu-kaiten-yaki.sh b/script/ubuntu-kaiten-yaki.sh index adfbbdd..0691f7b 100644 --- a/script/ubuntu-kaiten-yaki.sh +++ b/script/ubuntu-kaiten-yaki.sh @@ -81,13 +81,13 @@ function para_install_local() { # Distrobution dependent message cat <<- HEREDOC - ************************ CAUTION! CAUTION! CAUTION! **************************** - - Make sure to click "Continue Testing", at the end of the Ubiquity installer. - Just exit the installer without rebooting. Other wise, your system - is unable to boot. - - Type return key to start Ubiquity. + **************** CAUTION! CAUTION! CAUTION! ******************** + [Kaiten-Yaki] + [Kaiten-Yaki] Make sure to click "Continue Testing", at the end of + [Kaiten-Yaki] the Ubiquity installer. Just exit the installer without + [Kaiten-Yaki] rebooting. Otherwise, your system becomes unable to boot. + [Kaiten-Yaki] + [Kaiten-Yaki] Type return key to start Ubiquity. HEREDOC # waiting for a console input @@ -134,12 +134,12 @@ function grub_check_and_modify_local() { # Make target GRUB aware to the crypt partition # This must do it after start of the file copy by installer, but before the end of the file copy. - echo "...Adding GRUB_ENABLE_CRYPTODISK entry to ${TARGETMOUNTPOINT}/etc/default/grub " + echo "[Kaiten-Yaki] Adding GRUB_ENABLE_CRYPTODISK entry to ${TARGETMOUNTPOINT}/etc/default/grub " echo "GRUB_ENABLE_CRYPTODISK=y" >> ${TARGETMOUNTPOINT}/etc/default/grub # And then, wait for the end of installer process - echo "...Waiting for the end of GUI/TUI installer." - echo "...Again, DO NOT reboot/restart here. Just exit the GUI/TUI installer." + echo "[Kaiten-Yaki] Waiting for the end of GUI/TUI installer." + echo "[Kaiten-Yaki] Again, DO NOT reboot/restart here. Just exit the GUI/TUI installer." wait $INSTALLER_PID # succesfull return diff --git a/script/void-kaiten-yaki.sh b/script/void-kaiten-yaki.sh index c63f906..4276811 100644 --- a/script/void-kaiten-yaki.sh +++ b/script/void-kaiten-yaki.sh @@ -45,17 +45,17 @@ function main() { export GRUB_ADDITIONAL_PARAMETERS="rd.auto=1 cryptdevice=${DEV}${CRYPTPARTITION}:${CRYPTPARTNAME} root=/dev/mapper/${VGNAME}-${LVROOTNAME}" if grep "$GRUB_ADDITIONAL_PARAMETERS" /etc/default/grub ; then # Is additonal parameter already added? # Yes - echo ".../etc/default/grub already modified. OK, skipping to modiy." + echo "[Kaiten-Yaki] /etc/default/grub already modified. OK, skipping to modiy." else # Not yet. Let's add. - echo "...Modify /etc/default/grub." + echo "[Kaiten-Yaki] Modify /etc/default/grub." sed -i -e "/GRUB_CMDLINE_LINUX_DEFAULT/{s#\"# ${GRUB_ADDITIONAL_PARAMETERS}\"#2}" /etc/default/grub fi # Common part of the pre-install stage if ! pre_install ; then # If error, restore the modification. - echo "...restoring /etc/default/grub, if needed" + echo "[Kaiten-Yaki] restoring /etc/default/grub, if needed" sed -i -e "s#${GRUB_ADDITIONAL_PARAMETERS}##" /etc/default/grub return 1 # with error status fi @@ -96,13 +96,13 @@ function para_install_local() { # Distrobution dependent message cat <<- HEREDOC - ************************ CAUTION! CAUTION! CAUTION! **************************** - - Make sure to click "NO", if the void-installer ask you to reboot. - Just exit the installer without rebooting. Other wise, your system - is unable to boot. - - Type return key to start void-installer. + ******************** CAUTION! CAUTION! CAUTION! ************************ + [Kaiten-Yaki] + [Kaiten-Yaki] Make sure to click "NO", if the void-installer ask you to + [Kaiten-Yaki] reboot.Just exit the installer without rebooting. Otherwise, + [Kaiten-Yaki] your system becomes unable to boot. + [Kaiten-Yaki] + [Kaiten-Yaki] Type return key to start void-installer. HEREDOC # waiting for a console input @@ -123,7 +123,7 @@ function para_install_local() { # If exist, the grub was not modifyed -> void-installer termianted unexpectedly # Delete the nwe volume if overwrite install, and close all on_unexpected_installer_quit - echo "...restoring modified /etc/default/grub." + echo "[Kaiten-Yaki] restoring modified /etc/default/grub." sed -i "s#loglevel=4 ${GRUB_ADDITIONAL_PARAMETERS}#loglevel=4#" /etc/default/grub return 1 # with error status fi @@ -149,7 +149,7 @@ function grub_check_and_modify_local() { # Make target GRUB aware to the crypt partition # This must do it after start of the file copy by installer, but before the end of the file copy. - echo "...Adding GRUB_ENABLE_CRYPTODISK entry to ${TARGETMOUNTPOINT}/etc/default/grub " + echo "[Kaiten-Yaki] Adding GRUB_ENABLE_CRYPTODISK entry to ${TARGETMOUNTPOINT}/etc/default/grub " echo "GRUB_ENABLE_CRYPTODISK=y" >> ${TARGETMOUNTPOINT}/etc/default/grub # succesfull return