350d0c7d

m для создания имени пользователя,


Воспользуйтесь командой useradd - m для создания имени пользователя, его домашнего каталога и других переменных окружения; затем назначьте пароль командой passwd -e. До создания пароля учетная запись остается неактивной.
Далее приводится простейший вариант вызова. С флагом -m команда создает домашний каталог и копирует в него файлы из /etc/skel:
# useradd -m имя_пользователя
Как правило, в команду также включается полное имя пользователя с флагом -c (Comment, то есть «комментарий»). Поставьте четыре запятые после имени пользователя, чтобы остальные поля комментария (рабочий телефон и т. д.) остались пустыми.
# useradd -m -с Grace Hopper,,,, ghopper
Имя пользователя должно быть уникальным.
Теперь выполните команду passwd -e. Флаг -e означает, что пароль становится недействительным после первого входа, что заставляет пользователя сменить его:
# passwd -e ghopper Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Окружение пользователя формируется на основании стандартного содержимого /etc/default/useradd и /etc/skel. Конфигурация useradd по умолчанию отображается командой
# useradd -D

Введите команду adduser имя_пользователя и введите запрашиваемые данные:
# adduser anitab Adding user anitab... Adding new group anitab (1008). Adding new user anitab (1008) with group anitab.
8.6. Изменение учетной записи пользователя Creating new home directory /home/anitab. Copying files from /etc/ skel Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for anitab Enter the new value, or press ENTER for the default Full name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct [y/n]у
В командной строке adduser можно указать код UID, переопределяя значение по умолчанию:
# adduser --uid 1500 anitab
Стандартная конфигурация adduser задается в файле /etc/adduser.conf.




Воспользуйтесь командами usermod и chfn.
Изменять можно любые атрибуты, включая имя пользователя и код UID. Чтобы сменить имя, сначала укажите новое имя, а затем старое:
# usermod -l aborg anitab
Следующая команда изменяет UID (в следующем примере исходное значение 1050 меняется на 1200) без изменения имени пользователя. Сначала указывается новый код UID, затем имя:
# usermod -u 1200 anitab
Принадлежность пользователя к группам не изменяется. Все файлы в домашнем каталоге пользователя автоматически обновляются новым кодом UID. Тем не менее вам придется вручную найти и изменить все файлы за пределами домашнего каталога (crontab, почтовые каталоги, временные файлы /tmp и файлы в общих каталогах). Для поиска файлов можно воспользоваться командой find с указанием исходного кода UID, если вы хотите просмотреть список файлов перед внесением изменений:
# find / -uid 1050 /usr/src/include/lber.h /usr/src/include/ldap.h /usr/src/include/ldbm.h
Смена владельца файлов осуществляется командой chown:
# chown 1200 /usr/scr/include/lber.h
Последовательная смена владельца для каждого файла — занятие довольно утомительное. Команды chown и find могут выполнить эту работу за вас:
# find / -uid 1050 -exec chown -v 1200 {} \; changed owner of '/usr/src/include/lber.h' to 1200 changed owner of '/usr/src/include/ldap.h' to 1200 changed owner of '/usr/src/include/ldbm.h' to 1200
Следующая команда перемещает домашний каталог пользователя со всем содержимым. Если новый каталог не существует, он автоматически создается. Сначала указывается новый каталог, а затем имя пользователя. Обязательно используйте флаги -d и -m:
# usermod -d /server1/home/aborg/ -m aborg
Изменение данных GECOS:
# chfn aborg
Пользователь может передать при вызове chfn данные GECOS по своему усмотрению. Исключение составляют два поля: полное имя и «прочее». Содержимое этих полей может редактироваться только суперпользователем.


Учетная запись удаляется командой userdel. Поиск файлов, принадлежащих пользователю, осуществляется командой find.
Удаление учетной записи:
# userdel aborg
Чтобы команда userdel сработала, пользователь не может находиться в системе, и под его именем не должны быть запущены процессы.
Команда userdel удаляет данные пользователя из всех системных файлов (/etc/passwd, /etc/shadow, /etc/group), но не трогает файлы, принадлежащие этому пользователю. Чтобы удалить домашний каталог пользователя и почтовый ящик, добавьте флаг -r:
# userdel -r aborg
Другие файлы (такие, как crontab и файлы данных вне домашнего каталога) приходится искать отдельно:
# find / -uid 1200


Воспользуйтесь программой slay:
# slay foober slay: -KILL is kicking foober's butt! slay: Whoa. I have the power supreme.
Программа slay находит и уничтожает все процессы указанного пользователя, благодаря чему вам не приходится искать и завершать их самостоятельно.


Чтобы временно деактивировать учетную запись, заблокируйте пароль пользователя ключом -l (lock):
8.10. Управление паролями # passwd -l aborg Password changed.
Следующая команда снимает блокировку с учетной записи:
# passwd -u aborg



Операции назначения и настройки паролей осуществляются командой passwd.
Сброс или изменение пароля:
# passwd aborg
Пользователь также может сменить свой пароль:
>aborg@server04:~$ passwd
Следующая команда ограничивает срок действия пароля aborg шестью месяцами, с выдачей предупреждения за пять дней:
# passwd -х 180 -w 5 -i 1 aborg
Чтобы просмотреть пароли пользователя, воспользуйтесь командой
# passwd -S option aborg P 02/18/2004 0 10 5 1


Воспользуйтесь командой groupadd.
Команда создает новую группу по системным значениям, настроенным в /etc/default/useradd и /etc/skel/:
# groupadd newgroup
Системная группа создается с ключом -r:
# groupadd -r newgroup
Ключ -r является специфическим для Red Hat. Если в вашей версии groupadd он не поддерживается, укажите следующий доступный номер системной группы:
# groupadd -g 127 newgroup
Следующий доступный номер группы можно узнать из файла /etc/group.


Сначала, если потребуется, переназначьте номера групп редактированием файла /etc/group. Просто скопируйте данные пользователей и вставьте их в другую группу. Затем удалите группу командой groupdel, после чего воспользуйтесь командами find и chgrp для поиска и передачи права владения файлами другой группе.
Удаление группы:
# groupdel имя_группы
Удаление группы считается хлопотной операцией, потому что не существует утилит для автоматического переноса/удаления файлов или пользователей, входящих в группу. Вам придется самостоятельно найти их и изменить коды GID вручную:
# find / -gid 750 /usr/src/include/lber.h /usr/src/include/ldap.h /usr/src/include/ldbm.h
Изменения можно вносить последовательно:
# chgrp 800 /usr/src/include/lber.h ...
А можно выполнить замену одновременно посредством совместного использования find и chgrp:
# find / -gid 750 -exec chgrp -v 800 {} \; См. также
groupdel(8), find(1), chgrp(1); раздел 8.6.



Задача может быть решена как командой adduser, так и useradd. С adduser это делается примерно так:
# adduser --system --no-create-home --group squid Adding system user squid...


Создание системных групп сценарием addgroup происходит следующим образом:
# addgroup --system группа
В командной строке можно передать код GID, переопределяя значение по умолчанию. Не забудьте придерживаться схемы нумерации групп, принятой в вашем дистрибутиве Linux (или в вашей организации):
# addgroup --system --gid 300 группа См. также
addgroup(8); раздел 8.11.
8.16. Проверка целостности файлов паролей


Отредактируйте файл /etc/groups вручную. Просто скопируйте и вставьте записи; это самый быстрый способ.


Файлы /etc/passwd и /etc/shadow проверяются командой pwck, а файлы /etc/group и /etc/gshadow — командой grpek:
# pwck # grpek
Если команда завершается без выдачи сообщений, значит, ошибки не обнаружены. В противном случае команда выводит перечень ошибок. Ошибки нужно будет исправить, иначе работа программы завершится. Чтобы ограничиться просмотром всех ошибок, запустите программу в режиме «только чтения»:
# pwck -r # grpek -r


Воспользуйтесь сценарием mass_useradd. Это сценарий командного процессора, поэтому он должен работать практически везде. Вам также понадобится сценарий
8.17. Серийное добавление новых пользователей mass_passwd (листинг 8.2). Сохраните эти два сценария в одном каталоге. Также следует установить утилиту pwgen, генерирующую пароли. Создайте список имен и паролей в формате:
имя_пользователя: имя фамилия
Также можно добавить дополнительные данные GECOS:
dawns:Dawn Marie Schroder,,123-4567,trainers
Затем запустите сценарий mass_useradd (листинг 8.1). Сценарий создает записи в /etc/passwd, /etc/group и /etc/shadow, домашние каталоги, персональные группы и пароли, которые становятся недействительными после первого использования.
Следующая команда приказывает mass_useradd использовать список новых пользователей из файла newusers с заменой/созданием выходного файла newlogins.txt:
sh mass_useradd < newusers > newlogins.txt
Присоединение новых имен и паролей к файлу newlogins.txt:
sh massuseradd < newusers >> newlogins.txt
Помимо выходного файла, который представляет собой обычный список, mass_passwd создает для каждого пользователя отдельный файл с инструкциями. Инструкции распечатываются и раздаются пользователям. Эти файлы, а также файл журнала хранятся в домашнем каталоге пользователя, запустившего сценарий (обычно root):
# ls /root/mass_passwds dawns.passwd.txt nikitah.passwd.txt mass_passwd.log rubst.passwd.txt



Воспользуйтесь сценарием mass_passwd из раздела 8.17. Сценарий позволяет задать состав пользователей тремя разными способами:
# mass_passwd пользователь1 пользователь2 ... # masspasswd -g группа группа... # mass_passwd -a
В первом случае передается список имен пользователей, разделенных пробелами.
Во втором случае изменяются пароли пользователей, входящих в указанные группы.
В третьем случае изменяются все пароли из /etc/passwd.



