Gentoo livecd как пользоваться
Перейти к содержимому

Gentoo livecd как пользоваться

Создание LiveCD дистрибутива на базе Gentoo Linux

В руководстве рассказывается о том как создать свой LiveCD диск на основе Gentoo Linux. Диск будет полностью русифицирован, произведена установка KDE и обеспечено автоматическое монтирование flash накопителей. В качестве загрузчика рассматривается ISOLINUX. Раньше был GRUB, но пришлось от него отказаться, так как он не работает на некоторых ноутбуках. Созданный по этой инструкции диск можно будет постоянно совершенствовать, устанавливать новые пакеты, вообщем можно делать все то что можно делать с обычным дистрибутивом установленным на вашем ПК.

Подготовительные действия

Для сборки необходимо создать определенную структуру каталогов, где создавать
— в принципе без разницы. Я создавал в домашней директории. Структура
следующая:

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

Собирать livecd будем из второй стадии. Скачиваем ее из сети и копируем в distr и распаковываем в каталог сборки. Распаковывать следует с root правами, иначе будут проблемы с созданием устройств в каталоге /dev.

# tar -C source/ -pxjvf distrib/stage2-i686-2007.0.tar.bz2

Архив с портежами и дистфайлами распаковывать в каталог сборки не будем. Вместо этого скрипты будут автоматически монтировать эти каталоги от основной системы.

Для того чтобы легко отличать консоль в chroot окружении от консоли основной системы, рекомендую для первой изменить приглашение коммандной строки и вместо просто "#"написать например "(LIVECD) #". Для этого копируем заготовленный в conf директории файл root/bashrc в каталог source/root/ (добавив в начало названия точку).

Для сборки образа, на ПК предварительно должны быть установлены пакеты squashfs-tools и cdrtools. Первый для работы с файловой системой SquashFS, второй для записи CD дисков.

# emerge -av squashfs-tools cdrtools

Собираем базовую систему

Сейчас можно входить (chroot’иться как еще говорят) в собираемую систему и начинать подгонять ее под свои потребности.

Если все прошло нормально — на экране не должно быть никаких ругательных сообщений, а приглашение командной строки выглядеть вот так: "(LIVECD) #". Сейчас мы находимся в только-что распакованной из stage2 системе.

Общий план работ таков:

Установить имя машины/домена, профиль, дописать USE флагов в make.conf,создать /etc/fstab.

Установить часовой пояс, перевести часы в режим Local, сгенерировать русские локали, установить русскую расскладку клавиатуры и экранный шрифт.

Выполнить emerge -e system и emerge -e world для получения Stage3.

Не забыть установить пароль root’у.

Собрать ядро, настроить загрузчик и попробовать перезагрузиться.

Установить свои приложения.

Создать ISO образ и записать его на диск.

Первые два пункта за вас может выполнить подготовленный скрипт "_prepare.sh". Написан он был потому как собрать livecd получилось не с первого раза, и делать одно и тоже на только-что распакованных stage-2 порядком надоело. Его нужно скопировать куда нибудь в source директорию и выполнить один раз для свеже распакованного stage-2. Скопировать можно например в /root или пря мо в корень (важно не забыть перед созданием ISO образа его оттуда удалить).

Напомню что все действия происходят в chroot окружении.

Подготавливаем и русифицируем систему.

(LIVECD) # rm _prepare.sh

Устанавливаем основные утилиты для управления пакетами

(LIVECD) # emerge -av gentoolkit

(LIVECD) # emerge -e system

Обновляем конфигурационные файлы обновленных приложений

Здесь нужно быть внимательным и не затереть те конфигурационные файлы которые

мы сами изменяли (или их изменил скрипт _prepare.sh). Это касается русского шрифта, раскладки клавиатуры и прочее. Вообщем прежде чем в ответ на вопрос dispatch-conf’a жать ‘u’, внимательно посмотрите какой файл он хочет обновить. Если это файлы: clock, consolefont, hostname или keymaps — жмите ‘z’ (не обновлять).

Проверяем целостность зависимостей системы

Тоже самое про мир, пересобираем, обновляем конфигурационные файлы и проверяем целостность зависимостей.

(LIVECD) # emerge -e world

Пересборка system на Turion64X2 заняла приблизительно 2.5 часа, world — 3 ч.

При emerge -e system могут быть проблемы с perl. Если такое случиться

-делать так (ставиться будет примерно минут 15):

(LIVECD) # emerge —oneshot gdbm db

(LIVECD) # emerge -N —oneshot —nodeps perl

После можно снова пробовать emerge -e system.

Возможно где-то в середине сборка system прервется с ошибкой на пакете sys-apps/attr. Ошибка будет выглядеть так: "libexpat.so.0: cannot open shared objects file: No such file or directory". Если это случилось — создаем сиволическую ссылку с libexpat.so на libexpat.so.0, и затем пробуем продолжить сборку, т.е. делаем

