Skip to content

Yet another debootstrap manual

Казалось бы мануалов по 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, перезагружаемся. После ребута нас должна встретить свежеустановленная система 🙂

Пост на хабре, который был источником вдохновения

Be First to Comment

Добавить комментарий

%d такие блоггеры, как: