Казалось бы мануалов по debootstrap чуть более, чем достаточно, зачем нужен ещё один?
Для себя я скажу, что некоторые вещи показались мне неоднозначными, кое-какие «умолчания» пришлось додумывать самому. Поэтому и родилась идея сделать шпаргалку «на будущее», авось ещё кому пригодится.
Диспозиция: dedicated-сервер с одним диском, загруженный с rescue CD. Задача: сделать lvm, разметить диск нужным нам образом и поставить чистую операционку (Debian Jessie).
Шаг 1. Собираем lvm
Размечаем диск. Не забываем установить правильный partition type и загрузочный флаг.
1 2 3 4 5 6 7 8 9 10 11 | Command (m for help): p Disk /dev/sda: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x472be2a1 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 526335 524288 256M 83 Linux /dev/sda2 526336 3907029167 3906502832 1,8T 8e Linux LVM |
Создаём lvm
1 2 3 4 5 6 7 | pvcreate /dev/sda2 vgcreate vgstorage /dev/sda2 lvcreate -L20G -n lvroot vgstorage lvcreate -L20G -n lvvar vgstorage lvcreate -L1G -n lvswap vgstorage lvcreate -l100%FREE -n lvhome vgstorage vgchange -a y vgstorage |
Создаем файловые системы.
1 2 3 4 | mkfs.ext2 /dev/sda1 mkfs.ext4 /dev/vgstorage/lvroot mkfs.ext4 /dev/vgstorage/lvvar mkfs.ext4 /dev/vgstorage/lvhome |
Шаг 2. Ставим систему
Пишем скрипт, который поставит нам систему. Я воспользовался скриптами уважаемго @derlaft, за что ему большое спасибо, и немного изменил их под себя.
Скрипт можно положить, например, в /root
install.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/bash ARCH=amd64 #Ставим актуальный стабильный релиз #На момент написания статьи это был Jessie 8.7 OS=debian DISTRO=stable ## место для установки системы TARGET=/mnt/debian export $TARGET ##Ставить будем с зеркала в интернете debootstrap --include=sudo,nano,wget --arch $ARCH $DISTRO $TARGET http://deb.debian.org/$OS/ ## строчки ниже трогать не нужно, они монтируют системные директории в новый / mount -o bind /dev $TARGET/dev mount -o bind /sys $TARGET/sys |
Создаем окружение для установки системы
1 2 3 4 5 6 7 8 | mkdir /mnt/debian mkdir /mnt/debian/boot mkdir /mnt/debian/home mkdir /mnt/debian/var mount /dev/vgstorage/lvroot /mnt/debian mount /dev/sda1 /mnt/debian/boot mount /dev/vgstorage/lvvar /mnt/debian/var mount /dev/vgstorage/lvhome /mnt/debian/home |
Теперь просто запускаем скрипт:
1 | bash ./install.sh |
Система скачана и установлена. Теперь делаем ещё один скрипт, который поставит нам ядро, загрузчик и некоторые доп. пакеты.
Его можно сразу поместить в $TARGET, чтобы было удобнее запускать из chroot
postinst.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #!/bin/bash ## обновление индекса репозитария apt-get update ## настройка часовых поясов dpkg-reconfigure tzdata ## монтирование файловых систем mount -t proc /proc /proc mount -a ## установка hostname, обязательный шаг HOST='mysuperhost' echo "$HOST" > /etc/hostname echo -e "\n127.0.0.1 localhost $HOST" >> /etc/hosts ## добавление пользователя, добавление его в sudo USER='myfirstuser' echo 'Добавление пользователя' adduser $USER usermod -a -G sudo $USER ## установка пароля root echo 'Установка пароля root' passwd ## установка ядра и загрузчика ARCH=amd64 #варианты: i386, i486, i686, amd64 ## Необходиме для сервера Debian пакеты. У вас список может быть свой: apt-get -y install linux-base linux-image-$ARCH grub-pc lvm2 sudo openssh-server aptitude ## Завершающий этап - установка загрузчика: grub-install /dev/sda update-grub |
Запускается скрипт командой:
1 | env LANG=C env HOME=/root chroot $TARGET /bin/bash /postinst.sh |
Осталось немного:
Добавляем информацию в /etc/fstab
1 2 3 4 5 6 7 8 9 | /dev/sda1 /boot ext2 defaults 0 0 /dev/mapper/vgstorage-lvroot / ext4 errors=remount-ro,relatime 0 1 /dev/mapper/vgstorage-lvhome /home ext4 defaults ,relatime 0 2 /dev/mapper/vgstorage-lvvar /var ext4 defaults 0 0 /dev/mapper/vgstorage-lvswap none swap sw 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts defaults 0 0 |
Настраиваем сеть (в простейшем случае это будет dhcp, однако, бывает всякое)
/etc/network/interfaces
1 2 3 4 5 | auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp |
Наконец, настраиваем /etc/apt/sources.list
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | deb http://deb.debian.org/debian stable main deb http://deb.debian.org/debian/ jessie main contrib non-free deb-src http://deb.debian.org/debian/ jessie main contrib non-free deb http://security.debian.org/ jessie/updates main deb-src http://security.debian.org/ jessie/updates main # jessie-updates, previously known as 'volatile' deb http://deb.debian.org/debian/ jessie-updates main contrib non-free deb-src http://deb.debian.org/debian/ jessie-updates main contrib non-free # jessie-backports deb http://deb.debian.org/debian/ jessie-backports main contrib non-free deb-src http://deb.debian.org/debian/ jessie-backports main contrib non-free |
Выходим из chroot, перезагружаемся. После ребута нас должна встретить свежеустановленная система :)
Пост на хабре, который был источником вдохновения