(LIVECD) # ln -s /usr/lib/libexpat.so /usr/lib/libexpat.so.0

(LIVECD) # emerge —resume

Обнаружил небольшой недочет при сборке с использованием portage от 05.03.2008. emerge -e system прерывается на пакете ‘which-2.19’ с ошибкой "error: readline/rlstdc.h: No such file or directory". На момент сборки этого пакета уже должна стоять библиотека readline, но ее нет. Устанавливаем ее сами и продолжаем сборку system. Если подробно, то:

(LIVECD) # emerge -av readline

(LIVECD) # emerge —resume

Если будут еще какие-либо проблемы — скачайте или обновитесь до самого свежего архива портежей. Не поможет — идите на bugzilla.gentoo.org.

4.Устанавливаем пароль root’у

Создаем пользователя livecd

(LIVECD) # useradd -m -G users,wheel,audio,video,cdrom,cdrw,usb -s /bin/bash livecd

(LIVECD) # passwd livecd

Устанавливаем splash темы для красивой графической загрузки

(LIVECD) # emerge -av splash-themes-livecd

Устанавливаем и компилируем ядро

(LIVECD) # emerge -av gentoo-sources

genkernel должен быть не старее чем 3.4.10_pre4. На момент написания этого руководства такой версии в стабильной ветке небыло. Если у вас тоже-самое -разрешаем устанавливать его из тестовой (

x86), для этого выполним

(LIVECD) # echo ‘sys-kernel/genkernel

(LIVECD) # emerge -av genkernel

(LIVECD) # genkernel all —gensplash=livecd-2007.0

Устанавливаем и добавляем в автозагрузку Gentoo LiveCD скрипты

Снимаем маскировку (установлена разработчиками для того чтобы предупредить о том, что скрипты предназначены только для использования вместе с livecd)

(LIVECD) # echo ‘app-misc/livecd-tools’ >> /etc/portage/package.unmask

(LIVECD) # echo ‘x11-misc/mkxf86config’ >> /etc/portage/package.unmask

(LIVECD) # echo ‘sys-apps/hwsetup’ >> /etc/portage/package.unmask

livecd-tools нужен версии не ниже 1.0.40_pre1. На момент написания этого руководства такой версии в стабильной ветке небыло. Если у вас тоже-самое — разрешаем устанавливать его из тестовой (

x86), для этого выполним

(LIVECD) # echo ‘app-misc/livecd-tools

(LIVECD) # emerge -av livecd-tools

libkudzu нужен не ниже чем 1.2.57.1, если будет устанавливаться более старая версия — отвечаем ‘no’ и разрешаем libkudzu из тестовой ветки.

(LIVECD) # echo ‘sys-libs/libkudzu

(LIVECD) # rc-update add autoconfig default

(LIVECD) # emerge -av syslinux

(LIVECD) # mkdir /boot/isolinux

(LIVECD) # cp /usr/lib/syslinux/isolinux.bin /boot/isolinux

(LIVECD) # cp /boot/kernel-genkernel-x86-2.6.23-gentoo-r6/boot/isolinux/vmlinuz

(LIVECD) # cp /boot/initramfs-genkernel-x86-2.6.23-gentoo-r6 /boot/isolinux/initrd

Из директории с конфиг. файлами копируем в /boot/isolinux файл isolinux.cfg.

Создаем образ и пробуем его загрузить. Выходим из chroot окружения и запускаем скрипт "build.sh"

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

Записать на CD можно так:

# cdrecord -v -eject speed=10 fs=8m dev=/dev/cdrw image.iso

или если это DVD то так:

# growisofs -dvd-compat -Z /dev/dvd=image.iso

Образ должен загрузиться, когда дойдет до приглашения — введите root и ваш пароль. Если все так — пол дела сделано. LiveCD грузиться. Сейчас желательно создать архив с каталогом livecd на случай если при дальнейших манипуляциях что нибудь пойдет не так — можно будет откатиться.

Установка KDE

(LIVECD) # emerge -av xorg-server

Устанавливаем оригинальный драйвера nVidia

(LIVECD) # emerge -av nvidia-drivers

Правим таблицу соответсвия устройство — драйвер для nVidia карт. Открываем файл /usr/share/hwdata/Cards.

3.1. Находим строку NAME NVIDIA Legacy и меняем название драйвера ‘vesa’ на ‘nv’.

3.2. Находим строку NAME NVIDIA GeForce и меняем название драйвера с ‘vesa’ на ‘nvidia’.

Устанавливаем минимальный набор KDE(LIVECD) # emerge -av kdm kdebase-startkde kde-i18n

Добавляем в автозапуск xdm и указываем в нем запускемый оконный менеджер В файле /etc/conf.d/xdm переменной DISPLAYMANAGER присваиваем значение "kdm"

