В предыдущей части статьи рассмотрен процесс установки Gentoo Linux до момента смены корня файловой системы. Продолжим.

chroot в устанавливаемую систему

Chroot (англ. Change Root — «изменение корневого каталога») — это системная утилита Unix, используемая для смены текущего корневого каталога с целью создания нового окружения, логически отдельного от основной системы. Это новое окружение также известно как “chroot jail” («тюрьма»). Пользователь, работающий внутри jail, не может видеть файлы вне среды, которой они ограничены, или обращаться к ним. - Wiki Gentoo.

Меняем корень.

livecd nd # chroot /mnt/nd
livecd / #

Установим приглашение командной строки, чтоб не забыть о смене корня.

livecd / # export PS1="(ChRoot) $PS1"
(ChRoot) livecd / #

Установим используемый DNS сервер.

(ChRoot) livecd / # echo "nameserver 192.168.1.1" > /etc/resolv.conf

Обновление системы Portage до актуальной версии

Portage места занимает прилично (около 700Mb). И если канал в интернет не очень толстый, рекомендуется скачать с ближайшего зеркала Gentoo свежий snapshot (сжатый образ дерева portage) и распаковать его в каталог /usr.

(ChRoot) livecd / # cd /home
(ChRoot) livecd home # wget -c https://mirror.yandex.ru/gentoo-distfiles/snapshots/portage-20150202.tar.bz2
(ChRoot) livecd home # cd /usr
(ChRoot) livecd usr # tar -xjvpf /home/portage-20150202.tar.bz2

А затем обновить дерево portage до актуального состояния.

(ChRoot) livecd usr # emerge --sync

Основные параметры сборки в Gentoo задаются профилями. Располагаются профили в каталоге /usr/portage/profiles. Посмотреть доступные и используемые профили можно командой eselect profile list.  Активный профиль будет помечен звездочкой. Проверим используемый профиль.

(ChRoot) livecd usr # eselect profile list
Available profile symlink targets:
  [1]   default/linux/x86/13.0 *
  [2]   default/linux/x86/13.0/selinux
  [3]   default/linux/x86/13.0/desktop
  [4]   default/linux/x86/13.0/desktop/gnome
  [5]   default/linux/x86/13.0/desktop/gnome/systemd
  [6]   default/linux/x86/13.0/desktop/kde
  [7]   default/linux/x86/13.0/desktop/kde/systemd
  [8]   default/linux/x86/13.0/developer
  [9]   hardened/linux/x86
  [10]  hardened/linux/x86/selinux
  [11]  hardened/linux/musl/x86
  [12]  default/linux/uclibc/x86
  [13]  hardened/linux/uclibc/x86

Если требуется другой профиль - установить командой: eselect profile set num. Где num - номер требуемого профиля.

(ChRoot) livecd usr # eselect profile set 1

Все основные настройки по сборке системы содержатся в файле /etc/portage/make.conf. Здесь также можно, при необходимости, переопределять переменые, определенные в файлах /usr/share/portage/config/make.globals и /etc/make.profile/make.defaults. Посмотрим что нужно поправить в make.conf

/etc/portage/make.conf
# 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 -march=i686 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult https://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="i686-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"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"

Значение переменных:

CFLAGS и CXXFLAGS Параметры оптимизации компилятора gcc для языков C (CFLAGS) и C++ (CXXFLAGS). Без нужды их лучше не менять во избежание проблем. Подробнее про флаги написано - здесь.
CHOST Указывает компилятору gcc для какой архитектуры процессора собирать код
USE Указывает глобальные опции сборки ПО. Полный список здесь.
PORTDIR Каталог в котором расположено дерево Portage
DISTDIR Каталог для хранения сжатых исходных кодов
PKGDIR Каталог для хранения сжатых установочных бинарных пакетов

В основном, менять здесь нужно только переменную USE. По умолчанию установлен только флаг bindist, который разрешает устанавливать уже собранные пакеты (в основном, это пакеты распространяемы по лицензиям отличным от GPL). Так как нужна незамутненная консоль - отключим поддержку X сервера и запретим собирать библиотеки для kde и gnome. Также отключим поддержку xinetd и добавим поддержку unicode.

