355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Gerard Beekmans » Linux From Scratch » Текст книги (страница 13)
Linux From Scratch
  • Текст добавлен: 24 сентября 2016, 07:05

Текст книги "Linux From Scratch"


Автор книги: Gerard Beekmans


Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 13 (всего у книги 18 страниц)

Конфигурация основных программ

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

Конфигурация VIM

По умолчанию vim запускается в режиме совместимости с vi. Некоторым это нравиться, но нам надо запускать vim в режиме vim (иначе мы бы не включили vim в описание, а оставили бы vi). Создайте /root/.vimrc запустив следующее:

cat > /root/.vimrc << «EOF»

" Begin /root/.vimrc

set nocompatible

set bs=2

" End /root/.vimrc

EOF

Конфигурация Glibc

Нам надо создать новый файл /etc/nsswitch.conf запустив следующее:

cat > /etc/nsswitch.conf << «EOF»

# Begin /etc/nsswitch.conf

passwd: files

group: files

shadow: files

publickey: files

hosts: files dns

networks: files

protocols: db files

services: db files

ethers: db files

rpc: db files

netgroup: db files

# End /etc/nsswitch.conf

EOF

Скрипт tzselect должен быть запущен, и вы должны ответить на вопрос о вашей временной зоне. Когда ответите, скрипт возьмет значение вашего местоположения из файла.

Создайте /etc/localtime симлинк на:

ln -sf ../usr/share/zoneinfo/ /etc/localtime

tzselect's должно иметь значение, типа EST5EDT or Canada/Eastern.

Команда на создание симлинка должна быть типа такой:

ln -sf ../usr/share/zoneinfo/EST5EDT /etc/localtime

Или:

ln -sf ../usr/share/zoneinfo/Canada/Eastern /etc/localtime

Конфигурация Dinamic Loader

По умолчанию Dinamic Loader (/lib/ld-linux.so.2) производит поиск в /lib и /usr/lib на предмет наличия dinamic libraries для программ, которые в них нуждаются. Однако, если dinamic libraries находятся в других директориях, вы должны добавить их в файл /etc/ld.so.conf, чтобы Dinamic Loader смог их найти. Две директории общеизвестны для дополнительных библиотек: /usr/local/lib и /opt/lib поэтому мы добавим эти директории в пути поиска Dinamic Loader: Создайте новый файл /etc/ld.so.conf следующей командой:

cat > /etc/ld.so.conf << «EOF»

# Begin /etc/ld.so.conf

/usr/local/lib

/opt/lib

# End /etc/ld.so.conf

EOF

Конфигурация Sysklogd

Создайте новый файл /etc/syslog.conf используя следующее:

cat > /etc/syslog.conf << «EOF»

# Begin /etc/syslog.conf

auth,authpriv.* -/var/log/auth.log

*.*;auth,authpriv.none -/var/log/sys.log

daemon.* -/var/log/daemon.log

kern.* -/var/log/kern.log

mail.* -/var/log/mail.log

user.* -/var/log/user.log

*.emerg *

# End /etc/syslog.conf

EOF

Конфигурация теневых паролей (Shadow Password Suite)

Этот пакет содержит утилиты для изменения пользовательских паролей, добавления или удаления пользователей и групп и все в этом духе. Мы не хотим разъяснять вам, что есть теневые пароли. Полное разъяснение вы получите прочитав соответствующий HOWTO поставляемый вместе с Shadow Password Suite Надо запомнить только одну вещь: если вы хотите использовать теневые пароли, то убедитесь, что ваши программы (например xdm, ftp daemons, pop3 daemons) способны работать с ними (являются ли программы shadow-compliant). Это все, что нам надо знать. Для включения механизма теневых паролей запустите следующую команду:

/usr/sbin/pwconv

Конфигурация Sysvinit

Создайте новый файл /etc/inittab запустив следующее:

cat > /etc/inittab << «EOF»

# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc sysinit

l0:0:wait:/etc/rc.d/init.d/rc 0

l1:S1:wait:/etc/rc.d/init.d/rc 1

l2:2:wait:/etc/rc.d/init.d/rc 2

l3:3:wait:/etc/rc.d/init.d/rc 3