(LIVECD) # rc-update add xdm default

Настройка автомонтирования съемных устройств

(LIVECD) # emerge -auv dbus hal pmount

(LIVECD) # rc-update add dbus default

(LIVECD) # rc-update add hald default

(LIVECD) # gpasswd -a livecd plugdev

Включаем русскую раскладку и переключатель en/ru

7.1. Открываем файл /usr/sbin/mkxf86config.sh и удаляем строку вида

Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"

Что еще можно сделать

* Автологин в текстовой консоли не под root’ом

(LIVECD) # emerge -av mingetty

Прописываем его в /etc/inittab вместо agetty.

c1:12345:respawn:/sbin/agetty 38400 tty1 linux

Как нужно исправить:

c1:12345:respawn:/sbin/mingetty —autologin root —noclear tty1

Естественно что вместо root можно вписать любого пользователя.

Правим файл /sbin/rc

Находим вот такую секцию (приблизительно это строка N 500)

then ebegin "Updating inittab" livecd_fix_inittab eend $? /sbin/telinit q &>/dev/null fi

и делаем ее такой

then ebegin "Updating inittab" /bin/true #livecd_fix_inittab eend $? /bin/true #/sbin/telinit q &>/dev/null

Свое сообщение после init’a

Открываем файл /sbin/rc, ищем строку вида ‘echo -e " Copyright’ и добавляем
ниже нее свое сообщение.

Автологин в KDE

Открываем файл /usr/kde/3.5/share/config/kdm/kdmrc и прописываем пользователя
в строки ‘DefaultUser’ и ‘AutoLoginUser’.

Красивый, настроенный и подогнанный под себя рабочий стол

Запускаем созданный LiveCD, загружаемся в KDE и настраиваем его под себя. Все, шрифты, поведение окон, курсор занятости, панели и пр. Затем сжимаем свой домашний каталог (/home/livecd) и копируем его на флешку. Выходим из LiveCD, chroot’имся в source и распаковываем в каталог /home/livecd/ сохраненные на флешке настройки.

Готовим свой Linux на базе Gentoo

Многие любят Gentoo за ее универсальность. Используя портежи, можно сделать инструмент под любые задачи. И пускай вас не смущает то, что секретарь никогда не будет компилировать Firefox — Боже упаси ей дать возможность ставить софт! Что может быть лучше дистрибутива, установив который вам больше ничего не понадобится с ним делать! Представьте себе — 5-10 минут времени и вы получаете систему с необходимым набором софта, собранного, настроенного и оптимизированного по вашим предпочтениям.

В этой статье я опишу процесс создания своей версии дистрибутива на основе Gentoo при помощи утилит Calculate 2.2. На выходе вы получите гибридный ISO диск для записи на CD/DVD или USB-Flash, полностью совместимый с Gentoo, поддерживающий установку на USB-HDD, USB-Flash, HDD с поддержкой LVM и Raid, файловой системой ext4, ext3, ext2, reiserfs, btrfs, xfs, jfs, nilfs2 или fat32.

Статья в первую очередь адресована всем любителям Gentoo, системным администраторам, преподавателям компьютерных классов школ и вузов, а также всем любителям Linux. Все операции выполняются с правами пользователя root из консоли.

1. То что нам понадобится

Разумеется, у вас уже должен быть установлен Gentoo, либо любой Gentoo-based дистрибутив и настроен доступ к сети интернет. Все операции я выполнял из Calculate Linux Desktop 11.9 KDE 64 бит.

Для начала установите пакеты calculate-assemble и calculate-builder. В Gentoo для этого понадобится подключить оверлей Calculate:

emerge layman
layman -a calculate
emerge calculate-assemble calculate-builder

  1. Gentoo Stage3 — прожиточный минимум для начала сборки системы;
  2. Calculate Scratch Server (CSS) — по сути тот же Gentoo Stage3 с ядром, драйверами, загрузчиком, портежами и утилитами Calculate.
  3. Calculate Linux Scratch (CLS) — CSS + Xorg + wireless.
  4. Calculate Linux Desktop с рабочим столом KDE, Gnome или XFCE (CLD, CLDG, CLDX) либо Calculate Directory Server (CDS).

В зависимости от задачи, загрузите последний Stage-архив Gentoo или Stage-образ Calculate и поместите в директории /var/calculate/remote/stages и /var/calculate/linux соответственно:

cd /var/calculate/remote/stages
wget mirror.yandex.ru/gentoo-distfiles/releases/x86/current-stage3/stage3-i686-20111018.tar.bz2

cd /var/calculate/linux
wget mirror.cnet.kz/calculate/CLDX/stages/i686/cldx-20111024-i686.iso

Stage образ Calculate Linux включает дерево портежей. По сути это одно из основных отличий образа Calculate от Gentoo Stage4. Собирая систему из Gentoo Stage, вам также понадобится загрузить портежи в директорию /var/calculate/remote/snapshots:

