Базовая установка Gentoo Linux

Базовая установка Gentoo Linux

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Базовая установка операционной системы Gentoo Linux

Для начала потребуется скачать livecd

Gentoo Linux LiveCD

Установка и загрузка системы

Скачиваем образ диска Gentoo и загружаемся с него.
После загрузки жмакаем Enter

Gentoo_linux

Начнется загрузка LiveCD

Gentoo_linux

Подготовка дисков

Существует 2-е технологии построения дисков. MBR и GPT.
Первая из которых имеет 32-битные идентификаторы для начального сектора и длины разделов. И поддерживают три типа разделов: первичные (primary), расширенные (extended) и логические (logical). Первичные разделы хранят информацию о себе в самом MBR - очень маленьком кусочке пространства (обычно 512 байт) в самом начале диска. Из-за такого маленького объема, поддерживаются только четыре первичных раздела (например, от /dev/sda1 до /dev/sda4).

К сожалению каждый размер имеет ограничение в 2Tb, из-за 32-битных идентификаторов. Поэтому я буду использовать GPT.

Опишу более подробный пример здесь, еще ниже пример для “скоростной установки”.

Включаем флаг загрузки на раздел MBR

1
fdisk /dev/sda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): a
Partition number (1,2, default 2): 1

The bootable flag on partition 1 is disabled now.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Разработка схемы разбиения диска

Раздел Файловая система Размер Описание
/dev/sda1 (начальный загрузчик) 4МБ загрузочный раздел BIOS
/dev/sda2 ext2 512МБ загрузочный раздел
/dev/sda3 (swap) 32000МБ раздел подкачки
/dev/sda4 ext4 оставшаяся часть диска корневой раздел

Установка метки GPT

1
2
3
4
5
6
7
8
#parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes

Если мы хотим, чтобы наш диск имел MBR, используйте mklabel msdos.

Создаем разделы

Для начала сообщим parted, с какой единицой измерения мы будем работать.

1
unit mib

Теперь создадим загрузочный раздел в 4Mb для GRUB
Для того, чтобы создать раздел в 4 Mb, сообщим parted, создать раздел от 1Мб до 5Мб

1
2
3
4
5
6
7
8
9
10
11
(parted) mkpart primary 1 5                                               
(parted) name 1 grub
(parted) set 1 bios_grub on
(parted) print
Model: ATA ST2000DM001-1CH1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 5243kB 4194kB grub bios_grub

Повторим данные шаги для остальных разделов.

Создаем остальные разделы

1
2
3
4
5
6
(parted) mkpart primary 5 517                                             
(parted) name 2 boot
(parted) mkpart primary 517 32517
(parted) name 3 swap
(parted) mkpart primary 32517 -1
(parted) name 4 rootfs

Конец диска минус один мегабайт (обозначается “-1”)

Просмотр текущей картины разделов

1
2
3
4
5
6
7
8
9
10
Model: ATA ST2000DM001-1CH1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 5243kB 4194kB grub bios_grub
2 5243kB 517MB 512MB boot
3 517MB 32.5GB 32.0GB swap
4 32.5GB 2000GB 1968GB rootfs

Выходим из parted командой quit

Более быстрый пример разбиения

Проверим текущее разбиение дисков
1
parted /dev/sda

А затем введем новую команду Parted.
Используем команду rm [номер] для удаления раздела, который нам не нужен.

Мы собираемся начать с чистого жесткого диска.
Нам понадобится загрузочный раздел, раздел подкачки swap и немного дискового пространства. Используем следующие три команды:

1
2
3
mkpart primary ext2 0 32mb
mkpart primary linux-swap 32mb [32 + RAM]mb
mkpart primary ext4 [32 + RAM]mb -1s

Gentoo_Linux

Соглашаемся или просто игнорируем любые дополнительные запросы.

Создаем файловые системы

Выходим из Parted с помощью команды quit.
Теперь нам надо с помощью следующих команд создать в разделах файловые системы:

1
2
# mkfs.ext2 /dev/sda1
# mkfs.ext4 /dev/sda3

Вывод будет приблизительно следующий, в зависимости от созданных разделов.
Gentoo_linux

Создаем файл подкачки swap

1
mkswap /dev/sda2

Монтирование разделов

Прежде, чем мы продолжим, мы должны смонтировать разделы.
Сделаем это, смонтировав сначала память как /mnt/gentoo:

1
# mount /dev/sda3 /mnt/gentoo