Вставьте список имен прямо в файл /etc/group.
Далее описан быстрый способ построения списка пользователей для вставки в /etc/group. Он основан на схеме нумерации UID, позволяющей легко отсортировать нужную группу пользователей. Для примера воспользуемся схемой «Trainers/Coaches/Players», описанной в разделе 8.2. Добавим в группу Trainers несколько новых членов:
$ awk -F: '($3 >= 1050) && ($3 <= 1060) { print $1}' /etc/passwd | tr '\n' ',' bcool,bkind,frnow,kthxbye,oknodo
Теперь скопируйте и вставьте список в /etc/group.
А если в вашей системе нет аккуратной, четкой схемы нумерации UID? Воспользуйтесь данными GECOS. Выберите одного из полей для хранения метки. Поле «прочее» лучше всего подходит для этой цели, поскольку пользователи не могут изменять его по своему усмотрению. Оно находится в данных GECOS — пяти полей, разделенных запятыми. Данные GECOS выглядят примерно так:
bcool:х:1300:1300:Bob Cool,,,,trainer:/home/bkind:/bin/bash bkind:x:1055:1055:Bev Kind,,,,trainer:/home/bkind:/bin/bash
После добавления меток выборка пользователей легко производится при помощи grep и awk:
$ cat /etc/passwd grep trainer awk -F: '{ print $1}' | tr '\n' ',' bkind,bcool, 8.20. Временное использование привилегий root См. также
passwd(5), awk(1).



Когда потребуется выполнить какую- нибудь административную операцию, воспользуйтесь командой su (Switch User):
carla@windbag:~$ su Password: root@windbag:/home/carla#
Затем вернитесь к своей «основной личности»:
root@windbag:/home/carla# exit carla@windbag:~$
Переключение на root с восстановлением конфигурации окружения и командного процессора root:
carla@windbag:~$ su - Password: root@windbag:/home/carla~#
Переход на другой командный интерпретатор:
$ su - --shell=tcsh Password:
Доступные командные процессоры перечислены в /etc/shells.


Воспользуйтесь sudo — командой, которая предоставляет ограниченные права root конкретным пользователям для решения конкретных задач и регистрирует их действия без сообщения пароля root.
Допустим, имеется пользователь jhaugh, которому вы хотите предоставить полные права root. Поскольку пользователи sudo имеют собственные пароли, пароль root остается защищенным. Отредактируйте файл /etc/sudoers командой visudo — файл открывается в редакторе по умолчанию.
# visudo # Файл sudoers # # Этот файл ДОЛЖЕН редактироваться командой 'visudo' # с правами root. # За дополнительной информацией о записи в файл # sudoers обращайтесь кman-странице. # # Спецификация псевдонимов хостов # Спецификация псевдонимов пользователей # Спецификация псевдонимов команд # Спецификация привилегий пользователей root ALL=(ALL) ALL
Для начала создайте псевдоним хоста:
Host_Alias LOCALHOST = localhost
В секции «Спецификация привилегий пользователей» («User privilege specification») добавляются отдельные пользователи:
jhaugh ALL=(ALL) ALL
Эта строка предоставляет jhaugh привилегии root для выполнения любых операций в системе и на подключенных компьютерах. Допустим, вы хотите предоставить другому пользователю tgwynne привилегии root только на локальном компьютере. Включите следующую запись:
tgwynne LOCALHOST = ALL
А пользователю msmith разрешается только выключение локального компьютера:
msmith LOCALHOST=/sbin/shutdown, /sbin/halt 8.21. Временное предоставление привилегий root командой sudo
Предоставление группам обычных пользователей права выключения своих компьютеров:
# Спецификация псевдонимов хостов Host_Alias LOCALHOST = localhost # Спецификация псевдонимов пользователей User_Alias USERS = tgwynne, msmith, jhaugh, \ abyron, jwinters # Спецификация псевдонимов команд Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown, /usr/sbin/halt, \ /usr/sbin/reboot, /usr/sbin/poweroff # Спецификация привилегий пользователей USERS LOCALHOST = SHUTDOWN
Вызов команды sudo выглядит так:
$ sudo /usr/sbin/halt
Команда запрашивает у пользователей их пароли, после чего завершается. Чтобы узнать, выполнение каких команд им разрешено, пользователи могут выполнить следующую команду:
$ sudo -l User jhaugh may run the following commands on this host: (ALL) ALL
Команда sudo фиксирует ошибки в системном журнале и передает сообщение root:
$ sudo /usr/sbin/halt carla is not in the sudoers file. This incident will be reported.
Вы можете определять группы серверов и предоставлять пользователям привилегии для группы:
# Спецификация псевдонимов хостов Host Alias FILESERVERS = hostl, host2, host3 # Спецификация псевдонимов пользователей User_Alias FILESERVERADMINS = jhaugh, abyron, jwinters # Спецификация псевдонимов команд Cmnd_Alias FILEUTILS = /bin/chgrp, /bin/chmod, \ /bin/chown, /bin/cp, /bin/dd, /bin/df, \ /bin/dir, /bin/dircolors, /bin/du, /bin/install, \ /bin/ln, /bin/ls, /bin/mkdir, /bin/mkinfo, \ /bin/mknod, /bin/mv, /bin/rm, /bin/rmdir, \ /bin/shred, /bin/touch, /bin/vdir, sync # Спецификация привилегий пользователей FILESERVADMINS FILESERVERS = FILEUTILS


Воспользуйтесь пакетом Linux Disk Quota. Пакет содержит ряд компонентов, в том числе quota, edquota, quotacheck и repquota.
Сначала отредактируйте файл /etc/fstab и выберите разделы, для которых будут установлены квоты. Квоты могут устанавливаться как для отдельных пользователей (usrquota), так и для групп (grpquota). Оба вида квот могут действовать одновременно:
/dev/hda6 / ext3 defaults 0 1 /dev/hda7 /home ext3 defaults,usrquota,grpquota 0 1
Перемонтируйте файловую систему:
# mount -о remount /home
Сценарий Quota init запускает программу quotacheck, которая анализирует систему, создает базу данных использования дискового пространства и создает файлы квот.
Затем назначьте квоты пользователям. При этом файл конфигурации открывается в редакторе по умолчанию:
# edquota -u vhenson Disk quotas for user vhenson (uid 1550): Filesystem blocks soft hard inodes soft hard /dev/hda7 550466 0 0 47466 0 0
Мягкое ограничение (soft limits) предоставляет нарушителю отсрочку с выдачей предупреждений. Жесткое ограничение (hard limits) вступает в силу немедленно. Чтобы задать ограничение, просто отредактируйте файл:
# edquota -u vhenson Disk quotas for user vhenson (uid 1550): Filesystem blocks soft hard inodes soft hard /dev/hda7 550466 650000 700000 47466 0 0
Блоки всегда имеют размер 1024 байта, поэтому 650 000 блоков составляют около 665 Мбайт. 8.22. Дисковые квоты
Сохраните и закройте файл. Убедитесь в том, что квота вступила в силу:
# quota vhenson Disk quotas for user vhenson (uid 1550): 650000 700000
Назначение квот группам осуществляется следующим образом:
# edquota -g engineers
Если жадный пользователь использует всю групповую квоту, значит, группе не повезло — другим ничего не остается.
Следующая команда вызывает редактор по умолчанию для назначения отсрочки для мягких ограничений во всей файловой системе:
# edquota -t Grace period before encforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda3 7days 7days
Один из пользователей может использоваться в качестве «прототипа» для определения квот нового пользователя:
# edquota -p vhenson dnorth
или сразу нескольких новых пользователей:
# edquota -p vhenson "awk -F: '$3 > 999 {print $1}' /etc/passwd"
Также можно перечислить сразу нескольких пользователей:
# edquota -p vhenson dnorth jvesperman sanvin
Несомненно, вы захотите следить за использованием квот. Следующая команда выводит общесистемный отчет о текущем расходовании дискового пространства:
# repquota -a
Чтобы ограничиться конкретной файловой системой, используйте команду:
# repquota /home


Воспользуйтесь командой chmod (CHange MODe). Смена разрешений может выполняться только суперпользователем (root) и владельцем файла. 9.3. Выполнение массовых операций командой chmod Например, следующая команда предоставляет владельцу файла доступ для чтения и записи к файлу /archive/datafile. Ни один другой пользователь, кроме root, вообще не сможет обратиться к этому файлу:
$ chmod -v 600 /archive/datafile mode of '/archive/datafile' changed to 0600 (rw-------)
В следующем примере владелец файла /shared/list разрешает его чтение всем желающим, но изменения в файл могут вноситься только владельцем файла и root:
$ chmod -v 644 /shared/list mode of '/archive/datafile' changed to 0644 (rw-r--r--)
Чтобы сценарий можно было запустить, в атрибутах файла необходимо установить бит исполнения. Следующая команда разрешает редактирование сценария только пользователю, а чтение и исполнение — всем желающим:
$ chmod 755 /shared/somescript
У каталогов бит исполнения всегда должен быть установлен, иначе они не будут работать:
$ chmod 755 /shared
Назначение разрешений каталогу со всем содержимым, включая подкаталоги, производится с ключом -R. Ключ -v включает режим подробного вывода, чтобы вы видели, какие действия выполняет команда:
% chmod -R -v 755 /shared


Команда chmod поддерживает операции со списками файлов. Для построения списков можно воспользоваться командой find или метасимволами командного процессора.
Следующая команда делает несколько файлов доступными только для чтения для всех пользователей:
$ chmod 444 file.txt file2.txt file3.txt
Чтобы сделать все файлы текущего каталога доступными для чтения/записи для владельца и группы, но без изменения разрешений самого каталога, воспользуйтесь командой:
$ find . -type f -exec chmod -v 660 {} \;
Назначение разрешений для каталога и всего содержимого, включая подкаталоги:
$ chmod -R -v 755 /shared
В следующем примере чтение/запись всех файлов с расширением .txt в текущем каталоге разрешается владельцу, а всем остальным разрешается только чтение:
$ chmod -v 644 *.txt
Изменение всех файлов текущего каталога, начинающихся с определенного префикса:
$ chmod -v 644 apt* См. также
info chmod.