cd /var/calculate/remote/snapshots
wget mirror.yandex.ru/gentoo-distfiles/snapshots/portage-20111024.tar.bz2

Обратите внимание, версии фалов постоянно обновляются.
В этой статье я остановлю свой выбор на CLDX 32 бит по следующим причинам:

  • Дистрибутив уже содержит большинство необходимых программ;
  • Нет привязки к Gnome/KDE;
  • XFCE включает несколько небольших пакетов и при желании быстро удаляется.
2. Подготовим систему к сборке

Для подготовки системы к сборке служит утилита cl-assemble. Вы можете воспользоваться любым из доступных профилей. В профилях Calculate Linux флаги подобраны с учётом используемого рабочего стола. CLD оптимизирован с учётом использования Qt/KDE, CLDG — Gtk/Gnome, XFCE — Gtk. Профиль CLDX идеально подойдет, если вы не хотите использовать ни KDE, ни Gnome.

Если в качестве профиля указать «CLDX», программа попросит более точно ввести его название:

Вам также понадобится указать раздел для установки. Это может быть либо раздел жесткого диска (10-15 Гб), либо директория. В случае использования директории, будет тратиться дополнительное время на удаление старых файлов. По умолчанию утилита использует Gentoo Stage3 образ и свежие портежи:

Укажем, что мы хотим взять 32-битный образ CLDX, свежую версию которого можно скачать отсюда mirror.cnet.kz/calculate/CLDX/stages/i686. Для этого понадобится правильно указать профиль и, в случае если мы работаем в 64-битной системе, указать, что мы хотим использовать архитектуру i686:

cl-assemble -p desktop/CLDX/x86/binary -d /dev/sda2 —source=CLDX —march=i686

На моей машине вся подготовка заняла менее 10 минут:

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

Для сборки системы служит утилита cl-make. Обратите внимание на несколько параметров. Если вы хотите собрать систему со Stage3 — используйте опцию сборки системы «-m» (или «—make»), если из образа Calculate — опцию обновления системы «-u», (или «—update»). Обратите внимание на опцию «-V» (или «—withvideo») для копирования проприетарных видеодрайверов. Копирование без установки пресекает нарушение лицензии GPL, при этом у вас остаётся выбор проприетарного видеодрайвера, который будет инсталлирован в систему во время процесса загрузки.

В приведенном примере я не указывал собираемый профиль. Его следует вводить в случае, если вы ставите на сборку несколько систем одновременно. Например, 32 и 64 битную версии. В этом случае профиль можно ввести как «-p amd64» и «-p x86». Путем сравнения собираемых версий, программа попытается определить нужный профиль.

В моем случае потребовалось обновить около 40 пакетов.

Свои действия утилиты Calculate отписывают в файл /etc/calculate/assemble.env:

Некоторые значения, например rsync-сервер портежей, доступные разделы, можно прописать в переменных утилит. Пример с реального сервера сборки:

После указания доступных разделов, передавать параметр раздела сборки уже не обязательно.

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

4. Внесем изменения

Наконец добрались до самого интересного. Что мы можем изменить:

  • состав пакетов;
  • флаги сборки;
  • настройки программ;
  • настройки рабочего стола пользователей;
  • темы и т.п.

Как вы могли заметить, образ развернулся в директорию /mnt/calculate-desktop-CLDX-x86-binary/. Используйте этот путь для внесения изменений. На скриншотах видно, что с развернутой системой производится некоторая настройка. Собственно все шаблоны настройки можно посмотреть в директории /usr/share/calculate/templates/assemble/. Важно вносить изменения так, чтобы не вызывать конфликт настроек. Где-то можно создать свои шаблоны изменений, где-то использовать альтернативные файлы. Рассмотрим теперь подробней.

4.1. Флаги сборки

Управление параметрами сборки пакетов осуществляется через USE-флаги. Урезая зависимости, вы можете добиться нескольких преимуществ:

  • ускорить выполнение программ;
  • повысить защищенность системы;
  • избавиться от лишних зависимостей;
  • уменьшить требование к дисковому пространству.

Давайте посмотрим на содержимое переменной USE. Для этого в собираемой системе нужно выполнить следующую команду:

linux32 chroot /mnt/calculate-desktop-CLDX-x86-binary /bin/bash -c «emerge —info»

Обратите внимание, я использовал вызов chroot через утилиту linux32, т.к. я выполняю сборку 32-битной системы из-под 64-битной. В противном случае в утилите linux32 нет необходимости.

Флагов будет великое множество. Более подробно о них можно узнать, почитав следующие описания: общие — /usr/portage/profiles/use.desc и индивидуальные — /usr/portage/profiles/use.local.desc.

Для внесения изменений в флаги применительно ко всем пакетам сразу используется файл make.conf. В процессе сборки содержимое файла /etc/make.conf будет переписываться, поэтому для внесения изменений, мы рекомендуем использовать альтернативный путь — /etc/portage/make.conf.

