#!/bin/sh # Vars ## Define the hard drive to use if [ -b '/dev/sda' ]; then hdd="/dev/sda" else printf '%b\n' "Please check the hard drive to use" exit 0 fi ## Volume Group name to use for LVM vgname="ovhsys" ## If the script should manage the partitions (delete, add,…) manage_part=0 # Partitionning {{{ if [ "${manage_part}" -eq 0 ]; then ## Remove all old partitions for part_number in 1 2 3 4 5 6 7 8; do [ -b "${hdd}""${part_number}" ] && parted "${hdd}" rm "${part_number}" done ## Recreate partition (/boot and LV) {{{ ### Partition type parted "${hdd}" mklabel msdos ### /boot parted "${hdd}" mkpart primary 0% 512MB parted "${hdd}" set 1 boot on ### LV parted "${hdd}" mkpart primary 4194kB 100% parted "${hdd}" set 2 lvm on sudo pvcreate "${hdd}"2 sudo vgcreate "${vgname}" "${hdd}"2 fi mkfs.ext3 -F -- "${hdd}"1 ## }}} ## Create Logical Volumes {{{ [ ! -b /dev/mapper/"${vgname}"-home ] && lvcreate -n home -L 20g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-opt ] && lvcreate -n opt -L 2g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-root ] && lvcreate -n root -L 5g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-srv ] && lvcreate -n srv -L 2g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-tmp ] && lvcreate -n tmp -L 10g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-usr ] && lvcreate -n usr -L 15g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-var ] && lvcreate -n var -L 10g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-vz ] && lvcreate -n vz -L 150g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-bkp ] && lvcreate -n bkp -L 150g "${vgname}" [ ! -b /dev/mapper/"${vgname}"-swap ] && lvcreate -n swap -L 2g "${vgname}" ### Format the LV in ext4 for lvname in /dev/mapper/"${vgname}"-*; do mkfs.ext4 -F -- "${lvname}" done ### And format the swap mkswap /dev/mapper/"${vgname}"-swap ## }}} # }}} # Debootstrap {{{ ## Create and mount the system {{{ ### Root mkdir -p -- /target mountpoint -q /target || mount -- /dev/mapper/"${vgname}"-root /target ### boot - grub mkdir -p -- /target/boot mountpoint -q /target/boot || mount -- ${hdd}1 /target/boot ### home LV mkdir -p -- /target/home mountpoint -q /target/home || mount -- /dev/mapper/"${vgname}"-home /target/home ### opt LV mkdir -p -- /target/opt mountpoint -q /target/opt || mount -- /dev/mapper/"${vgname}"-opt /target/opt ### srv LV mkdir -p -- /target/srv mountpoint -q /target/srv || mount -- /dev/mapper/"${vgname}"-srv /target/srv #### bkp LV mkdir -p -- /target/srv/backup mountpoint -q /target/srv/backup || mount -- /dev/mapper/"${vgname}"-bkp /target/srv/backup ### tmp LV mkdir -p -- /target/tmp mountpoint -q /target/tmp || mount -- /dev/mapper/"${vgname}"-tmp /target/tmp ### usr LV mkdir -p -- /target/usr mountpoint -q /target/usr || mount -- /dev/mapper/"${vgname}"-usr /target/usr ### var LV mkdir -p -- /target/var mountpoint -q /target/var || mount -- /dev/mapper/"${vgname}"-var /target/var #### vz LV mkdir -p -- /target/var/lib/vz mountpoint -q /target/var/lib/vz || mount -- /dev/mapper/"${vgname}"-vz /target/var/lib/vz ### Swap swapon -- /dev/mapper/"${vgname}"-swap ### System mkdir -p -- /target/dev/pts mountpoint -q /target/dev/pts || mount -o bind -- /dev/pts /target/dev/pts mkdir -p -- /target/proc mountpoint -q /target/proc || mount -t proc -- proc /target/proc mkdir -p -- /target/sys mountpoint -q /target/sys || mount -o bind -- /sys /target/sys ## }}} # }}}