Самым распространенным применением символических обозначений chmod является добавление бита исполнения в атрибуты файла без изменения остальных разрешений:
$ chmod +x сценарий
По умолчанию используется режим a (All), поэтому данный пример разрешит исполнение сценария всем пользователям. Следующая команда устанавливает бит исполнения только для владельца файла: 9.4. Настройка разрешений в символьном формате chmod $ chmod u+x сценарий
Также существует возможность сброса отдельных битов. Следующая команда лишает группу и прочих пользователей права исполнения:
$ chmod go-x сценарий
Быстрая установка бита setgid для каталога с целью создания общего каталога. Все файлы, созданные в этом каталоге, будут принадлежать той же группе, что и сам каталог:
$ chmod +s /общий-каталог
Сброс всех разрешений для группы и прочих пользователей:
$chmod go= сценарий
Следующая команда предоставляет группе те же разрешения, которыми обладает владелец файла:
$chmod g=u сценарий


Воспользуйтесь командой chown и смените владельца и/ или группу, которой принадлежит файл:
# chown пользователь файл # chown пользователь:группа файл # chown :группа файл
Пример:
$ chown -v carlas:share index.txt changed ownership of 'index.txt' to carlas:share $ chown -v :share toc.txt changed ownership of 'toc.txt' to :share


Команда chown позволяет выполнять некоторые массовые операции. Также можно воспользоваться командой find или метасимволами командного процессора.
9.7. Создание общих каталогов с использованием setgid и бита закрепления Чтобы сменить владельца сразу для нескольких файлов, передайте список файлов, разделенный пробелами:
# chown carlas file.txt file2.txt file3.txt
Список файлов также можно задать при помощи метасимволов командного процессора:
# chown carlas *.txt
Следующая команда передает все файлы пользователя другому пользователю:
# chown -R -v --from valh piglet /shared/scripts
To же самое можно сделать при помощи команды find:
# find /-user valh -exec chown -v piglet {} \;
Команда find также дает возможность находить файлы по коду UID, что не может сделать chown:
# find / -uid 1050 -exec chown -v 1200 {} \;
Смена владельца каталога со всеми подкаталогами и файлами, с подробным выводом:
# chown -R -v piglet /shared/scripts: changed ownership of 'scripts/backups.tgz' to piglet changed ownership of 'scripts/fake-spec-rpm' to piglet
В команде можно использовать как имя пользователя, так и UID. Если учетная запись пользователя была удалена и в системе остались «бесхозные» файлы, то для их поиска придется использовать UID. См. также
info chown; раздел 8.6.



Воспользуйтесь битом setgid для автоматического назначения файлов принадлежности к общей группе.
Вот как это делается в восьмеричной записи:
# chmod -v 2775 /общий-каталог
Также можно использовать символическую запись:
# chmod -v +s /общий-каталог


Разрешения по умолчанию определяются маской umask. Чтобы узнать текущее состояние маски, введите команду:
$ umask 0022
или
$ umask -S u=rwx,g=rx,o=rx
Чтобы временно назначить новую маску до конца текущего сеанса, введите команду
$ umask 0002
Долгосрочное изменение маски umask обеспечивается включением строки umaskxxxx в файл ~/.bashrc. Часто используемые значения umask перечислены в табл. 9.3.
Таблица 9.3. Часто используемые значения umask
Umask Пользователь Группа Прочие
0002 Все Все Чтение и исполнение
0022 Все Чтение и исполнение Чтение и исполнение
0007 Все Все Нет
0077 Все Нет Нет

Используйте команды mount и umount. Пример монтирования дисковода CD-ROM:
# mount -r -t iso9660 /dev/scd0 /cdrom
Ключ -r означает доступ только для чтения; ключ -t определяет тип файловой системы. Строка /dev/scd0 определяет имя, назначаемое устройству ядром, /cdrom — каталог, в котором монтируется устройство. Он должен присутствовать в системе перед монтированием диска.
Тип файловой системы определяется командой file:
$ file - < /dev/scd0 /dev/stdin: ISO 9660 CD-ROM filesystem data 'Data1
При монтировании диска CD-ROM ключ -r можно не указывать. Команда выдаст предупреждение, но диск смонтирует:
# mount -t iso9660 /dev/scd0 /cdrom mount: block device /dev/scd0 is write-protected, mounting read-only
Следующая команда монтирует дискету для чтения/записи:
# mount -w /dev/fd0 /floppy
Следующая команда монтирует флэш-диск с интерфейсом USB. Ключ noatime должен использоваться для перезаписываемых носителей с ограниченным количеством операций перезаписи (таких, как CD/DVD-RW или флэш-диски):
# mount -w -о noatime /dev/sdal /memstick
Смонтированное устройство демонтируется командой
# umount /memstick
Возможно, вы получите ответ вида
# umount /memstick umount: /memstick: device ns busy
9.10. Настройка монтирования файловых систем в /etc/fstab Это означает, что приложение (командный интепретатор, файловый менеджер) читает данные из файловой системы. Дополнительная информация выводится командой lsof (LiSt Open Files):
$ lsof /memstick COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME gs 938 dawnm 128r DIR 2.0 1024 12 /memstick/may-04.pdf bash 938 dawnm 129r DIR 2.0 1024 24 /memstick
Далее можно либо закрыть приложения, либо убить их одной командой:
# kill -9 `lsof -t /memstick`
Команда mount может выполняться только суперпользователем root. Чтобы другие пользователи могли монтировать съемные диски, необходимо отредактировать /etc/fstab (см. следующий раздел).


Добавьте в файл /etc/fstab записи с определением точек монтирования и разрешений доступа. В следующем примере показан пример /etc/fstab с разделом Linux, двумя разделами Windows и съемными носителями:



Воспользуйтесь командами dmesg и fdisk. Команда dmesg находит имена устройств, а команда fdisk отображает нумерацию разделов на жестких дисках. Возможно, вам также поможет официальный список имен /dev по адресу http://www.lanana.org/docs/device-list/devices.txt (если в вашей системе установлены исходные тексты ядра, возможно, файл devices.txt находится в каталоге /usr/src/).
Следующая команда ищет информацию CD-устройств в выходных данных dmesg:
$ dmesg | grep -i cd hdc: ATAPI CDROM. ATAPI CD/DVD-ROM DRIVE hdc: ATAPI 40X CD-ROM DRIVE. 128K cache. UDMA (33)
Быстрый поиск в devices.txt дает следующий результат:
Second IDE hard disk/CD-ROM interface 0=/dev/hdc Master: whole disk (or CD-ROM)
Не обращайте внимания на 0=; имя устройства — /dev/hdc. А вот как выглядят дисководы CD/DVD, использующие подсистему IDE/SCSI:
$ dmesg | grep -i cd hdb: TOSHIBA DVD-ROM SD-M1202. ATAPI CD/DVD-ROM drive hdc: LITE-ON LTR-24102B. ATAPI CD/DVD-ROM drive ide-cd: ignoring drive hdb ide-cd: ignoring drive hdc Type: CD-ROM ANSI SCSI revision: 02 Type: CD-ROM ANSI SCSI revision: 02 Attached scsi CD-ROM sr0 at scsi0. channel 0. id 0. lun 0 Attached scsi CD-ROM sr1 at scsi0, channel 0. id 1. lun 0 scd0: scsi3-mmc drive: 32x/32x cd-rw xa/form2 cdda tray Uniform CD-ROM driver Revision: 3.12 scd1: scsi3-mmc drive: 131x/40x writer cd/rw xa/form2 cdda tray
Итак, устройствам соответствуют имена /dev/scd0 и /dev/scd1.
Для жестких дисков приходится указывать конкретные разделы, поскольку каждый раздел является самостоятельным блочным устройством. Команда fdisk -l выводит информацию обо всех разделах на всех обнаруженных жестких дисках:
# /sbin/fdisk -l Disk /dev/hda: 20.5 GB. 20576747520 bytes 255 heads, 63 sectors/track, 2501 cylinders Units - cylinders of 16065 * 512= 8225280 bytes Device Boot Start End Blocks Id System /dev/hdal * 1 893 7172991 7 HPFS/NTFS /dev/hda2 894 1033 1124550 с W95 FAT32 (LBA) /dev/hda4 1034 2501 11791710 f W95 Exfd (LBA) /dev/hda5 2437 2501 522081 82 Linux swap /dev/hda6 1034 1670 5116639+ 83 Linux /dev/hda7 1671 2436 6152863+ 83 Linux
Скопируйте имя устройства из столбца Device. А вот как команда fdisk отображает устройства USB:
Disk /dev/sda: 65 MV, 65536000 bytes 8 heads, 32 sectors/track, 500 cylinders



Воспользуйтесь командами mkdir и touch.
Команда mkdir создает каталоги. Создание нового подкаталога в текущем каталоге:
$ mkdir photos
Следующая команда создает новый каталог верхнего уровня (эта операция разрешена только суперпользователю):
# mkdir /local_bins
При создании каталога можно указать разрешения:
# mkdir -m 755 /shared
Чтобы создать подкаталог и все его родительские каталоги, используйте ключ -p:
$ mkdir -p photos/scanned/jpgs/thumbs
Большинство файлов создается программами (текстовыми и графическими редакторами, компиляторами и т. д.). Пустой файл также можно создать командой touch:
$ touch newfile.txt


Используйте команду rm (ReMove) — но будьте внимательны! Команда rm удаляет файлы и каталоги без предупреждения.
Удаление одного файла с расширенным выводом:
$ rm -v game-stats.txt removed 'game-stats.txt'
Удаление с запросом подтверждения:
$ rm -vi dpkglist rm: remove regular file 'dpkglist'?y removed 'dpkglist'
Ключ -r (Recursive) обеспечивает удаление каталога со всеми файлами и подкаталогами:
$ rm -rvi /home/games/stats/baseball