Также добавим переменную MAKEOPTS="-j2". Предназначена она для контроля запускаемых процессов компиляции при сборке пакета. Рекомендуется устанавливать ее значение исходя из количества ядер процессора плюс 1. Если собирать планируется на работающем сервере, хотя бы одно ядро неплохо бы оставить под обслуживание серверных процессов.

Тепер файл make.conf выглядит так:

/etc/portage/make.conf
# 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 -march=i686 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult https://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="i686-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="-X -gtk -gtk2 -qt -qt4 -gnome -kde -xinetd unicode bindist"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"
MAKEOPTS="-j2"

Настроим локаль. Что это? Локаль (Locale) - набор информации, которая используется большинством программ для определения специфических для страны настроек (язык, отображение даты и времени и т.д.).  Локаль и ее данные являются частью системной библиотеки glibc и в большинстве систем находятся в каталоге /usr/share/locale. Имя локали состоит из двух частей разделенных знаком подчеркивания: первая часть - двух или трехсимвольное обозначение языка (см. ISO-639), вторая - двухсимвольный код страны (см. ISO-3166). Выглядит это так - ru_RU. Частенько для одной локали существует несколько вариантов. В этом случае, к имени локали, через точку, добавляется вариант. Например: ru_RU.UTF-8.

Настраиваются локали в файле /etc/locale.gen. По сути это список поддерживаемых локалей. У казываются локали в виде:

имя_локали кодировка

Каждая локаль в отдельной строке. Зададим поддерживаемые локали.

(ChRoot) livecd usr # echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen 
(ChRoot) livecd usr # echo "ru_RU.UTF-8 UTF-8" >> /etc/locale.gen

После того как локали указаны, их нужно сгенерировать командой locale-gen.

(ChRoot) livecd usr # locale-gen 
 * Generating 2 locales (this might take a while) with 1 jobs
 *  (1/2) Generating en_US.UTF-8 ... [ ok ]
 *  (2/2) Generating ru_RU.UTF-8 ... [ ok ]
 * Generation complete

Посмотрим все ли сгенерировалось командой eselect locale list.

(ChRoot) livecd usr # eselect locale list
Available targets for the LANG variable:
  [1]   C
  [2]   en_US.utf8
  [3]   POSIX
  [4]   ru_RU.utf8
  [ ]   (free form)

Активная локаль устанавливается командой eselect locale set с указанием номера желаемой локали.

(ChRoot) livecd usr # eselect locale set 4
Setting LANG to ru_RU.utf8 ...
Run ". /etc/profile" to update the variable in your shell.

Установим консольный шрифт unicode с поддержкой кирилицы.

(ChRoot) livecd usr # nano -w /etc/conf.d/consolefont
/etc/conf.d/consolefont
consolefont="UniCyr_8x16"

Добавим подгрузку шрифта при загрузке. Делается это с помощью программы rc-update из пакета openrc. Эта программа как добавляет службу в список загрузки, так и удаляет из него. Если выполнить rc-update без аргументов - будет выведен список сервисов, установленных в системе, и их уровни запуска. Уровни запуска - это своего рода этапы загрузки сервисов. Всего их четыре:

  • sysinit - выполняется на этапе загрузки системы, сразу же после загрузки и инициализации ядра. В этот уровень запуска добавлять ничего не нужно без необходимости и осознания последствий;
  • boot - выполняется после sysinit. Сюда уже можно добавлять некоторые сервисы, запуск которых должен быть осуществлен до момента запуска служб из уровня default. К примеру файервол (iptables) можно запускать на этом уровне;
  • default - последний уровень запуска на этапе загрузки системы. Все службы вроде вебсерверов, почтовых серверов, баз данных и прочее рекомендуется запускать именно здесь.
  • shutdown - уровень запуска, выполняемый при остановке системы.
(ChRoot) livecd usr # rc-update add consolefont default

Обновим переменные окружения.

(ChRoot) livecd usr # env-update 
>>> Regenerating /etc/ld.so.cache...

Загрузим их.