В качестве примера, давайте исключим поддержку адресации ipv6 во всех пакетах, для этого добавьте в файл /mnt/calculate-desktop-CLDX-x86-binary/etc/portage/make.conf следующую строчку:

Посмотрим что получится. В этот раз запустим обновление с флагом «-U», вместо «-u». Это позволит сэкономить время на синхронизацию портежей. Выполним ‘cl-make -U -V’:

Примечание. Так как при обновлении пакетов был пересобран Xorg сервер, в конце программа выполнит пересборку его модулей. Если вы будете запускать несколько сборок подряд, анализируя файл emerge.log, программа будет каждый раз пересобирать драйвера Xorg-сервера. Чтобы этого не происходило, вы можете удалить файл var/log/emerge.log в директории собираемой системы. Во время запаковки системы в образ, этот файл будет в любом случае удален.

4.2. Флаги и маски пакетов

Для изменения флагов и масок используются следующие пути: etc/portage/package.use, etc/portage/package.keywords, etc/portage/package.mask, etc/portage/package.unmask. Менеджер пакетов emerge 2.2 умеет размаскировывать зависимости.

Рассмотрим размаскировку пакетов, на примере браузера Firefox. Для начала сменим корневой каталог:

linux32 chroot /mnt/calculate-desktop-CLDX-x86-binary
env-update && source /etc/profile

Определим правильное название пакета firefox и узнаем список доступных версий:

eix firefox
* www-client/firefox
Available versions: *3.6.12 3.6.20

Стабильная версия пакета 3.6.20. Размаскируем версию 7.0.1-r1:

Для обновления настроек используем утилиту dispatch-conf вместо etc-update:

Утилита обновит маски и USE-флаги. В обоих случаях нажмите «u» для принятия изменений.

Здесь же вы можете проверить и выписать названия других пакетов, необходимых для сборки. В конце, чтобы проверить все зависимости, выполните:

emerge -p пакет1 пакет2 ..

4.3. Добавление пакетов

Все устанавливаемые пакеты, за исключением зависимостей, прописываются в файле ‘world’. Если вы ставите пакет, он, вместе с зависимыми библиотеками, устанавливается в систему. Если какие-либо библиотеки в последствии пакету уже не понадобятся, команда ’emerge —depclean’ их удалит. Поэтому важно, чтобы все пакеты (без зависимостей), которые вы установили дополнительно, были прописаны в файле ‘world’. Удалить их можно опять же командой ’emerge —unmerge’ с указанием пакета(ов) или вручную, отредактировав файл и выполнив ’emerge —depclean’.

Для построения дерева зависимостей утилиты Calculate используют мета-пакеты, в основе которых лежит app-misc/calculate-meta. Посредством USE-флагов строятся всё дерево зависимостей. Так как в процессе сборки вы могли устанавливать для проверки софт, файл var/lib/portage/world перед запаковкой будет содержать только один этот мета-пакет.

Для того, чтобы добавить свои пакеты в дистрибутив, в портежах есть замечательный инструмент — сеты. При помощи сетов вы сможете подготовить свои тематические подборки программ. Сеты поддерживают вложения, что тоже очень удобно. Вы можете отредактировать свой список пакетов, воспользоваться сетом custom, находящемся в фале /etc/portage/sets/custom@, вписав в него строчку:

Либо создать новый сет с другим именем, например ‘web’, вписав в него пакет, а в файле ‘custom’ указать ссылку на него:

Таким образом, сет может содержать как вложенные сеты, так и пакеты.

Во время обновления системы программы из сета будут установлены, т.к. сет прописан в своем world-файле, находящемся в /var/lib/portage/world_sets.

4.4. Удаление пакетов

Если очистить файл world и выполнить ’emerge —depclean’, мы получим Stage3-образ. Т.е. прожиточный минимум всё же имеется и называется он ‘system’. Обновить его можно командой ’emerge system’, либо используя сет — ’emerge system’. Мета-пакет calculate-meta строит зависимости исходя из выбранного профиля. Используя USE-флаги calculate_nowireless, calculate_nonetwork, calculate_noxfce и т.п., можно исключить часть зависимостей. Полный список флагов можно посмотреть в файле /var/lib/layman/calculate/profiles/desc/calculate.desc. Для примера, давайте отключим поддержку беспроводных устройств. Для этого отредактируете файл /etc/portage/make.conf, вписав в него:

5. Сохраним изменения

Мы добавили браузер firefox, удалили поддержку беспроводных устройств, давайте теперь обновим образ:

Пакет firefox будет установлен, а лишние зависимости удалены:

5. Создадим новый образ

Для создания образа используйте утилиту cl-image:

cl-image —live iso