Воспользуйтесь командами ср и mv. Следующая команда копирует два файла из текущего рабочего каталога в каталог ~/images2:
$ ср -v navbar.gif redheart.gif ~/images2 'navbar.gif -> /home/terri/images2/navbar.gif' 'redheart.gif -> /home/terri/images2/redheart.gif'
При перезаписи файлов можно воспользоваться ключом -b для создания резервных копий старых файлов в приемном каталоге:
$ ср -bv icon-zip.gif main.gif ~/data2 'icon-zip.gif' -> '/home/terri/data2/icon-zip.gif' (backup: '/home/terri/data2/iconzip. gif~') 'main.gif' -> '/home/terri/data2/main.gif' (backup: '/home/terri/data2/main.gif~')
Для сохранения полного пути к файлу используется ключ --parents:
$ ср -v --parents -/homes/images/kitchen.jpg ~/data2 '/home/terri/homes/images/kitchen.jpg' -> '/home/terri/data2/homes/images/kitchen.jpg'
Ключ -s создает мягкие ссылки на файлы вместо копирования:
$ cp -s navbar.gif redheart.gif ~/images2
Ключ -r копирует каталог со всеми подкаталогами:
$ ср -rv -/homes/images/ /shared/archives
Операции перемещения и переименования осуществляются командой mv. Следующая команда перемещает два файла в другой каталог:
$ mv -v about.gif arrow.gif ~/data2 'about.gif' -> '/home/terri/data/about.gif' 'arrow.gif' -> '/home/terri/data/arrow.gif'
Пример переименования файла:
$ mv -v downloads.gif email.gif 'downloads.gif' -> 'email.gif'


Первый способ: загрузите систему с диска Knoppix и воспользуйтесь QTParted — замечательным графическим приложением, которое создает, удаляет, перемещает и изменяет размеры разделов без уничтожения данных. Программа даже позволяет изменять размеры разделов NTFS.
Также можно воспользоваться программой fdisk. Пример создания первичного раздела:
# fdisk /dev/hda The number of cylinders for this disk is set to 2501. There is nothing wrong with that, but this is larger than 1024. and could in certain setups cause problems with: 1) software that runs at boot time (e.g.. old versions of LILO) 2) booting and partitioning software from other OSs (e.g.. DOS FDISK. OS/2 FDISK) Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) p Partition number (1-4): 3 First cylinder (511-1232, default 511): 511 Last cylinder or +size +sizeM or +sizeK (511-1232, defaultl232): +3000M Command (m for help): w The partition table has been altered! Calling ioctl() to re-read the partition table Syncing disks #
Вот и все. Изменения можно отменить вплоть до того момента, когда нажатие w запишет новую таблицу разделов на диск. Клавиша m выводит меню команд, а клавиша q завершает работу программы.
Чтобы сохранить какие-либо данные в новом разделе, необходимо перезагрузить компьютер и разместить в разделе файловую систему (см. следующий раздел).


Воспользуйтесь командой той файловой системы, которую вы собираетесь использовать.
Ext2 # mke2fs /dev/hda3 Ext3 # mke2fs-j /dev/hda3 ReiserFS # mkreiserfs /dev/hda3 JFS # mkfs.jfs /dev/hda3 XFS # mkfs.xfs /dev/hda3


Загрузите свежие исходные тексты ядра и откомпилируйте ядро с использованием существующего файла .config, добавив в него новые возможности. Предварительно сделайте следующее:
  • убедитесь в том, что на диске имеется не менее 500 Мбайт свободного пространства для процесса сборки;
  • распечатайте выходные данные dmesg, lscpi, cat/proc/cpuinfo и lsusb (за дополнительной информацией обращайтесь к главе 5);
  • создайте резервную копию всех данных и держите под рукой загрузочный диск аварийного восстановления;
  • найдите файл .config ядра.
10.2. Добавление новых возможностейв ядро 2.4 Чтобы добавить новые возможности в существующее ядро, загрузите новые исходные тексты той лее версии ядра. Версия ядра выводится командой uname:
$ uname -r 2.4.22
Распакуйте новые исходные тексты ядра в подкаталог, находящийся в вашем домашнем каталоге, — например, ~/src:
$ tar xvjf linux-2.4.22.tar.bz2
Отредактируйте make-файл нового ядра (~/src/linux-2.4.22/Makefile) и присвойте новое значение параметру EXTRAVERSION — например, EXTRAVERSION=-newkernel.
Выполните следующие команды из каталога /~/src/linux-2.4.22:
$ make mrproper
Скопируйте файл .config в каталог /~/src/linux-2.4.22. Переходите к настройке нового ядра. Программа конфигурации задаст многочисленные вопросы; на этом этапе выбираются новые возможности:
$ make oldconfig
Выполните следующие команды:
$ make dep $ make bzImage $ make modules $ su # make modules_install # cp ~/src/linux-2.4.22/arch/i386/boot/bzImage /boot/vmlinuz-2.4.22-new-kernel # cp ~/src/linux-2.4.22/System.map /boot/System.map-2.4.22-new-kernel
Наконец, чтобы использовать новое ядро, включите его в загрузчик и перезагрузите компьютер. В GRUB соответствующая запись выглядит примерно так:
title Kernel 2.4.22, new kernel root (hd0.0) kernel /boot/vmlinuz-2.4.22-new-kernel root=/dev/hda1 ro
Пользователи LILO делают следующее:
image=boot/vmlinuz-2.4.22-new-kernel label=Kernel 2.4.22, new kernel root=/dev/hda1 read-only
И не забудьте перезапустить LILO, чтобы новая конфигурация была записана в загрузочную запись:
# /sbin/lilo
Сохраните копию нового файла .config в каталоге за пределами дерева сборки, чтобы файл не был случайно удален или заменен. Присвойте ему новое, содержательное имя:
$ cp ~/src/linux-2.4.22/.config ~/kernel-configs/.config-2.4.22-jan-04
Если вы убедились в том, что новое ядро работает нормально, можно удалить старое ядро, его каталог /lib/modules/$VERSION, дерево сборки и записи загрузчика (а если не хотите, оставьте их в системе).



Загрузите новые исходные тексты той же версии ядра, откомпилируйте новое ядро и настройте его конфигурацию «с нуля». Версия ядра выводится командой uname:
$ uname -r 2.4.22
10.3. Усечение типового ядра 2.4 Предварительно сделайте следующее:
  • убедитесь в том, что на диске имеется не менее 500 Мбайт свободного пространства для процесса сборки;
  • распечатайте выходные данные dmesg, lscpi, cat/proc/cpuinfo и lsusb (за дополнительной информацией обращайтесь к главе 5);
  • создайте резервную копию всех данных и держите под рукой загрузочный диск аварийного восстановления.

Распакуйте новые исходные тексты ядра в подкаталог, находящийся в домашнем каталоге,— например, ~/src :
$ tar xvjf linux-2.4.22.tar.bz2
Отредактируйте make-файл нового ядра (~/src/unux-2.4.22/Makefile) и присвойте новое значение параметру EXTRAVERSION — например, EXTRAVERSION=-slim-kernel. Выполните следующие команды из каталога /~/src/linux-2.4.22:
$ make mrproper $ make menuconfig $ make dep $ make bzImage $ make modules $ su # make modulesinstall # cp ~/src/linux-2.4.22/arch/i386/boot/bzImage /boot/vmlinuz-2.4.22-new-kernel # cp ~/src/linux-2.4.22/System.map /boot/System.map-2.4.22-new-kernel
В процессе настройки ядра следует помнить, что вы начинаете «с пустого места», поэтому необходимо включить каждую используемую функцию. Также проследите за тем, чтобы ненужные функции не включались. Некоторые базовые возможности, которые вам наверняка понадобятся:
  • поддержка загружаемых модулей, встроенная в ядро;
  • поддержка двоичных форматов a.out, ELF и MISC (в меню General Setup);
  • поддержка всех загрузочных устройств (дисков IDE, CD-ROM, флоппи-дисководов, дисков SCSI и USB), встроенная в ядро. Если не включать эти функции или оформить их в виде модулей, для загрузки системе понадобится ramdisk (образ initrd).

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


Создайте резервную копию всех данных и держите под рукой диск аварийного восстановления.
Распечатайте выходные данные dmesg, lscpi, cat/proc/cpuinfo и lsusb. Распакуйте новые исходные тексты ядра в подкаталог, находящийся в домашнем каталоге,— например, ~/src:
$ tar xvjf linux-2.4.25.tar.bz2
Отредактируйте make-файл нового ядра (~/src/linux-2.4.25/Makefile) и присвойте новое значение параметру EXTRAVERSION — например, EXTRAVERSION=-newkernel.
Выполните следующие команды из каталога /~/src/linux-2.4.25:
$ make mrproper
Чтобы использовать существующий файл .config, скопируйте его в ~/src/linux-2.4.25 и продолжайте выполнять приведенные инструкции. В противном случае вернитесь к разделу 10.3.
Выполните следующие команды:
$ make oldconfig $ make dep $ make bzImage $ make modules $ su # make modules_install # cp ~/src/linux-2.4.25/arch/i386/boot/bzImage /boot/vmlinuz-2.4.25-new-kernel # cp ~/src/linux-2.4.25/System.map /boot/System.map-2.4.25-new-kernel
Включите новое ядро в загрузчик и перезагрузите компьютер.
10.5. Построение ядра 2.6


В данном примере будет использоваться ядро версии 2.6.3. Создайте резервную копию всех данных и держите под рукой загрузочный диск аварийного восстановления.
Распечатайте выходные данные dmesg, lscpi, cat/proc/cpuinfo и lsusb.
Загрузите и распакуйте новые исходные тексты ядра в подкаталог, находящийся в домашнем каталоге, — например, ~/src. Перейдите в каталог верхнего уровня нового дерева исходных текстов (~/src/linux-2.6.3).
Отредактируйте make-файл нового ядра (~/src/linux-2.6.3/Makefile) и присвойте новое значение параметру EXTRAVERSION — например, EXTRAVERSION=-test. Выполните следующие команды:
$ make mrproper $ make xconfig $ make $ su # make moduies_instail # cp ~/src/linux-2.6.3/arch/i386/boot/bzImage /boot/vmlinuz-2.6.3-test # cp ~/src/linux-2.6.3/System.map /boot/System.map-2.6.3-test
Сохраните копию нового файла .config в каталоге за пределами дерева сборки. Включите новое ядро в загрузчик и перезагрузите компьютер.


Выполните инструкции из раздела 10.5, но вместо xconfig используйте oldconfig
$ make mrproper
Скопируйте существующий файл .config в каталог /~/src/linux-2.6.3. Выполните следующие команды:
$ make oldconfig $ make $ su # make modules_install # cp ~/src/linux-2.6.3/arch/i386/boot/bzImage /boot/vmlinuz-2.6.3-test # cp ~/src/linux-2.6.3/System.map /boot/System.map-2.6.3-test
Включите новое ядро в загрузчик и перезагрузите компьютер.