Создаем внутри каталог загрузки boot:

1
# mkdir /mnt/gentoo/boot

Смонтируем каталог boot:

1
# mount /dev/sda1 /mnt/gentoo/boot

Устанавливаем время

Убедимся, что часы правильно настроены на универсальное время UTC, для этого просто введем команду date.
Если это не так, то задаем время UTC с помощью следующей команды:

1
# date MMDDhhmmYYYY

.. где ММ - месяц, DD - день/дата и т.д.

Gentoo_Linux

Подбор зеркала

Переходим в точку монтирования, которую только что создали, с помощью команды cd, а затем вводим следующую команду для того, чтобы получить список зеркал, используемых для работы с архивом stage3:

1
# links http://www.gentoo.org/main/en/mirrors.xml

Не забываем, что необходимо прописать настройки сети, ибо нам потребуется доступ в интернет.

1
# links http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/autobuilds/current-stage3-amd64/

Gentoo_linux

Выбираем необходимый stage3 и скачиваем его.

Gentoo_linux
Gentoo_Linux

Распаковываем архив

Распаковываем архив, который скачали, с помощью следующей команды:

1
# tar xvjpf stage3-*.tar.bz2

Как только архив будет распакован, откроем конфигурационный файл с помощью редактора nano:

1
# nano -w /mnt/gentoo/etc/portage/make.conf

И затем мы сможем начать настраивать некоторые из параметров.

Задаем параметры, используемые по умолчанию

Параметры, уже указанные по умолчанию в конфигурационном файле, должны подходить для большинства систем. Мы также можем указать, сколько сразу можно параллельно выполнять процессов компиляции, добавив для этого в конце файла следующую команду:

1
MAKEOPTS="-j[X]"

… где X указывает количество ядер, которые у вас есть плюс один.
Сохраняем результат и выходим с помощью команды Ctrl+X.

Приблизительно конфиг будет такой:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="bindist mmx sse sse2"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"
MAKEOPTS="-j9"

Подготавливаем среду для сборки

Все почти готово для того, чтобы начать сборку.
Запомните в среде детали настройки сети/DNS с помощью следующей команды:

1
# cp -L /etc/resolv.conf /mnt/gentoo/etc/

Далее, смонтируем файловые системы /proc, а затем привяжем их к /dev и /sys с помощью следующих команд:

1
2
3
# mount -t proc none /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev

Переходим в среду сборки

Среда сборки является технически новой средой Linux. Сначала нам нужно сделать некоторые изменения с тем, чтобы мы могли в нее войти - в основном это касается каталога для пользователя root, что мы делаем с помощью команды chroot:

1
2
3
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"

Настройка дерева Portages

Произведем синхронизацию Portages для получения более свежих версий

1
2
emerge-webrsync
emerge --sync

Профиль установки

Теперь с помощью задания определенного профиля сборки нам нужно выбрать, какую систему Gentoo мы будем собирать. Есть три профиля, два из которых — Desktop (настольный компьютер) и Server (сервер). Это позволит определить тип пакетов, которые мы используем. Задайте профиль с помощью следующей команды:

1
# eselect profile set 3

Значение 2 соответствует настольному компьютеру; для сервера измените значение на 3

Настройка время в ядре

Список доступных часовых поясов можно узнать с помощью команды:

1
ls /usr/share/zoneinfo

Для Москвы, мы сделаем следующее:

1
2
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
# echo "Europe/Moscow" > /etc/timezone

Теперь пришло время загрузить наше ядро. Во-первых, получим gentoo-sources с помощью команды:

1
# emerge gentoo-sources

С помощью следующей команды проверьте, чтобы на версию ядра gentoo-sources была ссылка:

1
# ls -l /usr/src/linux

Теперь можем начать изменять флаги ядра, введя следующую команду:

1
2
# cd /usr/src/linux
# make menuconfig

Активируем необходимые параметры ядра модули

Gentoo_Linux

Убеждаемся в том, что изменили только те параметры ядра, которые нам необходимы.
Активируем любые другие необходимые модули. После этого выходим из режима настройки.

Компиляция ядра

Итак, наступило время компилировать ядро.

1
# make && make modules_install

На это потребуется некоторое время, зависящее от количества модулей и параметров, которые мы активировали.
После того, как все будет завершено, установим ядро с помощью следующей команды:

1
cp arch/x86/boot/bzImage /boot/kernel-[X]-gentoo