Опция «—live» позволит выиграть несколько секунд при загрузке с LiveCD или USB-Flash. Используйте эту опцию, если вы используете свежий Stage-образ Calculate Linux.

6. Завершение сборки

В случае необходимости, либо по завершению установки можно прервать сборку выполнив:

7. Итог

Для эксперимента я выбрал дистрибутив Calculate Linux Desktop XFCE и воспользовался бинарным профилем CLDX. Все дальнейшие обновления системы я буду выполнять с учётом своих USE-флагов, командой ’emerge -uDNa world’. В случае, если флаги будут полностью совпадать, пакет будет установлен из бинарного репозитория, если будут различия — пакет соберется на моей машине.

Я получил образ с необходимым мне набором программного обеспечения. Не все из описанных возможностей я задействовал. Например в дистрибутиве можно подготовить шаблоны настройки рабочего стола пользователя (см. habrahabr.ru/blogs/linux/129658).

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

Gentoo Linux. Типовая установка.

Gentoo — Source-based дистрибутив Linux. Что это значит? Это значит что все придется собирать из исходных кодов, то есть компилировать и устанавливать. Не ручками конечно, не пугайтесь. Для этого есть специальная программа — emerge. Она все сама откомпилирует и установит, только попросите.

Для чего нужен такой дистрибутив? Не проще ли Ubuntu поставить? В некоторых случаях проще Ubuntu. Ставится быстро, настраивается тоже. С обновлениями проблем нет. Для рабочей станции — самое оно, если не предъявляется каких либо специфических требований (хитрое шифрование содержимого диска «спецпрограммой», к примеру). В этом случае заморачиваться не стоит.

Так для чего оно тогда нужно? Нужен Gentoo тогда, когда хотят «заточить» машинку для определенного рода задач и только под них. Когда стоит задача собрать из старой машинки маршрутизатор с BGP и OSPF. Некоторым категорически не нравится, что на их сервере X-ы «отжимают» нужную для Apache память и ресурсы процессора. Кто-то терпеть ненавидит перезагружать сервер после каждого обновления. Кому-то не нравятся модули ядра и ему хочется чтобы ядро было монолитным и включало в себя только необходимые на конкретной машине драйвера. И чтоб ничего лишнего. Кому-то чего-то не хватает в стандартных дистрибутивах. А кто-то просто любит собирать все своими руками. Вот для таких случаев Gentoo идеально подходит. На рабочие станции его тоже можно устанавливать, при желании. Он не хуже той-же Ubuntu справится.

Основным преимуществом Gentoo является высокая гибкость. Это конструктор. Конструктор с достаточно мелкими деталями. Причем подходит он под многие архитектуры процессоров. И разобраться в принципах его работы не сложно.

В общих чертах, основными компонентами Gentoo являются: загрузчик системы (bootloader), ядро Linux, набор программного обеспечения составляющий базовую систему (так называемый system set) и система portage.

Загрузчик предназначен для загрузки ядра в оперативную память и передачи ему управления. Самым распространенным в последнее время загрузчиком является grub2. Но никаких жестких требований, использовать именно его, нет. Можно устанавливать и другие. В частности lilo, elilo или grub-static.

Ядро — это и есть сам Linux. Если вкратце, это прослойка между железом и софтом. Включает в себя драйвера для железа, файловые системы, сетевые протоколы, механизмы виртуализации и др. Подробнее схему ядра Linux можно посмотреть на картинке честно «спионеренной» отсюда.

Набор программного обеспечения system предоставляет базовый функционал системы. Включает в себя достаточно большой список пакетов. Просмотреть его можно выполнив команду:

Система portage — система управления программным обеспечением в Gentoo. Все операции установки, обновления и удаления производятся с ее помощью посредством команды emerge. Это гибкая система установки, позволяющая с помощью USE флагов управлять параметрами сборки ПО.

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

Процесс загрузки Gentoo выглядит следующим образом. Bootloader загружает ядро в память и запускает его. Ядро инициализируется (разворачивает собственные структуры, подключает устройства и т.д) и передает управление openrc (процессу init). Этот процесс проверяет корректность монтирования разделов, указанных в файле /etc/fstab, и запускает службы, необходимые для запуска системы. Когда все необходимые службы запущены, он инициализирует консоли, через которые осуществляется вход в систему.

Как устанавливается Gentoo? Процесс установки базовой системы достаточно простой. Состоит из следующих фаз:

    . . (разбивка, форматирование и монтирование) (файл stage) (опционально)

Как все это выглядит на практике? Попробую продемонстрировать на примере. Есть у меня в загашнике старый «конь»:

  • Процессор: Intel(R) Celeron(R) CPU 2.53GHz
  • Материнская плата: ECS P4M800-M
  • ОЗУ: 2Gb.
  • HDD: IDE 80Gb
  • Привод DVD

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

Получение livecd и запись его на физический носитель.

