Add partition diagram

This commit is contained in:
Suikan 2021-06-27 16:27:54 +09:00
parent f1a8ec291e
commit 8e9aa9e4d0
2 changed files with 31 additions and 21 deletions

BIN
image/partition_diagram_0.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -13,10 +13,15 @@ By the configuration parameters, you can achieve these script to relatively wide
For example, you can configure the system to accept 2, 3 or 4 distribution in a HDD/SSD, as you want. For example, you can configure the system to accept 2, 3 or 4 distribution in a HDD/SSD, as you want.
Following is the HDD/SSD partitioning plan of these script. Following is the HDD/SSD partitioning plan of these script.
![Partition Diagram](image/partition_diagram_0.png)
While the EFI partition is depicted here, that is not needed if you install to the system with BIOS. While the EFI partition is depicted here, that is not needed if you install to the system with BIOS.
This can be controllable from a parameter. Also, the size of the Linux / volume is This can be controllable from a parameter. Also, the size of the Linux / volume is
configurable from a parameter. configurable from a parameter.
The volume group has only one physical volume.
# Test environment # Test environment
These scripts are tested with following environment. These scripts are tested with following environment.
- VMWare Workstation 15.5 ( EFI ) - VMWare Workstation 15.5 ( EFI )
@ -25,7 +30,8 @@ These scripts are tested with following environment.
# Preparation # Preparation
This script is designed to use by copy-and-past to the shell (bash) window. This script is designed to use by copy-and-past to the shell (bash) window.
So, it is strongly recommended to prepare the net work connection. So, it is strongly recommended to prepare the net work connection, and show this
page and the shell window side-by-side
If it is impossible, you may want to copy these scripts into a USB memory If it is impossible, you may want to copy these scripts into a USB memory
and jack into your machine, during the installation, to allow the copy-and-paste. and jack into your machine, during the installation, to allow the copy-and-paste.
@ -38,6 +44,7 @@ First of all, promote the shell to root. Almost of the procedure requires root p
# Promote to the root user # Promote to the root user
sudo -i sudo -i
``` ```
## Input Passphrase
Input the passphrase to lock your crypt system. This passphrase is required to type when GRUB starts. Input the passphrase to lock your crypt system. This passphrase is required to type when GRUB starts.
The passphrase is recorded as an environment variable to refuge the type multiple time without error. The passphrase is recorded as an environment variable to refuge the type multiple time without error.
```bash ```bash
@ -63,31 +70,34 @@ If you set the SWAPSIZE is "0", the swap volume is not created.
export PASSPHRASE export PASSPHRASE
# Device and partition setting. If you wan to MAKE /dev/sda2 as linux root partition, # Device and partition setting. If you wan to MAKE /dev/sda2 as linux root partition,
# set the DEV and ROOTPARTITION to /dev/sda and 2, respectively. # set the DEV and CRYPTPARTITION to /dev/sda and 2, respectively.
# EFI partition is usually fixed as partition 1. If you set 0, Script will skip to make it. # EFI partition is usually fixed as partition 1. If you set 0, Script will skip to make it.
export DEV="/dev/sda" export DEV="/dev/sda"
# If you set to "0", EFI partition will no be made. # If you set to "0", EFI partition will no be made.
export EFISIZE="100M" export EFISIZE="100M"
if [ $EFISIZE != "0" -a $EFISIZE != "0M" ] ; then # You may want to change the LVROOT for your installation
export EFIPARTITION=1 export CRYPTPARTNAME="luks_volume"
export ROOTPARTITION=2
else
export ROOTPARTITION=1
fi
# You man wat to change the LVROOT for your installation
export CRYPTPARTITION="luks_volume"
export VGNAME="vg1" export VGNAME="vg1"
export LVSWAP="swap" export LVSWAP="swap"
export LVROOT="ubuntu" export LVROOT="ubuntu"
# If you set SWAPSIZE "0", the script skips to create the swap volume. # If you set "0" to SWAPSIZE, the script skips to create the swap volume.
# ROOTSIZE is percentage to the free space in the volume group. # This is useful if you add a distribution to the system which has swap volume already.
# 50% mean, new partition will use 50% of the free space in the LVM volume group.
export SWAPSIZE="8G" export SWAPSIZE="8G"
# The ROOTSIZE is percentage to the free space in the volume group.
# 50% mean, new partition will use 50% of the free space in the LVM volume group.
export ROOTSIZE="50%FREE" export ROOTSIZE="50%FREE"
# Do not touch following lines.
if [ $EFISIZE != "0" -a $EFISIZE != "0M" ] ; then
export EFIPARTITION=1
export CRYPTPARTITION=2
else
export CRYPTPARTITION=1
fi
``` ```
## Format the disk ## Format the disk
C A U T I O N : Following scripts destroy all the data in your disk. Make sure you want to destroy all. C A U T I O N : Following scripts destroy all the data in your disk. Make sure you want to destroy all.
@ -102,7 +112,7 @@ if [ $EFISIZE != "0" -a $EFISIZE != "0M" ] ; then
sgdisk --new=${EFIPARTITION}:0:+${EFISIZE} --change-name=${EFIPARTITION}:"EFI System" --typecode=${EFIPARTITION}:ef00 "${DEV}" sgdisk --new=${EFIPARTITION}:0:+${EFISIZE} --change-name=${EFIPARTITION}:"EFI System" --typecode=${EFIPARTITION}:ef00 "${DEV}"
mkfs.vfat -F 32 -n EFI-SP "${DEV}${EFIPARTITION}" mkfs.vfat -F 32 -n EFI-SP "${DEV}${EFIPARTITION}"
fi fi
sgdisk --new=${ROOTPARTITION}:0:0 --change-name=${ROOTPARTITION}:"Linux LUKS" --typecode=${ROOTPARTITION}:8309 "${DEV}" sgdisk --new=${CRYPTPARTITION}:0:0 --change-name=${CRYPTPARTITION}:"Linux LUKS" --typecode=${CRYPTPARTITION}:8309 "${DEV}"
sgdisk --print "${DEV}" sgdisk --print "${DEV}"
``` ```
@ -112,10 +122,10 @@ The LUKS partition is encrypted here by the pre-input passphrase. This LUKS part
If everything is done successfully, you will see the LUKS volume under /dev/mapper If everything is done successfully, you will see the LUKS volume under /dev/mapper
```bash ```bash
# Encrypt the partition to install the linux # Encrypt the partition to install the linux
printf %s "${PASSPHRASE}" | cryptsetup luksFormat --type=luks1 --key-file - --batch-mode "${DEV}${ROOTPARTITION}" printf %s "${PASSPHRASE}" | cryptsetup luksFormat --type=luks1 --key-file - --batch-mode "${DEV}${CRYPTPARTITION}"
# Open the created crypt partition. To be sure, input the passphrase manually # Open the created crypt partition. To be sure, input the passphrase manually
cryptsetup open "${DEV}${ROOTPARTITION}" ${CRYPTPARTITION} cryptsetup open "${DEV}${CRYPTPARTITION}" ${CRYPTPARTNAME}
# Check whether successful open. If mapped, it is successful. # Check whether successful open. If mapped, it is successful.
ls -l /dev/mapper ls -l /dev/mapper
@ -124,8 +134,8 @@ ls -l /dev/mapper
The swap volume and / volume is created here, based on the given parameters. The swap volume and / volume is created here, based on the given parameters.
```bash ```bash
# Create the Physical Volume and Volume Group. # Create the Physical Volume and Volume Group.
pvcreate /dev/mapper/${CRYPTPARTITION} pvcreate /dev/mapper/${CRYPTPARTNAME}
vgcreate ${VGNAME} /dev/mapper/${CRYPTPARTITION} vgcreate ${VGNAME} /dev/mapper/${CRYPTPARTNAME}
# Optional : Create a SWAP Logical Volume on VG, if volume size is not 0. # Optional : Create a SWAP Logical Volume on VG, if volume size is not 0.
if [ $SIZE != "0" -a $SIZE != "0G" ] ; then lvcreate -L SWAPSIZE -n ${LVSWAP} ${VGNAME} ; fi if [ $SIZE != "0" -a $SIZE != "0G" ] ; then lvcreate -L SWAPSIZE -n ${LVSWAP} ${VGNAME} ; fi
@ -181,10 +191,10 @@ chmod u=rx,go-rwx /etc/luks
chmod u=r,go-rwx /etc/luks/boot_os.keyfile chmod u=r,go-rwx /etc/luks/boot_os.keyfile
# Add a key to the key file. Use the passphrase in the environment variable. # Add a key to the key file. Use the passphrase in the environment variable.
printf %s "${PASSPHRASE}" | cryptsetup luksAddKey -d - "${DEV}${ROOTPARTITION}" /etc/luks/boot_os.keyfile printf %s "${PASSPHRASE}" | cryptsetup luksAddKey -d - "${DEV}${CRYPTPARTITION}" /etc/luks/boot_os.keyfile
# Add the LUKS volume information to /etc/crypttab to decrypt by kernel. # Add the LUKS volume information to /etc/crypttab to decrypt by kernel.
echo "${CRYPTPARTITION} UUID=$(blkid -s UUID -o value ${DEV}${ROOTPARTITION}) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab echo "${CRYPTPARTNAME} UUID=$(blkid -s UUID -o value ${DEV}${CRYPTPARTITION}) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
# Finally, update the ramfs initial image with the key file. # Finally, update the ramfs initial image with the key file.
update-initramfs -uk all update-initramfs -uk all