(ChRoot) livecd usr # source /etc/profile
livecd usr #

Обновим приглашение командной строки.

livecd usr # export PS1="(ChRoot) $PS1"
(ChRoot) livecd usr #

Установим используемый шрифт с поддержкой кирилицы для unicode.

(ChRoot) livecd usr # setfont /usr/share/consolefonts/UniCyr_8x16.psf.gz

Настройка и сборка ядра

Пришла очередь установки ядра. Рекомендованным ядром для gentoo является gentoo-sources. Основные настройки в него уже внесены по умолчанию и при настройке требуется только подогнать его под "железо", на которое устанавливается система.

(ChRoot) livecd usr # emerge gentoo-sources

Исходные коды ядра хранятся в каталоге /usr/src. Для каждого ядра в отдельном каталоге.

(ChRoot) livecd usr # ls -l /usr/src/
итого 1
lrwxrwxrwx  1 root root  22 окт  3 14:28 linux -> linux-3.17.8-gentoo-r1
drwxr-xr-x 24 root root 848 окт  3 14:31 linux-3.17.8-gentoo-r1

 На текущее ядро ссылается символическая ссылка с именем linux. Заходим в /usr/src/linux и начинаем конфигурацию ядра командой make menuconfig.

(ChRoot) livecd usr # cd /usr/src/linux
(ChRoot) livecd linux # make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/mconf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/mconf
scripts/kconfig/mconf Kconfig
#
# using defaults found in arch/x86/configs/x86_64_defconfig
#

Примерно так выглядит окно конфигурирования ядра. Звездочками обозначен функционал который будет включен непосредственно в ядро. Буквой M обозначены будущие модули ядра.

.config - Linux/x86 3.17.8-gentoo-r1 Kernel Configuration
 ──────────────────────────────────────────────────────────────────────────────
  ┌──────────── Linux/x86 3.17.8-gentoo-r1 Kernel Configuration ────────────┐
  │  Arrow keys navigate the menu.  <Enter> selects submenus ---> (or empty │  
  │  submenus ----).  Highlighted letters are hotkeys.  Pressing <Y>        │  
  │  includes, <N> excludes, <M> modularizes features.  Press <Esc><Esc> to │  
  │  exit, <?> for Help, </> for Search.  Legend: [*] built-in  [ ]         │  
  │ ┌─────────────────────────────────────────────────────────────────────┐ │  
  │ │        Gentoo Linux  --->                                           │ │  
  │ │    [*] 64-bit kernel                                                │ │  
  │ │        General setup  --->                                          │ │  
  │ │    [*] Enable loadable module support  --->                         │ │  
  │ │    -*- Enable the block layer  --->                                 │ │  
  │ │        Processor type and features  --->                            │ │  
  │ │        Power management and ACPI options  --->                      │ │  
  │ │        Bus options (PCI etc.)  --->                                 │ │  
  │ │        Executable file formats / Emulations  --->                   │ │  
  │ │    [*] Networking support  --->                                     │ │  
  │ │        Device Drivers  --->                                         │ │  
  │ │        Firmware Drivers  --->                                       │ │  
  │ │        File systems  --->                                           │ │  
  │ │        Kernel hacking  --->                                         │ │  
  │ │        Security options  --->                                       │ │  
  │ │    -*- Cryptographic API  --->                                      │ │  
  │ │    [*] Virtualization (NEW)  --->                                   │ │  
  │ │        Library routines  --->                                       │ │  
  │ │                                                                     │ │  
  │ └─────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────┤  
  │        <Select>    < Exit >    < Help >    < Save >    < Load >         │  
  └─────────────────────────────────────────────────────────────────────────┘ 

Настройка ядра это пожалуй самый интересный этап установки системы. Для его настройки нужно иметь полные сведения о аппартном обеспечении компьютера. Найти их можно как в интернете, так и используя специальные программы (lspci, lsusb, lsmod). Так-же не лишним будет просмотр журнала системных сообщений (dmesg).

Основную информацию, необходимую при настройке дает lspci.