В ядрах 2.4 и 2.6 используется одна и та же процедура. Перейдите в каталог с деревом сборки (например, ~/src/linux-2.4.25). Вам потребуется актуальный файл .config; скопируйте его на верхний уровень дерева сборки и выполните следующую команду:
# make oldconfig
В процессе настройки конфигурации найдите нужный драйвер и выберите его оформление в виде модуля (например, модуль tulip является универсальным драйвером для многих карт Ethernet). Затем выполните команды:
$ make dep $ make modules $ su # make modules_install # depmod -av
Загрузите модуль командой modprobe:
# modprobe tulip
Процесс не требует перезагрузки системы.
Комментарии
Если использовать oldconfig почему-либо не удастся, используйте make menuconfig. Правда, это займет больше времени, и вам придется следить за тем, чтобы не упустить что-нибудь важное.
При установке сторонних модулей; не входящих в дерево ядра, следует руководствоваться инструкциями производителя. Стандартная процедура включает загрузку исходных текстов, сборку модуля и его загрузку командой modprobe. Некоторые производители (например, nVidia) включают сценарий, который делает все за вас.
Как правило, дистрибутивы проверяют оборудование при загрузке и автоматически загружают нужные модули. Если этого не происходит, вам придется внести изменения в стартовые файлы. В Red Hat и SuSE модуль включается в файл /etc/modules.conf; в Debian используется файл /etc/modules, а в Slackware — файл rc.modules.
Еще более простой способ — включить в ядро поддержку kmod, автоматического загрузчика модулей. В большинстве дистрибутивов она включается по умолчанию. В программах настройки конфигурации ядра для этой цели используется пункт «Automatic kernel module loading» (ядро 2.6) или «Kernel module loader» (2.4) в категории «Loadable module support».
Не используйте программу kerneld; начиная с ядра 2.2, вместо нее используется kmod. См. также
Раздел «Введение» настоящей главы; раздел 10.2.


Загрузите заплатку и примените ее к исходным текстам ядра. Затем откомпилируйте и постройте новое ядро. В нашем примере ядро 2.6.3 будет обновлено до версии 2.6.4. Заплатка должна находиться в каталоге второго уровня дерева сборки:
$ ls ~/src linux-2.6.3 patch-2.6.4.bz2
Перейдите в каталог верхнего уровня дерева сборки, распакуйте и примените заплатку:
$ cd linux-2.6.3 $ bzip2 -dc ../patch-2.6.4.bz2 | patch -s -p1
Ключ --dry-run позволяет протестировать команду:
$ bzip2 -dc ../patch-2.6.4.bz2 | patch -s -p1 --dry-run
Настройте конфигурацию и проведите сборку ядра.
В дерево сборки предусмотрительно включен сценарий /scripts/patch-kernel для применения заплаток. Этот сценарий особенно полезен при установке нескольких заплаток, поскольку он автоматически применяет их в нужном порядке. Выполните в каталоге верхнего уровня команду
$ scripts/patch-kernel
Заплатки должны применяться по очереди, и все они должны находиться в системе. Например, для использования заплатки patch-2.6.5-rc6 вам также понадобятся первые пять заплаток в серии (rc1-rc5).


Воспользуйтесь той же командой, которая применялась для распаковки заплатки, и добавьте и нее ключ -R:
$ bzip2 -dc ../patch-2.6.4.bz2 | patch -s -p1 -R См. также
patch(1); Kernel Newbies (http://kernelnewbies.org); kernel.org (http://kernel.org).



Постройте образ initrd ( виртуальный диск) командой mkinitrd после сборки ядра. Затем включите в загрузчик запись для загрузки образа.
В ядрах 2.4 и 2.6 команда mkinitrd выполняется после команды make modules_install:
# mkinitrd -o /boot/initrd-2.4.25-new.kernel.img
Команда строит образ и устанавливает его в каталог /boot; остается лишь создать записи в загрузчике. В GRUB:
title Kernel 2.4.25. new kernel root (hd0.0) kernel /boot/bzImage-2.4.25-new-kernel root=/dev/hda1 ro initrd /boot/initrd-2.4.25-new-kernel.img
Пользователи LILO делают следующее:
image=/boot/bzImage-2.4.22-new-kernel initrd=/boot/initrd-2.4.25-new-kernel.img label=Kernel 2.4.22, new kernel root=/dev/hda1 read-only
Не забудьте выполнить /sbin/lilo, чтобы активировать изменения.


Вам потребуется утилита mkboot и чистая дискета. По умолчанию загрузочный диск создается с использованием vmlinuz и текущего корневого раздела:
$ mkboot
Создание загрузочного диска с указанием ядра:
$ mkboot vmlinuz-2.4.21
Также можно указать другой корневой раздел и ядро:
$ mkboot /dev/hda2 vmlinuz-2.4.21
Если флоппи-дисковод имеет нестандартное расположение, укажите его с ключом -d:
$ mkboot -d /dev/fd1


Вам потребуется утилита mkbootdisk и чистая дискета. Создание загрузочного диска с указанием ядра:
$ mkbootdisk vmlinuz-2.6.5-1.358
По умолчанию команда mkbootdisk не выводит данных. Ключ --verbose включает режим расширенного вывода:
$ mkbootdisk --verbose vmlinuz-2.6.5-1.358
Если имя флоппи-дисковода отлично от /dev/fd0, укажите его в командной строке mkbootdisk:
$ mkbootdisk --device /dev/fd0 vmlinuz-2.6.5-1.358


Команда cdrecord - scanbus вернет необходимую информацию. Конфигурация отдельной системы с CD/DVD-ROM и устройством записи CD может выглядеть так:
$ cdrecord -scanbus Cdrecord 1.10 (i686-pc-1inux-gnu) Copyright (C) 1995-2001 Jrg Schilling Linux sg driver version: 3.1.24 Using libscg version 'schily-0.5' scsibus0: 0,0,0 0) 'TOSHIBA' 'DVD-ROM SD-M1202'. '1020' Removable CD-ROM 0,1,0 1) 'LITE-ON ' 'LTR-24102B ' '5S54' Removable CD-ROM 0,2,0 2) * 0,3,0 3) * 0,4,0 4) * 0,5,0 5) * 0,6,0 6) *
Устройства записи DVD выглядят так:
1.2.0 2) 'PIONEER ' 'DVD-ROM DVD-303 ' '1.09' Removable CD-ROM
Первые три числа задают шину SCSI, код устройства и код LUN (Logical Unit Number) соответственно. Четвертое число снова повторяет код устройства. В параметре cdrecord нужно передать три первых числа в следующем формате:
dev=0,1,0


Убедитесь в том, что система эмуляции IDE-SCSI включена, а дисководы настроены для ее использования. Это относится только к ядру Linux 2.4, поскольку в ядре 2.6 дисководы IDE/ATAPI поддерживаются напрямую, с использованием стандартных обозначений /dev/hd*.
Сначала убедитесь в том, что в системе доступен драйвер псевдоустройства ide-scsi:
$ locate ide-scsi.o /lib/modules/2.4.21/kernel/drivers/scsi/ide-scsi.o
Затем отредактируйте два текстовых файла: /etc/modules.conf и конфигурационный файл загрузчика (пользователям Debian следует обращаться к подразделу «Комментарий», так как в этой системе используются другие файлы). Сначала определите имена дисковых устройств в своей системе:
$ dmesg | grep '^hd.:' hda: IBM-DTLA-305020. ATA DISK drive hdb: TOSHIBA DVD-ROM SD-M1202. ATAPI CD/DVD-ROM drive hdc: LITE-ON LTR-24102B. ATAPI CD/DVD-ROM drive
Имена нужных устройств — hdb и hdc. Включите следующие строки в файл /etc/modules.conf:
alias scsi_hostadapter ide-scsi options ide-cd ignore="hdb hdc" alias scd0 sr_mod pre-install sg modprobe ide-scsi pre-install sr-mod modprobe ide-scsi pre-install ide-scsi modprobe ide-sd
Затем пользователи LILO добавляют следующий фрагмент в конец файла lilo.conf, используя обозначения hd* для своих устройств:
append="hdb=ide-scsi" append="hdc=ide-scsi" <>Пользователи GRUB включают следующий фрагмент в файл /etc/grub.conf, в конец строки kernel, используя обозначения hd* для своих устройств:
hdb=scsi hdc=scsi
Полная строка должна выглядеть так:
kernel /boot/vmlinuz-2.4.21 root=/dev/hdal ro hdb=scsi hdc=scsi 11.4. Создание компакт-диска с данными для распространения Перезагрузите систему и убедитесь в том,что модуль ide-scsi загружен:
$ lsmod | grep ide-scsi ide-scsi 9456 1 scsi mod 55124 2 [ide-scsi srmod]
Теперь команда cdrecord -scanbus должна выводить имена устройств SCSI для всех дисководов, настроенных па использование IDE-SCSI.
Обратите внимание:имена устройств изменились, поэтому при монтировании дисков вместо имен /dev/hd* будут использоваться имена /dev/scd*. Вероятно, стоит обновить файл /etc/fstab новыми именами /dev.


Воспользуйтесь командами mkisofs, mount и cdrecord. Сначала упакуйте все файлы в единый файл .iso командой mkisofs, затем смонтируйте .iso для проверки правильности файловой системы. Затем запишите данные на диск командой cdrecord.
В нашем примере файл .iso называется data.iso, компакт-диску присвоено имя data_disk, а все файлы копируются из каталога /disk_data. Точка монтирования для .iso ~/test-iso.
Выполните следующие команды:
# mkisofs -J -r -v -V data_disk -о data.iso /disk_data # mkdir /test-iso # mount -t iso9660 -o ro,loop data.iso /test-iso