… где X будет числом, которое будет нам указано на последнем шаге, в нашем случае 3.16.5-gentoo

Загружаем модули

Нам необходимо указать, какие модули ядра мы хотим загрузить. Чтобы узнать, какие модули доступны, используем команду:

1
# find /lib/modules/[X]/ -type f -iname '*.o' -or -iname '*.ko' | less

Монтирование файловой системы

Мы должны указать, как разделы, которые мы создали, будут монтироваться при загрузке. Откройте файл fstab с помощью команды:

1
# nano -w /etc/fstab

А потом установим следующие параметры так, чтобы файловая система у нас работала должным образом:

1
2
3
/dev/sda1   /boot  ext2   defaults,noatime   0 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext4 noatime 0 1

Примерно fstab будет выглядеть таким образом

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
# /etc/fstab: static file system information.
#
# noatime turns off atimes for increased performance (atimes normally aren't
# needed); notail increases performance of ReiserFS (at the expense of storage
# efficiency). It's safe to drop the noatime options if you want and to
# switch between notail / tail freely.
#
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
#
# See the manpage fstab(5) for more information.
#

# <fs> <mountpoint> <type> <opts> <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#/dev/BOOT /boot ext2 noauto,noatime 1 2
#/dev/ROOT / ext3 noatime 0 1
#/dev/SWAP none swap sw 0 0
#/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto 0 0


/dev/sda1 /boot ext2 defaults,noatime 0 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext4 noatime 0 1

Настройка сети

После перезагрузки системы нужно настроить сеть.
Сначала перейдем в конфигурационный файл:

1
# nano -w /etc/conf.d/net

И добавим, например, следующее для DHCP:

1
config_eth0="dhcp"

Если используем статический IP-адрес, то пишем:

1
2
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"

Сохраним файл, а затем сделаем его загружаемым с помощью команд:

1
2
3
# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default

Настройка пользователя root

Устанавливаем пароль пользователя root с помощью стандартной команды passwd. Затем натсроем некоторые основные сервисы, отредактировав для этого следующий файл:

1
# nano -w /etc/rc.conf
И настройку аппаратных часов:
1
# nano -w /etc/conf.d/hwclock

Если это не время UTC, то добавляем в файл параметр clock="local"

Настраиваем локаль

Укажем в системе свои региональные настройки (локаль).
Нам нужно будет отредактировать следующий файл:

1
nano -w /etc/locale.gen

.. и добавим

1
2
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8

Сохраняем, выходим, а затем набираем locale-gen.
Устанавливаем эту локаль в /etc/env.d/02locale как используемую по умолчанию:

1
2
LANG="ru_RU.UTF-8"
LC_COLLATE="C"

А затем перезагрузим среду с помощью следующей команды:

1
# env-update && source /etc/profile

Начальная загрузка

Необходимо установить начальный загрузчик GRUB с тем, чтобы мы могли после перезагрузки загрузиться в систему Gentoo. Откомпилируем его с помощью команды:

1
emerge grub

Теперь создадим файл grub.conf и приготовимся добавить необходимые настройки.

Код для GRUB

1
2
3
4
5
6
7
8
9
10
11
default 0
timeout 15
title Gentoo Linux
root (hd0,0)
kernel /boot/kernel-3.[version]-gentoo
root=/dev/sda3

title Gentoo Linux (rescue)
root (hd0,0)
kernel /boot/kernel-[version]-gentoo
root=/dev/sda3 init=/bin/bb

Убедимся, что используем правильный номер ядра. (вместо [version])
Сохраняем изменения и выходим.

Прежде всего, установим необходимые файлы GRUB2 в /boot/grub.
Если предположить, что первый диск (тот, откуда система загружается)
называется /dev/sda, то следующая команда сделает это за нас:

1
grub2-install /dev/sda

Для генерации финальной конфигурации GRUB2, выполните команду grub2-mkconfig

1
# grub2-mkconfig -o /boot/grub/grub.cfg

В выводе команды должно быть указано, что найдено хотя бы одно ядро
Linux так как оно нужно для загрузки системы. Если вы используете
initramfs, либо использовали genkernel для компиляции ядра, также
должен определиться правильный образ initrd. Если этого не
произошло, перейдите в /boot и проверьте его содержимое
с помощью команды ls.
Если файлы и в самом деле отсутствуют, вернитесь к инструкциям
по конфигурации и установке ядра!!!