(ChRoot) livecd linux # lspci
00:00.0 Host bridge: VIA Technologies, Inc. P4M800 Host Bridge
00:00.1 Host bridge: VIA Technologies, Inc. P4M800 Host Bridge
00:00.2 Host bridge: VIA Technologies, Inc. P4M800 Host Bridge
00:00.3 Host bridge: VIA Technologies, Inc. P4M800 Host Bridge
00:00.4 Host bridge: VIA Technologies, Inc. P4M800 Host Bridge
00:00.7 Host bridge: VIA Technologies, Inc. P4M800 Host Bridge
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237/VX700 PCI Bridge
00:0f.0 IDE interface: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80)
00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
00:10.0 USB controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
00:10.1 USB controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
00:10.2 USB controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
00:10.3 USB controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
00:10.4 USB controller: VIA Technologies, Inc. USB 2.0 (rev 86)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South]
00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 60)
00:11.6 Communication controller: VIA Technologies, Inc. AC'97 Modem Controller (rev 80)
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78)
01:00.0 VGA compatible controller: VIA Technologies, Inc. KM400/KN400/P4M800 [S3 UniChrome] (rev 01)

Так как железо 32-битное - нужно отключить 64-bit kernel (галки устанавливаются и снимаются пробелом).

[ ] 64-bit kernel

IDE настраивается в разделе SATA. Все драйвера дисковой подсистемы необходимо включать непосредственно в ядро (должно быть помечено звездочками). Иначе ядро не может работать с диском, так как загрузчик загружает в память только ядро. А модули подгружаются уже с диска. И если ядро не умеет работать с диском - у него случится паника.

Device Drivers  --->
    <*> Serial ATA and Parallel ATA drivers (libata)  --->
        [*]   ATA SFF support (for legacy IDE and PATA)
        [*]     ATA BMDMA support
        <*>       VIA SATA support
        <*>       VIA PATA support
        <*>     Generic ATA support

Настроим сетевую карту.

Device Drivers  --->
    [*] Network device support  --->
        [*]   Ethernet driver support  --->
            [*]   VIA devices
            <*>     VIA Rhine support
            [*]       Use MMIO instead of PIO      

Добавим поддержку файловой системы Reiserfs. Поддержка должна быть именно в ядре. Иначе ядро не сможет получить доступ к данным на разделе диска.

File systems  --->
    <*> Reiserfs support
    [*]   Stats in /proc/fs/reiserfs      

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

Дополнительную информацию по конфигурированию ядра можно найти здесь.

После того как ядро сконфигурировано, его необходимо откомпилировать, собрать и установить вместе с модулями (если они есть). Делается это с помощью команды:

(ChRoot) livecd linux # make && make install modules_install

Ядро устанавливается в каталог /boot.

Установка загрузчика

Так как схема созданных разделов на диске не содержит отдельного раздела для UEFI и не предусматривает использование GPT, то имеет смысл установить grub-static (старая версия grub заточенная для работы с MBR).

(ChRoot) livecd linux # emerge grub-static

После того как он установится - создадим для него конфигурационный файл.

(ChRoot) livecd linux # nano -w /boot/grub/grub.conf
/boot/grub/grub.conf

default 0
timeout 5

title Gentoo Linux 3.17.8
root (hd0,1)
kernel /boot/vmlinuz-3.17.8-gentoo-r1 root=/dev/sda2

Разделы в grub нумеруются с ноля. root (hd0,1) означает что корневая файловая система находится на первом диске (hd0), на втором разделе (1).

Запустим grub.

(ChRoot) livecd linux # grub

GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

grub>

Укажем раздел с корневой ФС.

grub> root (hd0,1)
 Filesystem type is reiserfs, partition type 0x83

Установим загрузчик в MBR диска sda.

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/reiserfs_stage1_5" exists... yes
 Running "embed /boot/grub/reiserfs_stage1_5 (hd0)"...  19 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+19 p (hd0,1)/boot/grub/stage2 /boot/grub/menu.lst"
... succeeded
Done.

Выйдем из программы

grub> quit

Настройка установленной системы

Настроим монтирование разделов в системе. Настройки нахотся в файле /etc/fstab.