Включите параметр -graft-points в вызов mkisofs. В следующем примере сохраняется существующая структура каталогов scripts и finances:
$ ls finances scripts $ mkisofs -r -J -v -o cdimg1.iso -graft-points scripts/=scripts finances/=finances
Результат легко проверить — достаточно смонтировать образ и просмотреть структуру каталогов командой tree -d:
$ sudo mount -t iso9660 -o ro,loop cdimg1.iso /mnt/iso $ tree -d /mnt/iso



Чтобы напрямую скопировать содержимое исходного диска на записываемый диск, выполните следующую команду:
$ cdrecord -v dev=0,1,0 -isosize /dev/scd0
Способ быстрый, но рискованный, потому что любой перебой в потоке данных приведет к порче всей копии. Лучше сначала кэшировать оригинал на жестком диске. В следующем примере сначала проводится проверка записи:
$ dd if=/dev/scd0 of=/tmp/diskfilе.iso $ cdrecord dev=0,1,0 fs=8m -v -eject -dummy /tmp/diskfile.iso
Чтобы записать данные на диск, удалите ключ -dummy.


Воспользуйтесь параметром blank команды cdrecord. Значение blank=fast стирает только оглавление диска (ТОС), область памяти программы (РМА) и pregap:
$ cdrecord -v blank=fast dev=0,1,0
Более полное стирание производится с параметром all:
$ cdrecord -v blank=аll dev=0,1,0
Не рассчитывайте, что стирание полностью уничтожит информацию; при желании данные все равно удастся восстановить. Параметр blank=fast прекрасно подходит для повседневного использования, а работает намного быстрее — и к тому же продлевает жизнь диска CD-RW.



Процесс состоит из двух шагов. Обе команды, cdrecord и mkisofs, поддерживают специальные параметры для создания многосеансовых дисков. При первоначальной записи файлов на CD создайте файл .iso обычным способом, а затем включите в командную строку cdrecord ключ -multi:
$ cdrecord -v eject dev=0,1,0 -multi first-image.iso
Затем создайте дополнительные образы .iso при помощи ключей -C и -M:
$ mkisofs -о second-image.iso -J -r -V Session2 -С `cdrecord dev=0,1,0 -msinfo` \ -M 0,1,0 /path-to-new-files
11.9. Создание загрузочного компакт-диска Затем запишите новый файл .iso на диск, снова используя ключ -multi:
$ cdrecord -v -eject dev=0,1,0 -multi second-image.iso
Операцию можно повторять сколько угодно раз. Добравшись до последнего сеанса, опустите ключ -multi. Диск необходимо закрыть и зафиксировать, в противном случае он не будет читаться большинством дисководов. Другой способ закрыть диск без записи дополнительного сеанса основан на использовании ключа -fix:
$ cdrecord -v -fix -eject dev=0,1,0


Образ загрузочной информации включается в файл . iso командой mkisofs. Если загрузочный образ находится на дискете, сначала создайте каталог boot/ в файловом дереве, записываемом па диск, и скопируйте его туда:
$ dd if=/dev/fd0 of=~/cd-files/boot/boot.img bs=10k count=144
Или скопируйте его из другого каталога на жестком диске:
$ ср boot.img ~/cd-files/boot/boot.img
Затем упакуйте .iso:
$ mkisofs -r -b boot/boot.img -с boot/boot.catalog -o bootable-cd.iso ~/cd-files
Запишите диск командой cdrecord, как это обычно делается. Вы получаете загрузочный диск.


Разбейте файл утилитой split, а затем преобразуйте новые файлы в образы .iso и запишите их на диски. Сборка исходного файла осуществляется командой cat
Допустим, имеется 2-гигабайтный архив tar с именем big-backup. В следующем примере он разбивается на 650-мегабайтные фрагменты. Емкость компакт-диска составляет 700 Мбайт, но нужно оставить место для служебных данных:
$ split -b 650m big-backup.tar.gz creating file 'xaa' creating file 'xab' creating file 'xac'
Каждый файл теперь занимает около 682 Мбайт. Преобразуйте каждый файл в образ .iso:
$ for i in xa*; do echo -e "$i"; mkisofs -o $i.iso $i; done
11.11. Запись дисков DVD с данными После завершения обработки команда ls выведет следующий результат:
$ ls хаа xaa.iso xab xab.iso хае хае.iso
Теперь запишите каждый файл .iso на отдельный компакт-диск:
$ cdrecord -v -eject dev=0,l,0 xaa.iso $ cdrecord -v -eject dev=0,1,0 xab.iso $ cdrecord -v -eject dev=0,1,0 xac.iso
Чтобы восстановить разбитый архив, скопируйте файлы .iso с компакт-диска на жесткий диск и воспользуйтесь командой cat:
$ cat хаа xab xac > big-backup.tar.gz
Или последовательно присоединяйте содержимое каждого компакт-диска к архиву на жестком диске без предварительного копирования:
$ cat /cdrom/xaa > big-backup.tar.gz $ cat /cdrom/xab >> big-backup.tar.gz $ cat /cdrom/xac >> big-backup.tar.gz
Собранному файлу можно присвоить любое имя. Главное — сохранить расширение tar.gz. После этого архив можно распаковать:
$ tar xzvf big-backup.tar.gz


Используйте утилиту growisofs из пакета dvd+rw-tools. Но прежде чем что-нибудь делать, убедитесь в том, что для устройства записи DVD не включена поддержка supermount/automount, поскольку это приведет к порче диска.
Копирование файлов с жесткого диска на DVD осуществляется за одну операцию:
# growisofs -Z <имя устройства> <команды mkisofs> <файлы>