l4:4:wait:/etc/rc.d/init.d/rc 4

l5:5:wait:/etc/rc.d/init.d/rc 5

l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty tty1 9600

2:2345:respawn:/sbin/agetty tty2 9600

3:2345:respawn:/sbin/agetty tty3 9600

4:2345:respawn:/sbin/agetty tty4 9600

5:2345:respawn:/sbin/agetty tty5 9600

6:2345:respawn:/sbin/agetty tty6 9600

# End /etc/inittab

EOF

Конфигурируем клавиатуру

Ничего не раздражает в LINUX так, как неправильно настроенная клавиатура (раскладка, keymap). Если вы хотите использовать раскладку по умолчанию (US keyboard) вы можете пропустить эту часть. US keymap используется по умолчанию. Для установки keymap нужной раскладки, создайте симлинк /usr/share/kbd/keymaps/defkeymap.map.gz используя следующую команду:

ln -s /usr/share/kbd/keymaps/defkeymap.map.gz

Замените путем к вашему map файлу. Для примера, если у вас немецкая раскладка запустите следующее:

ln -s i386/qwerty/nl.map.gz /usr/share/kbd/keymaps/defkeymap.map.gz

Вторая часть конфигурации раскладки заключается в компиляции раскладки прямо в ядро. В этом случае раскладка клавиатуры будет работать корректно даже в режиме maintenance (когда ядро получает команду init=/bin/sh), для которого сценарии загрузки не выполняются.

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

loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz >

/usr/src/linux/drivers/char/defkeymap.c

Создание файлов /var/run/utmp, /var/log/wtmp and /var/log/btmp

Таким программам как login, shutdown, uptime и другие требуется читать и записывать данные в /var/run/utmp, /var/log/btmp и /var/log/wtmp. Эти файлы содержат информацию о том, кто в текущий момент залогинен в системе. Они так же содержат информацию о моменте последней загрузки и shutdown, и записи о неудачных попытках входа в систему.

Создайте эти файлы и установите на них следующие права доступа:

touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} &&

chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}

Установка пароля пользователя root

Придумайте пароль для пользователя root и установите его следующей командой:

passwd root

Глава 7. Конфигурация загрузочных скриптов
Введение

Эта глава описывает конфигурацию скриптов, о которых было рассказано в 6 главе. Большинство из тех скриптов будут работать и без дополнительных настроек, но некоторые требуют дополнительной конфигурации, т.к. они зависят он аппаратной конфигурации.

Как взаимодействует процесс загрузки со скриптами?

LINUX использует специальную возможность загрузки именуемой SysVinit Она основана на концепции runlevels. Они могут различаться от системы к системе, но это будет работать в дистрибутиве <вставьте его имя здесь> и в системах типа LFS. LFS имеет собственный путь в конфигурации, но мы уважаем стандарты.

SysVinit (мы называем init с этого места) работает используя схему runlevels. Всего их 7 (от 0 до 6). Может быть и более чем 7, но они создаются в отдельных случаях и в обычных системах не работают. Страница man для init описывает такие случаи. Каждый из уровней runlevels соответствует необходимым вещам, которые компьютер должен выполнить при загрузке этого уровня (runlevels). По умолчанию используется уровень 3 (runlevels). Далее приводится описание каждого уровня (runlevels) и небольшое описание:

0: halt the computer – выключить компьютер 1: single-user mode – однопользовательский режим 2: multi-user mode without networking – многопользовательский режим без сети 3: multi-user mode with networking – многопользовательский режим с сетевыми установками 4: зарезервирован для создания, своего иначе используется так, как 3 5: Также как 4, только с использованием GUI входа в систему (например X'ы xdm или KDE's kdm) 6: перезагрузка компьютера

Команда для изменения runlevels – init где целевой номер runlevel. Для примера: перезагрузить компьютер можно используя команду init 6. Команда reboot только алиас для init 6, как и команда halt алиас для init 0.