(ChRoot) livecd linux # nano -w /etc/fstab 
/etc/fstab
/dev/sda2               /               reiserfs        noatime,notail  0 1
/dev/sda1               none            swap            sw              0 0
/dev/sda3               /var            reiserfs        noatime,notail  0 0
/dev/sda4               /home           reiserfs        noatime,notail  0 0
/dev/cdrom              /mnt/cdrom      auto            noauto          0 0

Приступим к настройке сети. Все настройки сетевой подсистемы осуществляются в файле /etc/conf.d/net.

(ChRoot) livecd linux # nano -w /etc/conf.d/net
/etc/conf.d/net

dns_domain_lo="net.work.ru"
nis_domain_lo="net.work.ru"

config_eth0="192.168.1.8 netmask 255.255.255.0 brd 192.168.1.255"
routes_eth0="default via 192.168.1.1"
dns_servers="192.168.1.1"

Дополнительно о типовых настройках сетевых интерфейсов можно узнать в файле net.example. Находится он в каталоге /usr/share/doc/netifrc-0.2.2 в упакованном виде. Можно его распаковать в домашний каталог и просматривать.

(ChRoot) livecd linux # bunzip2 -kc /usr/share/doc/netifrc-0.2.2/net.example.bz2 > /home/net.example
(ChRoot) livecd linux # nano -w /home/net.example

Создадим скрипт для инициализации сетевого интерфейса и добавим его в уровень запуска default.

(ChRoot) livecd linux # cd /etc/init.d  
(ChRoot) livecd init.d # ln -s net.lo net.eth0
(ChRoot) livecd init.d # rc-update add net.eth0 default
 * service net.eth0 added to runlevel default

Разберемся с именованием интерфейса. Менеджер устройств udev для именования устройств использует специальные наборы правил. В этих правилах используются ID_NET_NAME_ONBOARD (имя сетевого интерфейса зарегистрированное на самой карте), ID_NET_NAME_SLOT (слот, в котором находится сетевая карта), ID_NET_NAME_PATH (путь к сетевой карте) и ID_NET_NAME_MAC (MAC адрес сетевой карты). По умолчанию, в именовании интерфейса используются первые три. Зная имя сетевой карты (посмотреть в ifconfig) можно, используя udevadm, определить какие параметры использовались для именования сетевой карты.

(ChRoot) livecd init.d # udevadm test-builtin net_id /sys/class/net/enp0s18 2>/dev/null

ID_NET_NAME_MAC=enx0016ec0bb218
ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., Ltd.
ID_NET_NAME_PATH=enp0s18

В нашем случае использовался только ID_NET_NAME_PATH. Создадим на основе него правило именования сетевого интерфейса для udev.

(ChRoot) livecd init.d # cd /etc/udev/rules.d/
(ChRoot) livecd rules.d # ls
(ChRoot) livecd rules.d # nano -w 99-custom-net.rules
/etc/udev/rules.d/99-custom-net.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp0s18", NAME="eth0"

Добавим sshd в уровень запуска default для удаленного администрирования.

(ChRoot) livecd init.d # rc-update add sshd default
 * service sshd added to runlevel default

Зададим имя компьютера.

(ChRoot) livecd init.d # nano -w /etc/conf.d/hostname
/etc/conf.d/hostname
hostname="gentux"

Установим пароль суперпользователя.

(ChRoot) livecd init.d # passwd root
Новый пароль :
Повторите ввод нового пароля :
passwd: пароль успешно обновлён

Настроим временную зону.

(ChRoot) livecd init.d # rm /etc/localtime
(ChRoot) livecd init.d # ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Перезагрузка в установленную систему

Выходим из chroot.

(ChRoot) livecd init.d # exit
exit
livecd / #

Размонтируем системные каталоги и разделы.

livecd / # umount /mnt/nd/proc/
livecd / # umount /mnt/nd/dev
livecd / # umount /mnt/nd/sys
livecd / # umount /mnt/nd/var
livecd / # umount /mnt/nd/home
livecd / # umount /mnt/nd

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

livecd / # reboot