Используйте sox, normalize и cdrecord, а также «болванки», предназначенные для записи аудио. На первом этапе программа sox преобразует звуковые файлы в формат .cdr, после чего формат .cdr преобразуется в формат .wav. Затем ключ -audio команды cdrecord преобразует файлы .wav в формат CD-DA (Compact Disk Digital Audio), поддерживаемый стандартными проигрывателями.
$ sox soundfile filename.cdr $ sox filename.cdr filename.wav $ cdrecord -v nofix -eject dev=0,1,0 -audio -pad filename.wav
Ключ -pad гарантирует правильное заполнение секторов диска, a -nofix оставляет диск открытым для добавления новых дорожек. Чтобы закрыть и зафиксировать диск, выполните следующую команду:
$ cdrecord -v -fix -eject dev=0,1,0
Преобразовывать файлы один за другим утомительно. Следующая команда Bash преобразует группу файлов .ogg в формат .cdr:
$ for i in *.ogg; do echo $i; sox $i ${i%%.ogg}.cdr ; echo ${i%%.ogg}.cdr; done
Замените ogg расширениями тех файлов, которые требуется преобразовать.
Если коллекция дорожек собирается из разных источников, воспользуйтесь утилитой normalize и уравняйте громкость звука с ключом -m (Mixed mode):
$ normalize -m /soundfiles/*.wav
Выбор дорожек для записи может осуществляться разными способами. Следующая команда записывает все дорожки в формате .wav в каталог /home/songs в определенном порядке: сначала цифры, затем алфавитные символы в верхнем регистре, затем алфавитные символы в нижнем регистре:
$ cdrecord -v -nofix -eject dev=0,1,0 -audio -pad /home/songs/*.wav



Переход на GRUB не нарушает работоспособности системы. Прежде всего установите GRUB или обновите программу до последней версии. Номер версии определяется командой
$ grub --version grub (GNU GRUB 0.94)
Затем выполните ряд подготовительных действий:
  1. Распечатайте таблицу разделов (fdisk -l | lpr).
  2. Распечатайте файл lilo.conf.
  3. Создайте резервную копию данных и держите под рукой диск аварийного восстановления (загрузочную дискету LILO или диск Knoppix).
  4. 4. Оставьте установку LILO на случай, если вы захотите вернуться к ней.

Затем выполните следующие действия:
  1. Создайте загрузочную дискету GRUB.
  2. Установите GRUB в MBR.
  3. Загрузите систему.
  4. Отредактируйте конфигурационный файл GRUB, menu.lst.

Чтобы создать загрузочную дискету, найдите каталог /grub/i386. Его «официальное» местонахождение — /urs/lib/grub/i386-pc, но в Red Hat используется каталог /usr/share/grub/i386-pc. В других дистрибутивах также могут существовать различия. Скопируйте файлы stage1 и stage2 на дискету командой dd:
$ dd if-stage1 of=/dev/fd0 bs=512 count=1 1+0 records in 1+0 records out 512 bytes transferred in 0.550740 seconds (930 bytes/sec) $ dd if=stage2 of=/dev/fd0 bs=512 seek=1 209+1 records in
12.2. Переход с LILO на GRUB 209+1 records out 107250 bytes transferred in 6.889581 seconds (15567 bytes/sec)
Загрузите систему с дискеты. Теперь необходимо найти корневое устройство, то есть раздел с загрузочными фаршами GRUB первой и второй стадии загрузки:
grub> find /boot/grub/stage1 (hd0.0)
Задайте корневое устройство:
grub> root (hd0.0)
Обратите внимание: в GRUB используется собственная схема нумерации разделов. Запись hd0,0 соответствует /dev/hda1 (см. подраздел «Комментарий»), Теперь установите GRUB в MBR (первый сектор первого диска):
grub> setup (hd0)
Пора завершить загрузку. Снова задайте корневое устройство:
grub> root (hd0.0)
Введите путь к ядру и корневой файловой системе. Данные берутся из файла lilo.conf. Обязательно присоедините ключ ro, чтобы ядро и корневая файловая система монтировались только для чтения:
grub> kernel /boot/vmlinuz-2.4.21 root=/dev/hda1 ro
Не путайте root в строке kernel с корневым устройством. Root в строке kernel идентифицирует корневую файловую систему, тогда как корневым устройством называется раздел, содержащий каталог /boot.
Вероятно, теперь стоит создать меню загрузки GRUB. За подробностями обращайтесь к рецепту 12.9.


Воспользуйтесь командной консолью GRUB.
Прежде всего установите GRUB или обновите программу до последней версии. Номер версии определяется командой
$ grub --version grub (GNU GRUB 0.94)
Затем выполните ряд подготовительных действий:
  1. Распечатайте таблицу разделов (fdisk -l | lpr).
  2. Распечатайте файл lilo.conf.
  3. Создайте резервную копию данных и держите под рукой диск аварийного восстановления (загрузочную дискету LILO или диск Knoppix).
  4. Оставьте установку LILO на случай, если вы захотите вернуться к ней.

Затем запустите консоль GRUB:
# grub Probing devices to guess BIOS drivers. This may take a long time. GNU GRUB version 0.94 (640K lower / 3072 upper memory) [ Minimal BASH-like line editing is supported. For the first word. TAB lists possible command completions. Anywhere else TAB list s the possible completions of a device/filename. ] grub>
Найдите загрузчик stage1:
grub> find /boot/grub/stage1 (hd0.0)
Затем выполните три команды:
grub> root (hd0.0) grub> setup (hd0) grub> quit
Перезагрузите систему; вас приветствует командная консоль GRUB.
В разделах 12.7 и 12.9 рассказано о том, как создать меню загрузки GRUB.


Воспользуйтесь встроенным сценарием установки GRUB grub-install. Прежде всего установите GRUB или обновите программу до последней версии. Номер версии определяется командой
$ grub --version grub (GNU GRUB 0.94)
Затем запустите сценарий grub-install. Если для /boot используется собственный раздел, укажите его:
# grub-install --root-directory=/boot /dev/hda
В противном случае достаточно имени устройства:
# grub-install /dev/hda
Затем выполните команду
# update-grub
Команда создает новый файл menu.lst. При перезагрузке появится меню GRUB, и система загрузится, как обычно.


Многие дистрибутивы Linux позволяют настраивать разделы во время установки. Создавайте новые разделы только в том случае, если они необходимы, и оставляйте свободной место для других установок.
Для примера рассмотрим «чистую» установку Fedora на диске IDE объемом 20 Гбайт со следующей схемой разбиения:
/dev/hda1 Первичный 100 Мбайт /boot /dev/hda2 Первичный 2500 Мбайт / /dev/hda3 Первичный 3000 Мбайт /home /dev/hda4 Расширенный /dev/hda5 256 Мбайт /swap Свободно 14144 Мбайт
Процедура выглядит так:
  1. Загрузите первый установочный компакт-диск. Выберите клавиатуру, мышь и монитор. Когда появится окно Disk Partitioning Setup, выберите Manually partition with Disk Druid. На экране появляется графическое изображение жесткого диска.
  2. Удалите все существующие разделы. Для этого поочередно выделите их и щелкните на кнопке Delete.
  3. Затем выделите Free Space и щелкните на кнопке New. Точка монтирования — /boot. Выберите файловую систему Ext2 и введите размер раздела. Минимум, который Fedora примет для /boot, составляет 100 Мбайт.
  4. Снова выделите Free Space и щелкните на кнопке New. Точка монтирования — /. Выберите файловую систему Ext3 и введите размер раздела 2500 Мбайт. Щелкните на кнопке ОК.
  5. Снова выделите Free Space и щелкните на кнопке New. Точка монтирования — /home. Выберите файловую систему Ext3 и введите размер раздела 3000 Мбайт. Щелкните на кнопке ОК.
  6. Снова выделите Free Space и щелкните на кнопке New. Прокрутите список filesystem options и найдите в нем строку swap. Точка монтирования отсутствует; задайте размер 256 Мбайт. Щелкните на кнопке ОК.
  7. На этой стадии еще можно вернуться и внести изменения, потому что новая таблица разделов еще не была записана на диске. Завершив настройку, запишите таблицу на диск кнопкой OК в главном меню Disk Druid.

Продолжайте установку. Проследите за тем, чтобы был установлен именно загрузчик GRUB, а не LILO. Другие экземпляры Linux будут использовать те же разделы /home и /swap. Вы можете установить сколько угодно экземпляров Linux, пока не кончится свободное место на диске или не будут использованы все доступные разделы.


Установите дополнительные экземпляры Linux в логические разделы. Затем для каждого экземпляра системы создается запись в меню загрузки GRUB. Сначала подготовьте систему по инструкциям, приведенным в разделе 12.5. Загрузите установочный компакт-диск второго экземпляра Linux (в нашем примере вторым экземпляром будет дистрибутив Libranet Debian). В меню определения


Воспользуйтесь средствами GRUB для поиска корневых устройств и образов ядер. Загрузите командную консоль GRUB нажатием клавиши «с» во время запуска GRUB.
Чтобы найти корневое устройство (раздел, содержащий /boot), введите строку root (hd0 и нажимайте клавишу Tab до тех пор, пока на экране не появится информация о разделах:
grub> root (hd0,<tab> Possible partitions are: Partition num: 0. Filesystem type is ext2fs, partition type 0x83 Partition num: 1. Filesystem type is ext2fs, partition type 0x83
Если вы не уверены в том, какой именно раздел вам нужен, опробуйте их поочередно, это не повредит. Начните с (hd0,0):
grub> root (hd0.0) Filesystem type is ext2fs, partition type 0x83
Затем попробуйте найти образ ядра. Введите /boot/vmlinuz и нажмите клавишу Tab. Если найти образ /boot/vmlinuz не удалось, GRUB сообщит вам об этом:
grub> kernel /boot/vmlinuz<tab> Error 15: File not found
В этом случае назначьте корневым устройством другой раздел и проведите поиск образа ядра на нем:
grub> root (hd0.1) Filesystem type is ext2fs, partition type 0x83 grub> kernel /boot/vmlinuz<tab> possible files are: vmlinuz vmlinuz-2.4.21
Ядро найдено. Введите путь к ядру и корневой файловой системе:
grub> kernel /boot/vmlinuz-2.4.21 ro root=/dev/hda2
Помните, что нумерация разделов в GRUB начинается с 0, поэтому hd0,l=/dev/hda2.
Следующие два используются только в системах, при загрузке которых используется ramdisk. Сначала найдите initrd:
grub> find /boot/init<tab> grub> find /boot/initrd-2.4.22-1.img
Загрузите образ initrd:
grub> initrd /boot/initrd-2.4.22-1.img



Чтобы узнать, в каких разделах находятся файловые системы, воспользуйтесь командой df. Перед этим проследите за тем, чтобы все проверяемые разделы были смонтированы.
Сначала необходимо убедиться в том, что файловые системы установлены в правильных разделах, при помощи команды df:
$ df -h Filesystem Size Used Available Use% Mounted on /dev/hda2 2.5G 1.5G 1G 60% / /dev/hdal 100M 30M 70M 30% /boot
Чтобы убедиться в правильности файлового дерева загрузочного раздела, запросите содержимое /boot/boot:
$ ls /boot System.map-2.4.21 boot grub config splash.xpm.gz vmlinuz vmlinuz-2.4.21
Некоторые дистрибутивы (скажем, Debian) создают мягкую ссылку /boot на родительский каталог:
$ cd /boot $ ls -al boot lrwxrwxrwx 1 root root 1 Apr 16 08:50 /boot/boot -> .
Вы можете оставить все как есть и не создавать новый каталог /boot, хотя ссылка создаст зацикливание в файловом дереве. Это еще один способ обеспечить присутствие каталога /boot в загрузочном разделе.


Включите загрузочные записи в конфигурационный файл GRUB, /boot/grub/menu.lst ( в Red Hat используется файл grub.conf с мягкой ссылкой menu.lst). Загрузочная запись GRUB называется строфой (stanza). Ее базовая конфигурация выглядит так:
title Fedora I core root (hd0.0) kernel /boot/vmlinuz-2.4.22-1 root=/dev/hda1 ro initrd /boot/initrd-2.4.22-1.img
Название (title) выбирается произвольно, а его присутствие обязательно — оно сообщает GRUB, где начинается каждая строфа, а также определяет содержимое пункта меню загрузки. Две другие строки содержат информацию, которая вводилась в командной строке GRUB. Использовать команду boot в menu.lst не нужно.
В меню можно включить сколько угодно операционных систем; каждая система представляется отдельной строфой вроде приведенной ранее. Проследите за тем, чтобы строка kernel указывала на правильный раздел и образ ядра. В одном корневом разделе часто размещаются несколько загружаемых ядер, и все загрузочные конфигурации часто используют один и тот же загрузочный раздел (более того, это даже рекомендуется).


Внесите изменения в файл /boot/grub/menu.lst (в некоторых системах используется grub.conf).
Содержимое файла делится на две секции: глобальные параметры и загрузочные записи (строфы). Цвета, тайм-аут и пункт меню по умолчанию определяются в секции глобальных параметров.
Далее приводится пример полного файла menu.lst с глобальными параметрами:
## Файл конфигурации GRUB для пользователя windbag, создан 22-10-2003 ## Глобальные параметры # Пункт по умолчанию default 0 # Тайм-аут в секундах timeout 5 # Цвета color cyan/blue white/blue # Отображение заставки splashimage (hd0.0)/boot/splash.xpm.gz foreground bbbbbb background 000000 ## Меню загрузки ## Пункт по умолчанию title Libranet GNU/Linux, kernel 2.4.21 root (hd0.0) kernel /boot/vmlinuz-2.4.21 root=/dev/hdal ro hdb=scsi hdc=scsi # Новое тестовое ядро 2.6 title Ubranet GNU/Linux. kernel 2.6.3-testl root (hd0.0) kernel /boot/bzImage-2.6.3-test1 root=/dev/hda1 ro # Red Hat 9 title Red Hat 9 root (hd0.4) kernel /boot/vmlinuz-2.4.22-1 root=/dev/hda5 ro initrd /boot/initrd-2.4.22-1.img



Известно несколько хитроумных приемов для добавления Windows 95/98/ME в систему Linux. Вам придется скрыть разделы и восстановить GRUB в записи MBR после установки Windows, потому что Windows заменяет системный загрузчик. Для установки Windows 95/98/ME необходимо заранее подготовить первичный раздел. К сожалению, GRUB не поддерживает загрузку с CD-ROM, поэтому вам потребуется загрузочная дискета Windows. Если у вас еще нет такой дискеты, создайте ее в Windows.
Установка Windows 95/98/ME в раздел /dev/hda4 производится так.
  1. Загрузите командную консоль GRUB.
  2. Вставьте загрузочную дискету Windows.
  3. Скройте все существующие разделы в командной строке GRUB:

grub> hide(hd0.0) grub> hidethd0.1) grub> hide(hd0.2)
4. Загрузите Windows с дискеты:
grub> chainloader (fd0) +1 grub> boot
Не забудьте включить поддержку CD-ROM в загрузочную дискету.

5. Создайте первичный раздел DOS для установки Windows, используя команду MS-DOS fdisk. Когда создание разделов будет завершено и вы вернетесь к приглашению А:\>, вставьте компакт-диск Windows и запустите программу установки:
A:\> D: D:\> setup
6. Windows заменяет MBR, но это лишь упростит последующие перезагрузки. После того, как система будет установлена, восстановите GRUB в MBR. Загрузитесь с дискеты GRUB и выполните следующие команды:
grub> root (hd0.0) grub> setup (hd0)
7. Извлеките дискету GRUB и перезагрузите компьютер. На экране снова появляется меню GRUB. Загрузите Linux и отредактируйте menu.lst:
title Windows 98 on /dev/hda4 hide (hd0.0) hide (hd0.1) hide (hd0.2) unhide (hd0.3) rootnoverify(hd0.3) makeactive chainloader +1



С Windows NT/2000/ XP дело обстоит намного проще. Программа установки ведет себя более разумно — она позволяет вам выбрать существующий или создать новый раздел. Систему даже можно установить на компьютере с уже установленным экземпляром Linux (при условии, что на диске имеется достаточно свободного места и неиспользованный первичный раздел).
Запишите содержимое таблицы разделов и отметьте, что установлено в каждом разделе. Windows не распознает разделы Linux, а только выводит их размеры, поэтому наличие записанной информации поможет лучше разобраться в происходящем.
12.13. Восстановление GRUB в MBR с использованием диска Knoppix Загрузочная дискета на этот раз не понадобится; загрузите систему с компакт-диска. После того как система будет установлена, восстановите GRUB в MBR — загрузите компьютер с дискеты GRUB и выполните следующие команды:
grub> root (hd0.0) grub> setup (hd0) grub> reboot
Извлеките дискету GRUB и перезагрузите компьютер. На экране снова появляется меню GRUB. Загрузите Linux и создайте в menu.lst запись для Windows:
title Windows XP on /dev/hda4 rootnovenfy(hd0.3) makeactive chainloader +1
Скрывать разделы от Windows NT/2000/XP не нужно.


Воспользуйтесь компакт-диском Knoppix. Загрузите систему и откройте окно командного процессора. Переключитесь на учетную запись root командой su и запустите консоль GRUB. Выполните следующие три команды:
grub> root (hd0.0) grub> setup (hd0) grub> quit
После перезагрузки появляется меню GRUB.


Задайте пароль в menu.lst, чтобы ограничить использование командной консоли GRUB. Сначала в Bash сгенерируйте хешированный пароль командой grub-md5-crypt:
# grub-md5-crypt Password: Retype password: $l$RiAfJO$QTuAlS/BGqlkYHQADZejsl
Вставьте зашифрованный пароль в секцию глобальных параметров menu.lst перед загрузочными строфами:
password --md5 $l$RiAfJO$QTuAlS/BGqlkYHQADZejsl
Также можно использовать простой текстовый пароль:
password bigsecretpassword
12.15. Защита отдельных пунктов меню GRUB Конечно, этот вариант менее надежен. Если вы используете простой текстовый пароль, ограничьте доступ к файлу и разрешите его только root:
# chmod 600 menu.lst
Когда во время загрузки системы появится меню GRUB, нажмите клавишу р, чтобы ввести пароль и получить доступ к командной консоли. Пользователи, не знающие пароля, смогут только выбрать один из пунктов меню загрузки; командная консоль GRUB останется для них недоступной.


Установите пароль GRUB (см. раздел 12.14), а затем включите команду lock в menu.lst:
title Libranet GNU/Linux, kernel 2.4.21. single user mode lock root (hd0.0) kernel /boot/vmlinuz-2.4.21 root=/dev/hda1 ro single
GRUB читает menu.lst последовательно, поэтому все строки после lock становятся недоступными для пользователей, не знающих пароля. При попытке загрузить заблокированный пункт меню будет выдано следующее сообщение об ошибке:
Error 32: Must be authenticated
Желательно сообщить пользователям, к каким командам меню ограничен доступ:
Libranet GNU/Linux, kernel 2.4.21. single user mode, AUTHENTICATION REQUIRED



Заставку GRUB можно создать на базе любого графического файла. Преобразуйте изображение к определенному формату и размеру, а затем включите в menu.lst ссылку на созданный файл.
Графические заставки GRUB должны удовлетворять следующим требованиям:
  • тип файла — xpm.gz;
  • размеры — 640 х 480;
  • 14 цветов.

Начните с создания изображения размером не менее 640x480 в любом графическом формате. Остальное делается программами ImageMagick и gzip. В следующем примере мы преобразуем файл .jpg:
$ convert -depth 14 -resize 640x480 image.jpg newimage.xpm && gzip newimage.xpm
Переместите новый файл newimage.xpm.gz. Откройте файл menu.lst и добавьте (или измените) строку с определением заставки:
# Отображение заставки splashimage (hd0.5)/boot/newimage.xpm.gz


Сгенерируйте базовый файл lilo. conf командой liloconfig. Отредактируйте файл, включите в него комментарии, названия и любые дополнительные параметры по вашему усмотрению.
Убедитесь в том, что вы загрузили новейшую версию LILO. Как обычно, создайте резервную копию данных и держите под рукой загрузочный диск. Выполните команду:
# /sbin/lilo -V LILO version 22.4.1
После установки/обновления запустите liloconfig. Программа задает много вопросов и предлагает выполнить многочисленные инструкции. Допустим, корневая файловая система находится в разделе /dev/hda3. Ответьте положительно на четыре вопроса:
Install a partition boot record to boot Linux from /dev/hda3? Use LBA32 for addressing big disks using new BIOS features? Install a master boot record on /dev/hda? Make /dev/hda3 the active partition?
Запустите lilo, чтобы записать изменения в MBR:
# /sbin/lilo -v
Перезагрузите компьютер. Вероятно, файл /etc/lilo.conf стоит отредактировать, потому что он содержит минимальный набор записей.



Первый установленный экземпляр Linux является «основным». Сохраните его, чтобы обеспечить работу LILO. Проследите за тем, чтобы корневая файловая система, содержащая каталог /boot, находилась в первичном разделе, в противном случае LILO работать не будет.
Запишите местонахождение раздела, в котором будет устанавливаться корневая файловая система следующего экземпляра Linux. Если вы также знаете точное имя ядра и образа initrd (если он используется), вы можете немного опередить события. Оставаясь в основном экземпляре Linux, создайте запись lilo.conf для второго экземпляра:
# Red Hat 9 image=/boot/vmlinuz-2.4.22-1 initrd=/boot/i nitrd-2.4.22-1.img label="Red Hat 9" root=/dev/hda6 read-only
Запишите изменения в MBR:
# /sbin/lilo -v
Переходите к установке второго экземпляра. Присутствие записи в меню загрузки LILO ускорит перезагрузки, необходимые для завершения установки.
Когда программа установки перейдет к установке загрузчика, обязательно выберите вариант «install to the first sector of the root partition» (возможно, в вашей программе установки формулировка будет выглядеть несколько иначе). Не перезаписывайте MBR.
12.19. Альтернативная загрузка Windows и Linux с использованием LILO Если точные имена ядра и образа initrd неизвестны, вам придется узнать их в основном экземпляре Linux. Переходите к установке второго экземпляра Linux. Когда дело дойдет до первой перезагрузки, вы снова окажетесь в основном экземпляре Linux. Смонтируйте файловую систему второго экземпляра Linux и прочитайте содержимое каталога /boot:
# mount /dev/hda6 /mnt/tmp # cd /mnt/tmp # ls boot System.map initrd-2.4.22-1.img System.map-2.4.22-1 vmlinuz vmlinuz-2.4.22.1
Имена ядра и образа initrd известны. Создайте запись в lilo.conf, перезапустите /sbin/lilo и перезагрузите компьютер. Теперь вы можете выбрать новую версию Linux в меню загрузчика и завершить установку программы. См. также
lilo(8), lilo.conf(5); /usr/doc/lilo или /usr/share/doc/lilo.



Самый простой способ — установить все версии Windows, которые должны работать в системе. Всегда устанавливайте их по порядку, начиная с самой старой. Сохраните четвертый первичный раздел для Linux.
В системе может быть установлен только один экземпляр Windows 95/98/ME, потому что эти системы не поддерживают альтернативную загрузку. Windows NT/2000/ХР поддерживают альтернативную загрузку и создают записи для каждого установленного экземпляра в загрузчике Windows.
Установите Linux в последнюю очередь. Сделайте четвертый первичный раздел расширенным и создайте логический раздел для Linux. Во время установки Linux установите LILO в MBR, a LILO автоматически создаст запись для Windows.
# Стабильное ядро 2.4 image=/boot/vmlinuz-2.4.21 label="Libranet-hd3" root=/dev/hda5 read-only # Windows other = /dev/hda1 label="Windowses" table = /dev/hda


Воспользуйтесь встроенной функцией создания загрузочных дискет:
# cd /usr/lib/iilo # make -f Makefile.floppy
Не забудьте защитить дискету от записи.


Ограничьте доступ к lilo.conf и разрешите его только суперпользователю root:
# chmod 600 lilo.conf
Затем защитите LILO паролем. Внесите в секцию глобальных параметров lilo.conf следующие записи:
password="" restricted
Перезапустите LILO, чтобы изменения вступили в силу:
# /sbin/lilo
В ответ на запрос введите пароль root. Программа создает файл /etc/lilo.conf.shs с паролем, доступным только для root. Теперь при перезагрузке системы LILO будет запрашивать пароль у каждого, кто попытается ввести команду linux single или linux init=/bin/sh.


Запишите резервную копию MBR на дискету. Смонтируйте диск, а затем воспользуйтесь командой dd:
# dd if=/dev/hda of=/floppy/mbr bs=512 count=1


Содержание раздела