Директории, находящиеся в поддиректории /etc/rc.d выглядят как /rc?.d, где d-это номер runlevel и rcsysinit.d который содержит число символических ссылок. Некоторые начинаются на К, другие на S, и все из них имеют двухсимольную цифру, следующую после начальной буквы. Буква К означает останов (kill) службы, а S означает запуск службы. Число после буквы означает порядок, в котором скрипты будут запускаться. Числа могут иметь значения от 00 до 99, и чем меньше число, тем раньше запуститься скрипт. Когда init переключается на другой уровень, то службы предназначенные для одного runlevel`a убиваются, и другие запускаются.

Главные скрипты располагаются в директории /etc/rc.d/init.d. Они выполняют всю работу и все симлинки указывают на них. Симлинки для запуска и остановки указывают на скрипт в директории /etc/rc.d/init.d с таким же именем. Поэтому скрипты могут быть вызваны с различными параметрами, например start, stop, restart, reload, status. Когда скрипту передается аргумент stop, то вызывается К симлинк. Когда скрипту передается аргумент start, то вызывается S симлинк.

Есть только одно исключение. симлинки начинающиеся с S в директориях rc0.d и rc6.d не могут быть запущены никогда. Они могут бать вызваны только с параметром stop для остановки чего либо. Логика состоит в том, что если вы перезапустили или остановили систему, вам не надо запускать что либо, а только остановить систему.

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

start: Запуск службы

stop: Останов службы

restart: Перезагрузка службы. Сначала останов службы, потом запуск.

reload: Обновить конфигурацию службы. Используется когда конфигурационный файл данной службы был изменен. Перезапуск службы не требуется.

status: Опросить службу. Выдается информация о том, запущена служба или нет, ее PIDs.

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

Настройка скрипта setclock

Скрипт setclock считывает информацию о времени из BIOS компьютера и конвертирует его во время вашего часового пояса используя файл /etc/localtime (если значение в BIOS соответствует GMT) или нет (если значение в BIOS соответствует местному времени). Само ничего не конфигурируется (это вам не винда), поэтому лезем править сами:

Измените значение переменной UTC отличной от (нуля) в случае, если ваши часы не установлены по времени GMT.

Создайте файл /etc/sysconfig/clock запустив следующую команду:

cat > /etc/sysconfig/clock << «EOF»

# Begin /etc/sysconfig/clock

UTC=1

# End /etc/sysconfig/clock

EOF

Теперь вы можете посмотреть на неплохие примеры, позволяющие лучше понять механизм установки временной зоны на LFS http://hints.linuxfromscratch.org/hints/time.txt. Там объясняются такие понятия как timezones, UTC, и переменная окружения TZ.

Что надо для загрузки loadkeys скриптов?

Если вы решили вкомпилить вашу раскладку (keymap) напрямую в ядро, вернитесь в конец 6-й главы, где вам четко сказано, что не требуется его (скрипт) запускать, если вы уже вкомпилили раскладку (keymap) в ядро. Но вы можете запустить крипт если хотите – ничего страшного. Это может потребоваться в случае, если у вас есть несколько разных ядер, и вы не помните: вкомпилировали-ли вы в каждое ядро раскладку.

Если вы решили, что вам это не надо, или вы не хотите использовать скрипт loadkeys удалите этот /etc/rc.d/rcsysinit.d/S70loadkeys симлинк.

Настройка скрипта sysklogd

Скрипт sysklogd вызывает программу syslogd с опцией –m 0 Эта опция выключает периодические записи mark в лог файлы каждые 20 минут (значение по умолчанию). Если вы хотите включить периодические записи mark подредактируйте скрипт sysklogd на предмет необходимых изменений. Смотрите man syslogd для более детальной информации.

Конфигурация скриптов localnet.

Частью установки скриптов, относящихся к localnet, является установка имени компьютера. Это требуется для правильной настройки /etc/sysconfig/network.

Создайте файл /etc/sysconfig/network file и введите имя компьютера запустив следующее:

echo «HOSTNAME=lfs» > /etc/sysconfig/network

«lfs» может быть заменено другим именем компьютера (как захотите, мы используем для примера имя lfs. Вам не надо вводить полное имя FQDN (Fully Qualified Domain Name).Эта информация будет храниться в файле /etc/hosts. Мы запишем ее позже.

Cоздание файла /etc/hosts

Если сетевая карта сконфигурирована, то вы должны определить IP адрес для системы и возможные алиасы (дополнительные имена) для использования в файле /etc/hosts. Синтаксис следующий:

myhost.mydomain.org aliases

Убедитесь, что введенный IP адрес системы является частью правильного адресного пространства, типа:

Class Networks A 10.0.0.0 B 172.16.0.0 through 172.31.0.0 C 192.168.0.0 through 192.168.255.0

Правильный IP адрес может быть 192.168.1.1. Правильное полное имя системы для этого IP может быть www.linuxfromscratch.org.

Если вы не хотите использовать сетевую карту, то вы таки должны ввести полное имя системы (FQDN)для правильной работы некоторых программ.

Если у вас не планируется использование сетевой карты, создайте следующий файл: /etc/hosts запустив команду:

cat > /etc/hosts << «EOF»

# Begin /etc/hosts (no network card version)

127.0.0.1 www.mydomain.com localhost

# End /etc/hosts (no network card version)

EOF

Если у вас есть сетевая карта и она настроена, или вы планируете использовать сетевую карту, то создайте следующий файл /etc/hosts, используя такую команду:

cat > /etc/hosts << «EOF»

# Begin /etc/hosts (network card version)

127.0.0.1 localhost.localdomain localhost

192.168.1.1 www.mydomain.org

# End /etc/hosts (network card version)

EOF

Естественно, адрес 192.168.1.1 и www.mydomain.org надо заменить на адрес и имя, которое вам больше нравится (или требуется ввести адрес и имя, которое попросил ввести сетевой/системный администратор и планируется, что эта машина будет частью существующей сети.

Настройка сетевых скриптов

Эта часть нужна для настройки сетевой карты.

Если у вас нет сетевой карты, вам не требуется создавать или настраивать файлы, относящиеся к сетевой карте. В этом случае удалите симлинк network из всех директорий (/etc/rc.d/rc*.d)

Настройка шлюза по умолчанию.

Если ваш компьютер является частью сети вам потребуется указать шлюз используемый по умолчанию для вашего компьютера. Это делается добавлением следующих значений в файл /etc/sysconfig/network. Запустите такую команду:

cat >> /etc/sysconfig/network << «EOF»

GATEWAY=192.168.1.2

GATEWAY_IF=eth0

EOF

Значения для GATEWAY и GATEWAY_IF надо изменить на установки вашей сети. GATEWAY должен содержать IP адрес шлюза по умолчанию, и GATEWAY_IF указывать на интерфейс сетевой карты через который использовать доступ к шлюзу по умолчанию.

Создание конфигурационных файлов для сетевой карты

Какой сетевой интерфейс будет запускаться и останавливаться сетевыми скриптами зависит от файлов расположенных в директории /etc/sysconfig/network-devices. Эта директория должна содержать файлы в формате ifconfig.xyz, где xyz– имя сетевого интерфейса (например eth0 или eth0:1).

Если вы решили переименовать или переместить директорию /etc/sysconfig/network-devices , убедитесь, что вы поправили файлы в /etc/sysconfig/rc на предмет новых путей к сетевым устройствам в скриптах.

Теперь, новые файлы созданные в директории /etc/sysconfig/network-devices содержат следующее. Этой командой создадим пример файла ifconfig.eth0 Now, new files are created in that directory containing the following. :

cat > /etc/sysconfig/network-devices/ifconfig.eth0 << «EOF»

ONBOOT=yes

IP=192.168.1.1

NETMASK=255.255.255.0

BROADCAST=192.168.1.255

EOF

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

Глава 8. Делаем систему LFS загрузочной.
Введение

Эта глава описывает шаги, необходимые для того, чтобы сделать вашу систему загрузочной. Здесь рассказывается о создании файла fstab, компиляции нового ядра для LFS системы, добавления необходимых значений в LILO, дабы вы увидели в строке приглашения возможность выбора LFS системы из списка.

Создание файла /etc/fstab

Система должна знать о разделах, которые есть в системе и о порядке их монтирования. Все разделы и порядок их монтирования перечисляется в файле /etc/fstab. Создадим такой файл /etc/fstab содержащий следующее:

cat > /etc/fstab << «EOF»

# Begin /etc/fstab

# filesystem mount-point fs-type options dump fsck-order

/dev/*LFS* / *fs-type* defaults 1 1

/dev/*swap* swap swap pri=1 0 0

proc /proc proc defaults 0 0

# End /etc/fstab

EOF

*LFS*, *swap* and *fs-type* должны быть заменены правильными значениями (например /dev/hda2, /dev/hda5 и reiserfs).

Когда добавляется раздел reiserfs, то значение 1 1 в конце строки должно быть заменено на 0 0.

Для более детальной информации значения полей в файле fstab смотрите man 5 fstab.

Рассмотрим другие строки, которые, возможно, вам придется добавить в ваш файл fstab . Для примера рассмотрим возможность включения devpts:

devpts /dev/pts devpts gid=4,mode=620 0 0

Другой пример, строка, позволяющая использовать устройства USB :

usbdevfs /proc/bus/usb usbdevfs defaults 0 0

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

Установка ядра Linux-2.4.19

Приблизительное время компиляции со всеми опциями по умолчанию: 4.20 SBU Необходимое дисковое пространство со всеми опциями по умолчанию: 181 MB

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

Необходимые телодвижения, которые вы должны совершить, это взять файл .config из дистрибутива исходников ядра и скопировать его в $LFS/usr/src/linux-2.4.19. В этом случае вам нет необходимости конфигурировать отдельные опции, и воспользоваться значениями по умолчанию. Если вы хотите сделать так, то сначала запустите команду make mrproper затем скопируйте файл .config снова, и запустите make menuconfig; далее запустите команду make oldconfig (может быть лучше в некоторых ситуациях. Смотрите README для более детальной информации по использованию make oldconfig).

Если вы внимательно используете модули для ядра, то вы должны подправить файл /etc/modules.conf. Информация имеющая отношение к модулям и конфигурации ядра в основном находится в документации к ядру, которая находится в каталоге /usr/src/linux-2.4.19/Documentation. Страница man page по modules.conf и файлы документации kernel HOWTO в http://www.tldp.org/HOWTO/Kernel-HOWTO.html могут также быть полезными.

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

make mrproper && make menuconfig && make dep && make bzImage && make modules && make modules_install && cp arch/i386/boot/bzImage /boot/lfskernel && cp System.map /boot

Примечание: путь arch/i386/boot/bzImage может различаться в зависимости от платформы.

Зависимости Linux

Последняя проверка на версии 2.4.17.

Bash: sh Binutils: ar, as, ld, nm, objcopy Fileutils: cp, ln, mkdir, mv, rm, touch Findutils: find, xargs Gcc: cc1, collect2, cpp0, gcc Grep: grep Gzip: gzip Make: make Gawk: awk Modutils: depmod, genksyms Net-tools: dnsdomainname, hostname Sed: sed Sh-utils: basename, date, expr, pwd, stty, uname, whoami, yes Textutils: cat, md5sum, sort, tail

Делаем систему LFS загрузочной.

Для того, что бы иметь возможность запускать LFS систему мы должны обновить наш загрузчик. Мы предполагаем, что ваша системы использует Lilo (наиболее распространенный загрузчик на данный момент).

Мы не будем запускать программу lilo из-под chroot. Запуск lilo под chroot может вызвать фатальные последствия с уничтожением или повреждением MBR, и мы будем использовать загрузочную дискету для запуска любых LFS систем .

Первое, мы должны выйти из режима chroot и скопировать файл ядра lfskernel в основную систему :

logout

cp $LFS/boot/lfskernel /boot

Следующий шаг – добавление записи в файл /etc/lilo.conf дабы мы могли выбрать нашу LFS систему при загрузке компьютера:

cat >> /etc/lilo.conf << «EOF»

image=/boot/lfskernel

label=lfs

root=

read-only

EOF

Значение должно быть заменено значением раздела на котором размещено ядро LFS .

Так же, если вы используете reiserfs для основного раздела, что значение read-only надо заменить на read-write.

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

/sbin/lilo -v

Последний шаг – синхронизация конфигурации lilo на дискете и на LFS системе:

cp /etc/lilo.conf $LFS/etc && cp $(grep «image.*=» /etc/lilo.conf | cut -f 2 -d "=") $LFS/boot


    Ваша оценка произведения:

Популярные книги за неделю