Если загрузка системы прошла успешно - можно переходить к следующему пункту (Обновление системы до актуального состояния). А вот что делать в случае Kernel panic? Главное не паниковать самому и внимательно прочитать из-за чего у ядра случилась паника. В основном это ошибки доступа к диску вроде этого:

kernel panic - not syncing: VFS: unable to mount root fs on unknown block(0,0)

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

Обновление системы до актуального состояния

После загрузки установленной системы будет выведено приглашение для входа в систему. Входим в систему под логином root и введенным ранее паролем.

Проверим что необходимо обновить в системе.

gentux ~ # emerge -uDNp system

Будет выведен список пакетов, требующих обновления. Что-то вроде этого.

[ebuild     U  ] dev-libs/libpipeline-1.4.0 [1.2.5]
[ebuild     U  ] sys-apps/grep-2.21-r1 [2.16]
[ebuild     U  ] sys-process/procps-3.3.9-r2 [3.3.9] USE="(-selinux) -systemd%"
[ebuild     U  ] sys-apps/kmod-19 [18-r1]
[ebuild     U  ] sys-fs/udev-init-scripts-27 [26-r2]
[ebuild     U  ] dev-util/gtk-doc-am-1.21 [1.20]
[ebuild     U  ] sys-devel/libtool-2.4.4 [2.4.2-r1]

Обновим систему.

gentux ~ # emerge -uDN system

Установим дополнительное ПО.

  1. dcron - планировщик задач для выполнения задач по расписанию.
  2. syslog-ng - системный журнал для ведения журнала событий (.log файлы).
  3. ntp - для установки времени через интернет.
  4. reiserfsprogs - для проверки и починки файловой системы reiserfs.
  5. gentoolkit и portage-utils - набор программ для работы с системой портежей.
  6. vim - удобный консольный текстовой редактор.
gentux ~ # emerge dcron syslog-ng vim ntp reiserfsprogs gentoolkit portage-utils

Запустим установленные сервисы.

gentux ~ # /etc/init.d/ntp-client start
 * Setting clock via the NTP client 'ntpdate' ...                                             [ ok ]
gentux ~ # /etc/init.d/dcron start
 * Starting dcron ...                                                                         [ ok ]
gentux ~ # /etc/init.d/syslog-ng start
 * Checking your configfile (/etc/syslog-ng/syslog-ng.conf) ...                               [ ok ]
 * /var/lib/syslog-ng: correcting mode
 * Starting syslog-ng ...                                                                     [ ok ]

Добавим их в уровень запуска default.

gentux ~ # rc-update add ntp-client default
 * service ntp-client added to runlevel default
gentux ~ # rc-update add dcron default
 * service dcron added to runlevel default
gentux ~ # rc-update add syslog-ng default
 * service syslog-ng added to runlevel default

Вот и все. Базовая система установлена. Теперь можно с ней проводить всяко-разного рода эксперименты. Только перед этим неплохо бы снять резервную копию системы на всякий случай (мало ли восстановить понадобится или установить на другой компьютер).

Создание копии системы

Для создания копии, нужно снова загрузиться с загрузочного диска и подмонтировать разделы с которых будет сниматься копия.  Например, в нашем случае, подмонтировать нужно разделы sda2 и sda3.

livecd ~ # mkdir /mnt/nd
livecd ~ # mount /dev/sda2 /mnt/nd
livecd ~ # mount /dev/sda3 /mnt/nd/var

Затем нужно примонтировать раздел /dev/sda4 для записи на него архивированной копии.

livecd ~ # mkdir /mnt/bk
livecd ~ # mount /dev/sda4 /mnt/bk

Теперь можно создавать архивную копию. Меняем текущий каталог на /mnt/nd и создаем копию.

livecd ~ # cd /mnt/nd
livecd nd # tar -cjvpf /mnt/bk/stage4-i686-2015.tar.bz2 ./*

Все файлы из текущего каталога будут записаны в /mnt/bk/stage4-i686-2015.tar.bz2.

Теперь можно отмонтировать разделы и перезагрузиться в систему. После перезагрузки, файл stage4-i686-2015.tar.bz2 будет находится в каталоге /home.

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