Что такое livecd? Это загрузочный ISO образ Gentoo. Найти его можно на сайте gentoo.org или на зеркалах Gentoo. На текущий момент для архитектуры x86 (в нашем случае это «оно») есть два варианта образов: минимальный установочный CD или LiveDVD. Минимальный установочный CD — содержит минимально-необходимый объем программного обеспечения для загрузки Gentoo в консольном режиме и установки системы. В LiveDVD есть возможность загрузить Gentoo как в консольном, так и в графическом режиме. К тому же, LiveDVD поддерживает, кроме архитектуры x86, еще и amd64. Скачиваем любой из них.

После того как образ скачан, его нужно записать на носитель. Записать можно как на CD/DVD диск, так и на флешку. Главное чтоб машина, на которую будет производится установка, поддерживала нужный способ загрузки. Для записи на флешку можно использовать программу unetbootin.

Загрузка с физического носителя.

Загружаемся с носителя. Будет выведен список вариантов загрузки. Если загружаемся с LiveDVD, будет выведен список вариантов загрузки в графическом режиме. В минимальном установочном CD графического режима нет. Перед выводом приглашения командной строки, будет отображен список вариантов загружаемых ядер. В обоих случаях можно загружать ядро по умолчанию (если архитектура соответствует x86).

При загрузке с LiveDVD, по окончанию загрузки запускается X сервер (графический режим). Изредка (в частности на старых машинах), с ним случаются проблемы и отображается только черный экран. В таких случаях, нужно нажать Ctrl+Alt+F1 для перехода в консоль.

В минимальном установочном CD по окончанию загрузки будет выведено приглашение командной строки.

Прежде чем начать работу в консоли, поясню один момент. В bash есть такая штука, как автодополнение. При наборе команд (особенно путей к файлам) очень помогает. Например, вместо того чтобы набирать вот это — cd /usr/share/bash-completion, можно набрать так: cd /u<tab>/sh<tab>/bash<tab> (Там где <tab> — нажимается кнопка Tab).

Так как, при установке Gentoo нужно будет много скачивать из интернета, настройка сети это первоочередная задача. Посмотрим на состояние сетевых интерфейсов:

Присутствует два сетевых интерфейса. enp0s18 — встроенная сетевая карта Ethernet.

Второй интерфейс lo — локальная петля (Local Loopback).

Так как, у нас в сети есть DHCP сервер, сетевой интерфейс уже настроен с параметрами, выданными сервером.
Что делать если нужно настраивать вручную? Настраивать с помощью ifconfig. Следующая команда установит интерфейсу enp0s18 адрес 192.168.1.8 с маской 255.255.255.0

Добавим маршрут по умолчанию для доступа в интернет через шлюз 192.168.1.1.

Зададим DNS сервер 192.168.1.1.

/etc/resolv.conf
nameserver 192.168.1.1

Проверим прохождение ICMP пакетов

Если все путем, можно идти дальше.

Следующим шагом нужно установить правильную дату и время. Если этого не сделать, то в последующем возможны неприятные неожиданности. Устанавливается дата и время командой date с аргументом в виде ДДММччммГГГГ (День, Месяц,час,минуты,Год)

Устанавливать Gentoo можно как и непосредственно за компьютером, на который производится установка, так и удаленно (по сети, через ssh клиент). Для удаленной работы требуется несколько дополнительных телодвижений: установить пароль root’а и запустить sshd. Конфиг sshd править не обязательно (предполагается, что в локальной сети хакеры не водятся).

Теперь можно подключиться по ssh со своего рабочего места.

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

Как вообще найти диск в Linux? Для начала нужно сказать, что Linux работает с устройствами компьютера через файлы. Их еще нодами (node) называют. Чтение/запись с устройства производится путем чтения/записи из соответствующего файла. Хранятся все эти файлики в каталоге /dev . Диски, как и другие устройства, следует искать именно там.

Как узнать имя нужного диска? С этим тоже все просто. Имя диска составное. Состоит оно из наименования устройства и его номера на шине. Если диск IDE, то имя диска должно начинаться с hd (Hard Drive). Если диск SCSI, SATA или USB, то имя начинается с sd (SCSI Drive). Почему SATA тоже определяются как SCSI? Потому, что ядро Linux работает с SATA и USB устройствами посредством эмуляции SCSI. В современных ядрах IDE диски тоже работают через эмуляцию SCSI.

Проверим какие диски присутствуют в системе. Сначала поищем IDE диски:

Обнаружилось два диска: sda (с тремя разделами sda1, sda2 и sda5) и sdb (с одним разделом sdb4). Первый диск это IDE диск, хоть он и отображается как SCSI, а второй это загрузочная флешка.

Работать будем с первым. Создадим на нем разделы.

