Глава 1. Описание предметной области, рассмотрение существующих программ установки дистрибутивов
Аннотация
В работе рассматривается построение и реализация программы автоматизированной установки дистрибутива Gentoo на основе Linux. Проводиться анализ существующих операционных систем, на базе ядра Linux, и способов их установки. Показана разработанная архитектура программы установки дистрибутива и проведено тестирование созданного приложения на различных аппаратных обеспечениях.
Annotation
In this work considered building and realization of automated installation program for install Gentoo Linux operating system. Conducted an analysis of existing Linux based operating systems and how to install them. Shown the architecture developed by the operating system installation program and tested created application on different hardware.
Содержание
Введение. 5
Глава 1. Описание предметной области, рассмотрение существующих программ установки дистрибутивов. 7
1.1. Принципы работы дистрибутива Gentoo. 7
1.2. Описание дистрибутива Gentoo. 9
1.3. Установка дистрибутива Gentoo. 12
1.3.1. Настройка интернет соединения. 15
1.3.2. Подготовка дисков. 19
1.3.3. Установка исходных файлов Gentoo. 25
1.3.4. Установка базовой системы Gentoo. 29
1.3.5. Конфигурирование ядра. 33
1.3.6. Конфигурирование дистрибутива Gentoo. 37
1.3.6. Установка необходимого программного обеспечения. 41
1.3.7. Настройка загрузчика. 43
Глава 2. Разработка архитектуры программы установки дистрибутива Gentoo 46
2.1. Назначение автоматизированной программы установки. 46
2.3. Основные механизмы установки дистрибутива Gentoo. 49
2.4. Планирование структуры программы установки. 52
Глава 3. Реализация автоматизированной программы установки дистрибутива Gentoo 55
3.1. Программная реализация первой части программы установки. 55
3.1.1. Проверка прав пользователя. 55
3.1.2. Работа с жесткими дисками. 56
3.1.3. Размещение файловых систем. 59
3.1.4. Настройка даты и времени. 63
3.1.5. Выбор архитектуры и скачивание файлов установки. 65
3.1.6. Конфигурирование системы и переход в новую среду. 66
3.2. Программная реализация второй части программы.. 68
3.2.1. Выбор профиля. 68
3.2.2. Локализация настройка часового пояса. 69
3.2.3. Загрузка, конфигурирование и сборка ядра GentooLinux. 70
3.2.4. Конфигурирование файловых систем. 72
3.2.5. Настройка системы.. 74
3.2.6. Настройка и установка загрузчика. 75
3.2.7. Завершение установки. 76
Глава 4. Тестирование реализованной программы автоматизированной установки Gentoo с использованием разработанной справочной подсистемы.. 77
4.1. Тестирование программы установки на различных архитектурах. 77
4.2. Разработка справочной подсистемы программы установки. 79
Заключение. 82
Список литературы.. 83
Приложение. 84
Введение
В настоящее время существует большое количество операционных систем на базе ядра Linux, которые широко используются в различных областях ИТ-индустрии. Одним из самых эффективных операционных систем данного класса является Gentoo[1].
Однако данная операционная система не имеет интуитивно понятной программы установки. Установка производиться с использование руководства пользователя, объем которого составляет порядка ста страниц [1]. Так же процесс установки Gentooможет сильно изменяться в зависимости от необходимых пользователю функций и аппаратного обеспечения компьютера. В связи с этим производить установку операционной системы может выполнять только специалист в данной области.
В связи с этим становится актуальнойзадача разработки автоматизированной программы установки операционной системы Gentoo, использующей графический интерфейс понятный конечным пользователям. Так же это будет способствовать широкому распространению ОС.
Целью работы является: разработка и реализация программы автоматизированной установки дистрибутива Gentoo на основе Linux.
Предметом исследования является процесс установки операционной системы Gentoo.
Объектом исследования является операционная система Gentoo.
Для достижения поставленной в работе цели необходимо решить следующие задачи:
· Выполнить анализ предметной области операционных систем и рассмотреть существующие программы их установки;
· Разработать архитектуру программы установки Gentoo;
· Обосновать выбор инструментария для разработки установочной программы дистрибутива;
· Реализовать установочный модуль для дистрибутива Gentoo, функционирующий согласно руководствую пользователя данной ОС;
· Провести тестирование разработанного приложения на компьютерах с различным аппаратным обеспечением;
· Обеспечить информационную поддержку пользователей программы установки дистрибутива Gentoo.
Использование net-setup
Самый простой способ настройки интернета, это использование скрипта net-setup. Она задаст вам несколько вопросов о конфигурации вашей сети, и в результате его работы у вас должно появиться работоспособное подключение к интернету. Проверить интернет соединение можно как указано выше.
Ручная настройка сети
Когда установочный CDзагружается, то он определяет все ваше оборудование и автоматически подгружает нужные модули ядра (драйвера) для поддержки вашего оборудования. В большинстве случаев определение оборудования работает очень хорошо. Но в некоторых случаях модули, которые вам необходимы, могут не загрузиться автоматически.
Еслиnet-setupиpppoe-setupне удалось запустить, то вероятнее всего что ваша сетевая карта не определилась. Это означает, что вам нужно подгрузить нужный модуль вручную.
Что бы узнать какие модули для работы сети присутствуют, используйте команду ls:
Листинг 1.5. Поискдоступныхмодулейядра
calculate guest # ls /lib/modules/`uname -r`/kernel/drivers/netbonding dummy.ko ethernet ifb.ko mdio.ko mii.ko phy ppp slip sungem_phy.ko tun.ko usb virtio_net.ko vmxnet3 wimax wirelessЕсли вы нашли необходимый модуль в списке, используйте команду modeprobeчто бы загрузить его. После этого необходимо с помощью команды ifconfig проверить работоспособность сети, как было описано выше.
Если сетевая карта заработала, то можно еще раз попробовать настроить сеть с помощью net-setupили аналогичных утилит или проделать это вручную.
Использование DHCP
DHCP (DynamicHostConfigurationProtocol – протокол динамической настройки хоста)дает возможность автоматически получить параметры сетевого подключения (IP-адрес, маску сети, широковещательный адрес, шлюз, сервера имен и другие). Что бы интерфейс получал эти сведения автоматически, используется dhcpcd.
Листинг 1.6. Использование dhcpcd
# dhcpcdeth0Некоторые сетевые администраторы требуют, что бы вы использовалиИмя хоста и домена, назначенное сервером DHCP.В этом случае нужно использовать# dhcpcd -HDeth0Что бы узнать работает ли сетевое подключение можно использовать команду ping, как описано выше.
Подготовка дисков
Блочные устройства
Давайте достаточно подробно рассмотрим аспекты работы с дисками в Gentoo Linux и Linux вообще, включая файловые системы, разделы и блочные устройства. Позже, после обзора ввода-вывода на диск и файловых систем разберем пошагово процесс разметки диска на разделы и файловые системы для установки Gentoo Linux.
Наиболее известным блочным устройством, вероятно, является устройство, представляющее собой первый IDE диск в Linux системе, и известное как /dev/hda. Если в системе используются диски SCSI, тогда первый жесткий диск будет именоваться как /dev/sda.
Блочные устройства, аналогичные приведенным примерам, представляют собой абстрактный интерфейс к диску. Это позволяет пользовательскому ПО использовать эти блочные устройства для обращения к дискам не беспокоясь, к какому типу они принадлежат: IDE, SCSI или какому-то еще. ПО может адресовать место на диске, как набор смежных 512 байтных блоков с произвольным доступом.
Разделы и слайсы
Не смотря на то, что теоретически возможно использовать весь диск для размещения Linux системы, этого почти никогда не случается на практике. Вместо этого все большое блочное устройство (диск) разбивается на меньшие, более удобные для обращения блочные устройства. На архитектуре amd64 они называются разделами.
Разделы
Существуют разделы трех типов: первичные, расширенные и логические.
Первичный раздел - это раздел, информация о котором хранится в MBR (Master Boot Record - главная загрузочная запись). Т.к. MBR очень маленького размера (512 байт), то может быть определено только четыре первичных раздела (например от /dev/hda1 до /dev/hda4).
Расширенный раздел - это специального типа первичный раздел (имеется ввиду, что расширенный раздел должен быть одним из четырех возможных первичных разделов), в котором содержаться другие разделы. Этого типа разделов изначально не существовало, но т.к. четырех разделов оказалось мало, введение дополнительного типа разделов помогло расширить существующую схему форматирования без потери обратной совместимости.
Логический раздел - это раздел внутри расширенного раздела. Его определения не находятся внутри MBR, но прописаны внутри расширенного раздела.
Количество разделов очень сильно зависит от используемого программного обеспечения. Например, еслив системе зарегистрировано большое количество пользователей, удобнее будет, чтобы /home находился отдельно для увеличения безопасности и упрощения создания резервных копий. Если устанавливать Gentoo в качестве почтового сервера, то /var должен находиться на отдельном разделе, т.к. вся почта хранится в /var. Правильный выбор файловой системы для разделов позволит увеличить производительность системы в целом. Игровые серверы должны иметь отдельный раздел с /opt, т.к. большая часть программного обеспечения для их работы устанавливается в этот каталог. Причина выделения на собственный раздел аналогична для /home: безопасность и резервные копии. Разместить /usr на отдельном разделе - это определенно хорошая мысль, т.к. помимо того, что здесь хранится большинство приложений, одно дерево Portage занимает около 500 Мб, не считая архивов с исходными кодами, размещенных внутри дерева.
Как видно, все зависит от назначения. Наличие отдельных разделов или томов имеет следующие плюсы:
- можно выбрать наиболее подходящую файловую систему для каждого раздела или тома
- мала вероятность столкновения с нехваткой места на диске для всей системы, например, если какое-нибудь неправильно работающее приложение постоянно производит запись на раздел или том.
- в случае необходимости проверка ФС займет меньше времени, т.к. проверка разных разделов может выполняться параллельно (однако еще больший выигрыш по времени дает использование нескольких физических дисков)
Безопасность системы может быть улучшена, если некоторые разделы будут смонтированы в режиме read-only (только для чтения), nosuid (setuid бит игнорируется), noexec (бит запуска игнорируется) и т.д.
Однако создание множества разделов имеет один большой минус: при неправильной настройке можно получить систему, в которой много свободного места на одном разделе и полная его нехватка на другом. Также существует ограничение, в размере 15 штук на возможное количество разделов для дисков SCSI и SATA.
Листинг 1.10. Пример разметки жесткого диска
$ df -hFilesystem Type Size Used Avail Use% Mounted on/dev/hda5 ext3 509M 132M351M 28% //dev/hda2 ext3 5.0G 3.0G1.8G 63% /home/dev/hda7 ext3 7.9G 6.2G1.3G 83% /usr/dev/hda8 ext3 1011M 483M477M 51% /opt/dev/hda9 ext3 2.0G 607M1.3G 32% /var/dev/hda1 ext2 51M 17M 31M 36% /boot/dev/hda6 swap 516M 12M 504M 2% <не смонтирован>(Свободное пространство для будущего использования: 2 Гб)Раздел, содержащий /usr, как видно, почти полностью израсходован (занято 83%), но когда установлено все необходимое ПО, рост раздела замедлится. Хотя отведение нескольких гигабайт дискового пространства для /var может показаться расточительством, помните, что Portage по умолчанию использует этот раздел для компиляции пакетов. Если вы захотите удержать /var в рамках более разумного размера, например, 1ГБ, то можно изменить переменную PORTAGE_TMPDIR в /etc/make.conf, чтобы она указывала на раздел, где достаточно свободного места для компиляции чрезвычайно больших пакетов, таких как OpenOffice.
Настройка даты и времени
Перед тем как продолжить, необходимо проверить дату и время, и при необходимости обновить их. Неправильно установленные дата и время могут дать непредвиденные результаты в дальнейшем.
Что бы узнать текущую дату и время необходимо воспользоваться командой date.
Листинг 1.15. Проверка даты и времени
calculateguest# date
ПНДИЮН403:43:55MSK2012
Если дата и время установлены неверно, то нужно их обновить, используя команду date с параметромMMDDhhmmYYYY (Mecяц, День, час, минута и Год). На данном этапе следует указывать время UTC. Позднее будет возможность настроить часовой пояс.
CHOST
В переменной CHOST определяется, для какой архитектуры скомпилирована система. В ней уже должно быть установлено правильное значение. Нельзя изменять эту переменную, т.к. это может повредить систему. Если переменная CHOST выглядит неправильно, возможно, используется не тот архив stage3.
CFLAGS и CXXFLAGS
Переменные CFLAGS и CXXFLAGS определяют параметры оптимизации компилятора gcc для языков C и C++, соответственно. При том, что общие значения следует устанавливать здесь, максимальная производительность достигается в том случае, когда для каждой компилируемой программы устанавливаются свои собственные оптимальные параметры. Причина в том, что все программы различны [4-5].
В файле make.conf следует указывать параметры оптимизации, которые, могут повысить скорость системы в целом. Не стоит сюда помещать экспериментальные значения; излишняя оптимизация может привести к плохому поведению программ (аварийным завершениям, или, что хуже, неправильной работе).
Первый параметр — флаг -march=, где указывается название целевой архитектуры. Возможные варианты описаны в комментариях в файле make.conf.example. Следующий — флаг -O (заглавная латинская «O», а не ноль), определяющий класс оптимизации в gcc. Допустимые значения: s — оптимизация по размеру; 0 — ноль, без оптимизации; 1, 2 или 3 — все большая оптимизация по скорости (в каждый класс входят все флаги предыдущего, и некоторые дополнительные). Другой популярный флаг оптимизации — -pipe (использование для связи между различными проходами компилятора каналов вместо временных файлов). Использование -fomit-frame-pointer (не хранить в регистре указатель стекового кадра для функций, которым он не нужен) может всерьез помешать отладке программ. При определении переменных CFLAGS и CXXFLAGS, нужно объединять несколько флагов оптимизации, как в следующем примере:
Листинг 1.19. Определение переменных CFLAGS и CXXFLAGS
CFLAGS="-march=athlon-xp -pipe -O2"# для пользователей AMD64: -march=k8# для пользователей EM64T: -march=noconaCXXFLAGS="${CFLAGS}"# указывайте одинаковые значения# обеих переменныхMAKEOPTS
С помощью MAKEOPTS определяется, сколько параллельных процессов компиляции можно запускать при установке пакета. Хороший (но не всегда идеальный) вариант — значение, равное количеству процессоров в системе плюс один.
Листинг 1.20. MAKEOPTS для 4 ядерного процессора
MAKEOPTS="-j5"Выбор зеркал
Для ускорения загрузки исходного кода рекомендуется выбрать быстрое зеркало. Portage ищет переменную GENTOO_MIRRORS в файле make.conf и использует зеркала, перечисленные в ней. Конечно, можно просмотреть список зеркал на сайте и выбрать одно или несколько, географически ближайших к пользователю (чаще всего они и будут самыми быстрыми), но имеется удобная утилита mirrorselect, которая позволяет выбрать желаемые зеркала более удобным способом.
Листинг 1.21. Запуск mirrorselect для установки переменной GENTOO_MIRRORS
# mirrorselect -i -o >>/mnt/gentoo/etc/make.confВторая важная настройка — установка значения переменной SYNC в файле make.conf. Эта переменная указывает на сервер rsync (сервер удаленной синхронизации), выбираемый для обновления дерева Portage (коллекции файлов ebuild — сборочных сценариев, содержащих все данные, нужные Portage для скачивания и установки программ). Хотя вписать адрес сервера в SYNC можно и вручную, mirrorselect позволяет упростить это действие.
Листинг 1.22. Выбор зеркала rsync с помощью mirrorselect
# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.confПосле выполнения mirrorselect, желательно проверить все значения в файле /mnt/gentoo/etc/make.conf.
Копирование сведений о DNS
Перед тем, как перейти в новую среду, осталось только скопировать информацию о DNS (системе доменных имен) в файл /etc/resolv.conf. Это нужно, чтобы при переходе сохранить работоспособность сети. В файле /etc/resolv.conf содержатся адреса серверов имен, используемых в сети пользователя.
Листинг 1.23. Копирование информации о DNS
(параметр «-L» нужен, чтобы случайно не скопироватьсимвольную ссылку)# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.confПереход в новую среду
Итак, все разделы подготовлены, а базовая операционная среда установлена. Теперь пора войти в нее, изменив корневой каталог. Таким образом, перейдя из текущей установочной среды (с компакт-диска или другого установочного носителя) в устанавливаемую систему (находящуюся в недавно размеченных разделах).
Изменение выполняется в три этапа. Сначала с помощью chroot изменяется корневой каталог с / (находящийся на установочном носителе) на /mnt/gentoo (находящийся на дисковых разделах). Затем создается новая среда, пользуясь утилитой env-update, которая, собственно, создает переменные среды. Наконец, эти переменные загружаются в память при помощи source.
Листинг 1.26. Изменение корневого каталога для перехода в новую среду
# chroot /mnt/gentoo /bin/bash# env-update>> Regenerating /etc/ld.so.cache...# source /etc/profile# exportPS1="(chroot) $PS1"Обновление дерева портэжей
Перед продолжением необходимо обновить дерево Portage до самой последней версии с помощью команды emerge --sync. Если выдано предупреждение, что имеется новая версия Portage и ее нужно обновить, выполните обновление командой emerge --oneshot portage.
Выбор нужного профиля
Профиль — конструктивный элемент любой системы Gentoo. В нем указываются не только значения по умолчанию для CHOST, CFLAGS и других важных переменных, он также привязывает систему к определенному диапазону допустимых версий пакетов. Диапазоны поддерживаются разработчиками Gentoo.
Узнать, какой профиль используется в системе в данный момент, вы можете командой:
Листинг 1.27. Выяснениеиспользуемогопрофиля
# eselectprofilelistAvailable profile symlink targets: [1] default/linux/amd64/10.0 * [2] default/linux/amd64/10.0/desktop[3] default/linux/amd64/10.0/serverТак же, для некоторых архитектур доступны серверные и пользовательские подпрофили. Для просмотра всех возможных вариантов профилей можно использовать команду eselectprofilelist. После того как какой то профиль выбран, используя команду eselectprofileset 2 устанавливается выбранный профиль.
При желании собрать окружение и все приложения только для архитектуры 64 бита, без 32-битных приложений или библиотек, необходимо использовать профили no-multilib.
Листинг 1.28. Переключение на no-multilibпрофиль
# eselect profile listAvailable profile symlink targets: [1] default/linux/amd64/10.0 * [2] default/linux/amd64/10.0/desktop [3] default/linux/amd64/10.0/no-multilib [4] default/linux/amd64/10.0/server(Choose the no-multilib profile)# eselect profile set 3(Verify the change)# eselect profile listAvailable profile symlink targets: [1] default/linux/amd64/10.0 [2] default/linux/amd64/10.0/desktop [3] default/linux/amd64/10.0/no-multilib * [4] default/linux/amd64/10.0/serverПрофилиdeveloperспециальнодлязадачразработчиковGentoo. Это не означает, что это поможет вам в настройке основного окружения разработчика.
Настройка переменной USE
USE («использовать») — одна из самых мощных переменных, имеющихся в распоряжении пользователей Gentoo. Она позволяет при компиляции программ включать или отключать поддержку определенных необязательных функций. Например, некоторые программы можно компилировать с поддержкой gtk или qt на выбор. Другие можно собирать, включая или отключая поддержку SSL. Некоторые программы можно даже компилировать с поддержкой кадрового буфера (svgalib) вместо поддержки X11 (X-сервера).
В большинстве дистрибутивов пакеты собраны с поддержкой практически всех мыслимых вариантов. Это увеличивает размер программ и время запуска, не говоря уже о чрезмерных зависимостях. В Gentoo вы сами можете определять, с какими возможностями следует компилировать пакет. Здесь играет роль переменная USE.
В переменной USE указываются ключевые слова, которые отражаются на параметрах компиляции. Например, параметр ssl включает компиляцию с поддержкой ssl всех программ, которые способны его поддерживать. -X отключает поддержку X-сервера (обратите внимание на предшествующий знак «минус»). Параметры gnome gtk -kde -qt обеспечивают компиляцию программ с поддержкой Gnome и gtk, но без поддержки KDE и qt, делая систему оптимальной для GNOME [3].
Настройки USE по умолчанию хранятся в файлах make.defaults пользовательского профиля. Файлы make.defaults находятся в каталоге, на который указывает /etc/make.profile, а также во всех родительких каталогах. Значение USE по умолчанию — это сумма всех значений USE во всех файлах make.defaults. Все, что вноситься в /etc/make.conf, рассчитывается относительно этих значений. Когда что-либо добавляется к значению USE, оно добавляется в список по умолчанию. Когда удаляется что-либо (указывая ключевое слово с предшествующим знаком минус), оно удаляется из списка по умолчанию (если оно там вообще было). Никогда ничего не стоит менять в /etc/make.profile. Все, что там находится, перезаписывается при обновлении Portage!
Локализация glibc
В системе можно использовать один, два или более набора региональных параметров. Нужные регионы можно указать в /etc/locale.gen.
Пример одновременного подключения, как английского (США), так и немецкого (Германия) с соответствующими кодировками (например, UTF-8).
Листинг 1.29. Указание региональных настроек
en_US/ISO-8859-1en_US.UTF-8/UTF-8de_DE/ISO-8859-1de_DE@euro/ISO-8859-15Следующийшаг — запустить locale-gen. Это сгенерирует настройки для всех регионов, указанных вами в файле /etc/locale.gen.
Конфигурирование ядра
Настройка часового пояса
Первым делом необходимо указать часовой пояс, что бы система знала, где вы находитесь. Список часовых поясов можно увидеть в каталоге /usr/share/zoneinfo и копировать нужный в /etc/localtime. Так же необходимо обратить внимание на то, что GMTчасовые пояса на самом деле не всегда указывают на то, что, кажется. Например, GMT-8 на самом деле часовой пояс GMT+8.
Листинг 1.30. Настройка часового пояса
# ls /usr/share/zoneinfo(Suppose you want to use Europe/Brussels)# cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime(Next set the timezone)# echo "Europe/Brussels" > /etc/timezoneУстановкаисходныхкодовядра
Ядро Linux – это то, вокруг чего формируются все дистрибутивы. Это слой между пользовательскими программами и вашими аппаратными средствами. Пользователи Gentoo могут использовать один из нескольких типов ядра.
Что бы установить исходный код ядра Linuxнеобходимо выполнить следующую команду.
Листинг 1.31. Установка исходных кодов ядра
# USE="-docsymlink" emergegentoo-sourcesЕсли после этого взглянуть в папку /usr/src вы можете увидеть в ней символическую ссылку linux, которая указывает на каталог с исходными кодами ядра.
Ручная настройка ядра
Однако есть одна истина: что бы выполнить ручную настройку ядра необходимо знать аппаратную часть своего компьютера. Большую часть информации можно получить после установки пакета pciutils (emergepciutils), который содержит lspci. После этого вы сможете использовать lspci внутри временной среды установки. Можете не обращать внимания на предупреждения, касающиеся pcilib (например: pcilib: cannotopen /sys/bus/pci/devices [pcilib: не могу открыть /sys/bus/pci/devices]), которые выводит на экран lspci. В качестве альтернативы, можно запустить lspciвне временной среды установки. Результат тот же. Также можно запустить lsmod для просмотра модулей ядра используемых установочным компакт-диском (это послужит хорошей подсказкой, на предмет того, какие опции надо включить).
Теперь войдите в каталог с исходными кодами ядра и введите команду makemenuconfig. Этой командой вы вызовете конфигурационное меню, использующее ncurses. После этого видно будет множество секций с конфигурациями.
Листинг 1.32. Запуск menuconfig
# cd /usr/src/linux# makemenuconfigКомпиляция и установка
Когда ядро сконфигурировано, необходимо скомпилировать его. Необходимо выйти из программы настройки и выполнить следующие команды.
Листинг 1.37. Компиляцияядраимодулей
# make&&makemodules_installКогда ядро будет скомпилировано, образ ядра копируется в каталог /boot. Можноиспользовать любое имя, кажущееся наиболее подходящим для ядра и его нужно запомнить, так как оно необходимо при настройке загрузчика.
Параметры файловых систем
В Linux все разделы, используемые системой, должны быть перечислены в /etc/fstab. В этом файле указываются точки подключения разделов (mountpoints, местоположение разделов в файловой системе), порядок подключения, а также дополнительные параметры (автоматический или ручной режим подключения, достаточность прав пользователя для подключения и т.п.).
В /etc/fstab используется специальный формат. Каждая строка состоит из шести полей, разделяемых пробелами, знаками табуляции или их сочетанием. Каждое поле имеет свое назначение:
· Первое поле обозначает раздел (partition) (путь к файлу устройства).
· Второе поле указывает точку подключения (mountpoint), в которую монтируется раздел.
· Третье поле задает тип файловой системы (filesystem), используемой в разделе.
· В четвертом поле указываются параметры подключения (mountoptions), используемые mount при подключении раздела. Поскольку для каждой файловой системы существуют свои параметры, рекомендуется прочитать страницу справки по mount (man mount), где приведен их полный перечень. При указании нескольких параметров подключения их следует разделять запятыми.
· Пятое поле используется dump для определения, требуется ли резервное копирование раздела средствами dump. Обычно это поле можно просто установить в 0 (ноль).
· Шестое поле используется fsck для определения порядка проверки (check) файловых систем после некорректного завершения работы системы. Для корневой файловой системы рекомендуется значение 1, а для остальных — 2 (или 0, когда проверка файловой системы не требуется).
Вариант файла /etc/fstab по умолчанию, входящий в Gentoo, не является работоспособным. Необходимо создать свой собственный файл /etc/fstab. Параметр auto позволяет mount определять тип файловой системы автоматически (рекомендуется для съемных носителей, которые могут оказаться размечены в одной из множества существующих файловых систем), а user позволяет монтировать компакт-диски обычным пользователям.
Чтобы повысить быстродействие, большинству пользователей стоит добавить параметр noatime в параметры подключения, что приведет к ускорению, за счет отключения регистрации отметки времени доступа к файлам (обычно в ней все равно нет необходимости).
Листинг 1.39. Пример файла /etc/fstab
/dev/sda1 /bootext2 defaults,noatime12/dev/sda2 none swap sw 00/dev/sda3 / ext3 noatime 01 /dev/cdrom /mnt/cdrom auto noauto,user 00Параметры сети
Еще один вопрос, который нужно решить пользователю — как назвать свой компьютер. Он кажется довольно простым, но многие затрудняются дать подходящее имя для своей Linux-системы. Это имя всегда можно будет изменить. Например, вы могли бы просто назвать свою систему tux, а домен — homenetwork. Для этого необходимо в файле /etc/conf.d/hostname присвоить значение переменной hostname="tux". Во-вторых, необходимо установить имя домена (domainname) в /etc/conf.d/net. Переменной dns_domain_lo присваивается соответствующее значение. Если имеется имя NISдомена, его так же необходимо указать в этом же файле, имя переменной – nis_domain_lo.
Теперь необходимо точно настроить параметры сети в новой системе. Для этого в файле /etc/conf.d/net необходимо указать переменные:
config_eth0 и routes_eth0 если у вас имеются данные о IP-адресе, маске сети и шлюзе
при использовании DHCPсервера в сети, необходимо использовать специфическое значение переменной config_eth0.
Листинг 1.40. Ручная настройка параметров IP для eth0
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.41. Автоматическое получение адреса IP для eth0
config_eth0="dhcp"Если имеется несколько сетевых интерфейсов, нужно повторить эти шаги для config_eth1, config_eth2 и т.д.
Для запуска сетевых интерфейсов при загрузке необходимо добавить их в уровень запуска по умолчанию.
Листинг 1.42. Добавление net.eth0 в уровень запуска default
#cd /etc/init.d# ln -s net.lo net.eth0# rc-update add net.eth0 defaultЕсли имеется несколько сетевых интерфейсов, потребуется создать для них соответствующие сценарии инициализации net.eth1, net.eth2 и т.д. так же как это было сделано для net.eth0.
Имеется возможность указания сетевых узлов. Сведения в системе Linuxо сети пользователя указываются в /etc/hosts, и помогают разрешению имен в IP-адреса для узлов, не обрабатываемых сервером имен. Также можно определить другие системы в сети, если вы не собираетесь устанавливать собственную систему DNS.
Листинг 1.43. Указание сведений об узлах сети
(определение текущей системы)127.0.0.1 tux.homenetwork tux localhost(определите другие машины в своей сети, для этого у них должен быть статический IP-адрес.)192.168.0.5jenny.homenetwork jenny192.168.0.6 benny.homenetwork bennyЕсли у пользователя имеются карты сетевые карты PCMCIA, то необходимо установить пакет pcmciautils, выполнив команду emergepcmciautils.
Параметры системы
После всех проделанных действий необходимо задать пароль суперпользователя в системе. Делается это командой passwd.
Для общей настройки системы пользователь обязательно должен прочитать файл /etc/rc.confи внести необходимые изменения. Как видно, этот файл подробно прокомментирован, что поможет в настройке необходимых конфигурационных переменных. Можно настроить систему на использование unicode, а также указать редактор по умолчанию и диспетчер отображения (например, gdm или kdm).
Для управления раскладками клавиатуры в Gentoo используется /etc/conf.d/keymaps. Этот файл так же необходимо отредактировать, писав нужную раскладку клавиатуры. Необходимо быть особенно тщательны при установке переменной раскладки клавиатуры (KEYMAP): выбрав неверную раскладку, можно получить непредсказуемый результат при попытке ввода с клавиатуры.
Для настройки параметров часов в Gentoo используется /etc/conf.d/hwclock. Его нужно изменить его в соответствии с потребностями пользователя.
Если аппаратные часы системы настроены не на часовой пояс UTC (Гринвич), в файл необходимо добавить строку clock="local". В противном случае произойдет сдвиг часового пояса.
Система журналирования
Некоторые средства отсутствуют в архиве stage3, поскольку некоторые пакеты обеспечивают ту же функциональность. Пользователь сам вправе выбирать то, что он хочет установить. Первая задача, которую нужно решить, это возможность журналирования системы. В UNIX и Linux есть отличная история возможности журналирования – при желании можете записывать все, что происходит в системе в лог-файлы. Это происходит через систему журналирования. Дистрибутив Gentoo предлагает несколько служб журналирования на выбор. Есть sysklogd, который является традиционной системой регистрации демонов, Syslog-ng, расширенная служба журналирования, и Metalog, котораяимеет очень гибкими возможностями настройки журналирования. Другие могут быть доступны через Portage, количество доступных пакетов растет ежедневно. Если пользователь планируете использовать Sysklogd или Syslog-ng необходима установка logrotate, потом как в системе журналирования не предусмотрен никакой механизм с разворотом лог-файлов. Поэтомунеобходимо установить системный журнал на выбор пользователя и добавить в уровень запуска по умолчанию.
Листинг 1.44. Установка системы журналирования
# emergesyslog-ng# rc-update add syslog-ng defaultДемон Cron
Демон — cron является дополнительным, и не обязателен для работы системы, будет благоразумным установить его. Демон cron выполняет команды по расписанию. Это очень удобно, когда нужно выполнять какие-либо команды регулярно (например, ежедневно, еженедельно или ежемесячно).
В Gentoo предлагаются три варианта демона cron на выбор: dcron, fcron и vixie-cron. Установка любого из них подобна установке системной службы журналирования. Однако при установке dcron или fcron для настройки требуется выполнение дополнительной команды, а именно crontab /etc/crontab. Если пользователь не знает что выбрать, выбирается vixie-cron.
При бессетевой установке,доступен только vixie-cron. Если вам нужен другой демон cron, его можно установить позже.
Листинг 1.45. Установка демона cron
# emergevixie-cron# rc-update add vixie-cron default(толькоесливыбран dcron или fcron) # crontab /etc/crontabИндексирование файлов
В Gentooесть возможность индексировать файлы в системе, чтобы быстро находить их с помощью locate, нужно установить sys-apps/mlocate.
Удаленный доступ
Если к данной системе необходим постоянный удаленный доступ, то после установки можно добавить демон sshd в уровень запуска по умолчанию.
Настройка загрузчика
Теперь, когда ядро сконфигурировано и собрано, необходимые системные файлы отредактированы должным образом, пришло время установить программу, которая будет запускать ядро дистрибутива GentooLinux при старте системы. Такого рода программа называется загрузчик.
Самым сложным моментом в освоении GRUB является понимание того, как он именует жесткие диски и разделы. Пользовательский Linux раздел /dev/hda1 скорее всего будет именоваться (hd0,0) в терминологии GRUB. Необходимо обратить внимание на круглые скобки вокруг hd0,0 - они обязательны.
Жесткие диски нумеруются, начиная с "0", а не с "а". Разделы, также нумеруются, начиная с "0", а не с "1". Необходимо отметить, что под hd подразумеваются только жесткие диски, а atapi-ide устройства, такие как cdrom или пишущий cdrom не учитываются. Тоже самое, относится и к устройствам SCSI (обычно они получают номера большие, чем IDE устройства, исключая те случаи, когда BIOS настроена на загрузку с устройства SCSI). Когда настроен BIOS на загрузку с другого жесткого диска (например, второй диск на первом канале IDE) этот жесткий диск и будет назван hd0.
Предположим жесткий диск /dev/hda, cdrom /dev/hdb, пишущий cdrom /dev/hdc, второй жесткий диск /dev/hdd и в системе нет устройств SCSI, тогда раздел /dev/hdd7 будет именоваться как (hd1,6). Это может показаться несколько запутанным, но GRUB обладает механизмом автодополнения при нажатии на tab, что облегчает жизнь обладателям большого количества жестких дисков с большим количеством разделов и тем, кто чувствует себя неуверенно в схеме нумерации GRUB'ом устройств.
Настало время установить GRUB. Для этого необходимо выполнить команду emerge grub.
Несмотря на то, что GRUB установлен, все же надо подправить его файл конфигурации и установить GRUB в MBR, чтобы он автоматически загружал вновь созданное ядро. Для этого нужно создатьфайл /boot/grub/grub.conf.
Листинг 1.45. Пример конфигурационного файла GRUB
# Пункт меню, загружаемый по умолчанию: 0 - первый, 1 - второй и т.д.default 0# Время задержки (в секундах) до начала загрузки пункта меню по умолчанию.timeout 30# Картинка :)# Закомментируйте эту строку, если у вас не установлена графическая видеокартаsplashimage=(hd0,0)/boot/grub/splash.xpm.gz title=Gentoo Linux 2.6.12# Раздел, где находится файл образа ядра (или вся операционная система)root (hd0,0)kernel /boot/kernel-2.6.12-gentoo-r10 root=/dev/hda3 # Следующие четыре строки только для тех у кого параллельно установлена Windows.# В этом примере Windows установлена на /dev/hda6.title=Windows XProotnoverify (hd0,5)makeactivechainloader +1Теперьнеобходимоустановить GRUB в MBR (Master Boot Record).
Разработчики GRUB рекомендуют использовать grub-install. Однако, если по какой-либо причине grub-install завершится с ошибкой, вы можете установить GRUB вручную.
Для установки GRUB надо выполнить команду grub-install. Однако,grub-install не заработает сама по себе, т.к. мы находимся в изолированной среде. Прежде нужно создать файл /etc/mtab, перечислив в нем все смонтированные файловые системы. К счастью, есть очень легкий способ сделать это: просто скопируйте содержимое /proc/mounts поверх /etc/mtab, за исключением строки rootfs, еслине создавался отдельный загрузочный раздел. Следующая команда подойдет в обоих случаях.
Листинг 1.46. Создание файла /etc/mtab
# grep -v rootfs /proc/mounts > /etc/mtab# grub-install /dev/hdaПерезагрузкасистемы
Теперь необходимо выйти из временного окружения и отмонтировать все разделы. И после этого выполнить заключительную команду установки дистрибутива GentooLinuxreboot.
Листинг 1.47. Перезагрузка системы
# exitcdimage ~# cdcdimage ~# umount -l /mnt/gentoo/dev{/shm,/pts,}cdimage ~# umount -l /mnt/gentoo{/boot,/proc,}cdimage ~# rebootПосле всех выполненных действий в результат<