Какие именно разделы и в каких количествах нужны — определяется в зависимости от назначения системы. Это довольно большая тема. В нашем случае это не особенно важно, по-этому подробно останавливаться на этом не будем. Зачем их вообще создавать? Неужели нельзя поставить все на один раздел? Можно поставить и на один раздел. Только в этом случае, при заполнении диска до 100% будут проблемы. Серьезные. Во первых. Не будет файла подкачки (Как в Windows). В Linux для этих целей выделяется отдельный раздел. Желательно вначале диска для большей скорости чтения/записи. Во вторых — системные журналы имеют свойство распухать при активном использовании системы. И для них тоже желательно создавать отдельный раздел. И под систему желателен свой раздел. А уж для пользовательских данных отдельный раздел просто необходим. То есть, создадим 4 раздела:

  1. — Подкачка. Размер раздела под подкачку предлагается делать ОЗУ*2. У нас 2Gb ОЗУ. Значит нужен раздел 4Gb.
  2. — Корневая файловая система. 10Gb для нее в нашем случае достаточно.
  3. — Раздел для каталога /var. Основной объем там занимают лог-файлы. 6Gb для них думаю даже много.
  4. — Пользовательский раздел.

Для разметки диска в Linux используется программа fdisk (Для работы с разделами диска более 2Tb следует использовать parted). Fdisk вносит изменения в таблицу разделов только после команды w . Если ,во время работы с программой, вам вдруг захотелось «вернуть все в зад» — введите команду q и изменения не будут сохранены. Так что, если что-то будет сделано неправильно — не беда (если вы команду w еще не давали). И так, приступим.

Говорит, скажите m для справки. Кому интересно — нажмите. Справка там короткая и понятная.

Для просмотра текущей разметки скажем p

Это старая разметка. Нам она ни к чему, по-этому удалим все разделы. Делается это с помощью команды d .

Как видим, после введения команды d , fdisk спрашивает какой раздел удалять. Если нужно удалить какой-то конкретный раздел — указываем номер раздела. А если все-равно какой — можно не указывать. Будет удален тот, который предлагается по умолчанию. Теперь таблица пуста. Приступим к созданию новых разделов. Сначала, обычно, создается файл подкачки (swap).

Здесь fdisk спросил какой раздел нужен (первичный или расширенный), номер первого сектора и номер последнего сектора или размер раздела. Раздел лучше создавать первичный, если хватает номеров разделов. Номер стартового сектора менять без нужды не следует. А вместо последнего я указал размер в 4 гигабайта. Создадим еще три раздела: под корневой каталог 10Gb, под /var — 6Gb и все оставшееся под /home («все оставшееся» — это в поле Last sector ничего указывать не нужно). В результате получилось вот так:

Теперь нужно задать правильные типы разделов. У дисков с sda2 по sda4 типы выставлены правильно(id=82, System=Linux). А у sda1 нужно указать, что это диск под swap. Делается это с помощью команды t .

Теперь типы дисков выставлены правильно. Можно сохранять таблицу разделов.

Проверим наличие созданных разделов в файловой системе.

Как видим, все в порядке. Присутствуют 4 раздела на диске sda. Теперь можно приступать к форматированию разделов. Для начала создадим раздел swap.

Теперь нужно отформатировать остальные разделы. Linux поддерживает множество файловых систем. Если к файловой системе имеются какие-либо требования, можно посмотреть их характеристики и подобрать наиболее подходящую под требования. В нашем случае таких требований нет и можно использовать любую. Например ReiserFS.

Утилита предупреждает о потере данных на форматируемом разделе и спрашивает подтверждение форматирование. Жмем y . Так-же форматируем sda3 и sda4.

Файловые системы на разделах созданы. Теперь их необходимо примонтировать к текущей файловой системе. Что это значит? Работа с разделами в Linux сильно отличается от Windows. В Windows разделы доступны в виде дисков (C:,D. Z:). И чтобы получить доступ к данным на разделе, нужно указывать диск, на котором они находятся (C:\autoexec.bat). В Linux такого нет, разделы монтируются к текущей корневой файловой системе. И корневая файловая система только одна.

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

Структура каталогов в Linux определена в Filesystem Hierarchy Standard (FHS). По русски можно почитать здесь.

Для временного монтирования (подключаемых дисков, или других разделов) предназначен каталог /mnt . Сюда и будем монтировать.

В нашем случае, нам нужно примонтировать раздел sda2 (на нем будет корневая ФС устанавливаемой ОС) к корневой файловой системе. Создать там два каталога (var и home) для монтирования разделов sda3 и sda4. Затем примонтировать туда разделы.

Активируем раздел подкачки.

Распаковка на диски установочных файлов

Затем нужно распаковать архив в корень устанавливаемой системы.

Когда архив распакован, монтируем файловую систему /dev, /sys и /proc в корень устанавливаемой системы. Это нужно для того, чтобы после смены корня файловой системы, программы могли получить доступ к устройствам компьютера и внутренним структурам ядра.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *