Последнее изменение файла: 20010608
Bog BOS: Linux с точки зрения системного администратора
Самая трудная проблема для начинающего - это выбор дистрибутива.
Столько их развелось в последнее время, что глаза разбегаются. Даже
производитель материнских плат Abit выпустил дистрибутив Linux под свои платы
(Gentus; похоже уже умер). Хорошо что,
когда я ставил себе Linux в первый раз, этой проблемы не было :) Либо ставишь Slackware, либо собираешь дистрибутив сам.
Пару лет я им пользовался, пока не заметил, что слишком много пакетов приходится
устанавливать дополнительно (в комплект Slackware входили очень старые версии
или не входили вообще). Так как все дополнительные пакеты были в формате RPM, то
вполне естественно, что я перешел на RedHat. Судя по опросам на linux-ve и linux.org.ru,
я не одинок (учтите, что BlackCat и Mandrake тоже базируются(овались) на
RedHat, так что в сумме они занимают порядка 60%). Наличие Alan Cox в штате
RedHat тоже плюс ;) Можно еще обратить внимание на Debian GNU, но у меня нет на это времени
(самая полная коллекция, но были (есть?) серьезные проблемы с русским языком).
Бывают и "самодельные"
дистрибутивы.
Из руссифицированных вариантов можно отметить (сам я не
пробовал):
Списки дистрибутивов:
Времена, когда приходилось самостоятельно устанавливать новое
"свежеиспеченное" ядро, надеюсь уже прошли. Сейчас лучше положиться на
составителя дистрибутива. Однако, необходимость быть в курсе грядущих изменений
осталась.
Сайты, следящие за изменениями в ядре:
- http://www.kernel.org/ (архив
исходников ядра и заплаток)
- LinuxHQ (обзоры, Linux Edge)
- Kernel-traffic
(еженедельник для разработчиков ядра - часто меняет место)
- Kernel Notes (когда-то здесь был
список изменений для каждой версии с точки зрения пользователей, а не
разработчиков, как в ChangeLog, но сейчас сайт заброшен)
Что нового в 2.4:
Когда-нибудь наступят светлые дни, когда изготовители
оборудования будут сначала писать драйверы под Linux, а потом уж под 20 версий
MS Windows. Но сейчас перед покупкой "железа" необходимо предварительно
проверить, есть ли под него драйверы для Linux. Крайне желательно, чтобы эти
драйверы входили в состав дистрибутива (поставить драйвер самому можно - если он
не требуется при установке дистрибутива - но Вы узнаете много нового и
интересного). Для RedHat проверить наличие драйвера можно на сайте компании.
К сожалению, проиводители оборудования очень любят выпускать
разные устройства под одним маркетинговым именем или одно и то же устройство под
разными. Так что доверять чужому опыту надо осторожно. Рекомендуется поискать в
телеконференциях как положительные, так и отрицательные отзывы.
Ссылки на списки оборудования, совместимого с Linux.
Hardware
SMP
Шины
IDE (EIDE, ATA-2)
Конфигурация IDE-дисков: hdparm. Для нормальных устройств
рекомендуется:
hdparm -c 1 -d 1 -m 16 # включить 32-битный режим,
использование DMA, обмен по 16 секторов
SCSI
Конфигурирование SCSI-устройств: scsiinfo (scsiinfo, scsiformat,
scsi-config).
Именование дисков: /dev/sdyN
Если драйвер конкретного SCSI-контроллера встроен в ядро (не модуль), то
параметры можно передавать через /etc/lilo.conf. Например, чтобы отключить
работу с очередями для устройств с идентификаторами 1 и 2, подключенных к
контроллеру ncr53c8xx, надо вставить строку:
append =
"ncr53c8xx=tags:8/t1t2q1"
То же самое достигается после загрузки командой (если, конечно, удастся
загрузиться ;):
echo "settags 2 1" > /proc/scsi/ncr53c8xx/0
Если драйвер для SCSI-контроллера скомпилирован как модуль, то аналогичный
эффект достигается включением в /etc/conf.modules строки:
alias
scsi_hostadapter ncr53c8xx
options ncr53c8xx
ncr53c8xx=tags:8/t1t2q1
и не забыть сделать mkinitrd, если он необходим
при загрузке.
Диски
Именование дисков: /dev/xxyN, где
- xx - либо hd (IDE), либо sd (SCSI)
- y - номер диска
- IDE
- a - первый IDE диск
- b - второй IDE диск
- и т.д.
- SCSI
- a -первый SCSI диск
- b - второй SCSI диск
- и т.д.
- N - номер раздела (от 1 до 4 - номера primary или extended разделов,
от 5 - номера логических разделов)
CD-R (CD-RW)
FAQ и копия
список, поддерживаемых
устройств
Я пробовал на HP CD-Writer Plus 8100 , IDE/ATAPI (24/4/2, в действительности
скорость чтения не выше 12x) и Mitsumi CR-4804TE, IDE/ATAPI (24/4/4).
Особенности конфигурации ядра (IDE CD-RW), шаг влево, шаг вправо - и работать
не будет:
- SYSCTL=y
- автоматическая загрузка модулей (kerneld)
- IDE=y
- IDECD=m, модуль - ide-cd
- SCSI hostadaptor emulation (ибо ATAPI - это эмуляция SCSI на IDE/ATA),
IDESCSI=m, модуль - ide-scsi
- Loopback device (файловая система внутри файла), BLK_DEV_LOOP=m, модуль -
loop
- SCSI=m, модуль - scsi
- SCSI CDROM, BLK_DEV_SR=m, модуль - sr
- BLK_DEV_SR_VENDOR=y
- SCSI generic, CHR_DEV_SG = m, модуль - sg
- ни в коем случае SCSI_MULTI_LUN в версиях ядра до 2.2.10 (Up to
kernel-version 2.2.10, don't enable CONFIG_SCSI_MULTI_LUN ('probe for multiple
luns') and ide-scsi support at the same time)
- SCSI драйвер
- FAT_FS=m, MSDOS_FS=m, VFAT_FS=m, UMSDOS_FS=m
- ISO 9660 CDROM filesystem (включает RockRidge), обязательно встроенный в
ядро.
- Microsoft Joliet cdrom
Создание образа файловой системы (не более 650MB!, 680 000 000)
- mkisofs
(ISO 9660, RockRidge, El torito, Juliet, HFS, мультисессии), пакет
mkisofs-1.8-2 в RedHat 6.2 или mkisofs-1.9-2 в RedHat 7.0.
- простейший случай: mkisofs -r [ -P имя-публикатора ] [ -V
имя-тома ] -v [-o образ-CD] исходная-директория ...
(ISO9660 и RockRidge со сброшенными правами доступа к файлам)
если
-o опущен, то выводится на stdout
-R (вместо -r, если
надо сохранять права доступа в RockRidge)
-M исходный-образ-CD
(позволяет добавлять файлы к ранее созданному образу)
-J
(делает вдобавок оглавление Juliet, который не переносит несколько файлов
с одним и тем же именем, получающиеся после слияния нескольких исходных
директорий)
-m шаблон-имени-файла (не записывать эти файлы)
- тестирование полученного:
mount -t iso9660 -o ro,loop=/dev/loop0
образ-CD /cdrom
Прожигание
- cdwrite - старая, заброшенная программа
- cdrecord-1.9.
Пакет cdrecord-1.9-2 в ReDHat 7.0.
- загрузить ide-scsi (после этого надо обращаться не к /dev/hd?, а к
/dev/scd?)
modprobe ide-scsi (нужны права root)
он должен
найти CD-ROM и все про него рассказать (на syslog), создать sr-устройство (у
меня sr0 на scsi0 (chanel 0, id 0, lun 0), даже оказался scsi3-mmc drive:
24x/24x writer cd/rw xa/form2 cdda tray)
- появились устройства (/proc/devices): char 21 (sg) и block 11 (sr)
- cdrecord -scanbus находит устройство (scsibus0, 0)
- появились модули: ide-scsi, sg, scsi_mod
- после доступа к CD появились модули: cdrom, sr_mod
- запись обычного диска с данными в одну сессию
cdrecord -v
speed=скорость
dev=номер-шины,номер-устройства,lun-data
образ-CD
для CD-RW надо добавить опцию: blank=fast
(полторы минуты)
используйте имя файла "-" для обозначения stdin
- ключ -dummy имитирует процесс записи, что позволяет проверить ее
возможность на указанной скорости
- ключ -multi не закрывает диск, что позволяет в дальнейшем
дописывать на него
- ключ -prcap рассказывает очень много интересной информации об
устройстве
- ключ -force позволяет иногда вернуть к жизни CD-RW
- fs=размер задает размер буфера (более 16m не выносит
Linux, а больше 4m не выносит HP 8100 )
- cdrdao
(специально для CD-Audio)
GUI
- X-CD-Roast
- интерфейс к mkisofs и cdrecord
- BurnIT - интерфейс (на Java) к
mkisofs, cdrecord и cdda2wav
- XDaodio -
интерфейс (Tcl/Tk) к cdrdao для копирования audio CD 1:1
Мышки
Обязательно иметь мышь с тремя кнопками, иначе
замучаешься тексты редактировать. Настройка: mouseconfig. Для обычной
старой последовательной мышки с 3 кнопками подходит "Mouse System" или "Generic
Serial Mouse (Microsoft Serial)" без эмуляции 3ей кнопки. У меня одна и та же
мышка Genius EasyMouse (FCC ID: FSUGMZE3, а как их еще различать?) на одном
компе работает только в режиме MouseSystem, а на другом только как "Generic 3
button serial mouse".
Где взять программы?
Командный интерфейс: rpm
Графический интерфейс: glint (где же он в RedHat 6.0?), ему не нужен был
gnome и он умел выдавать список Неустановленных пакетов.
Графический интерфейс: gnorpm. Позволяет манипулировать установленными
пакетами (поиск, проверка, удаление, upgrade) и качать новые, пользуясь базой
данных на сервере RedHat или http://rpmfind.net/ (40 тысяч пакетов / 55 GB).
Установка RedHat
Итак, берем ISO-образы дистрибутива с ближайшего российского зеркала.
Достаточно двух дисков: документацию, исходники и powertools качать не
обязательно. Предварительно неплохо скачать с ftp.redhat.com MD5 суммы для
файлов и сравнить их с MD5 суммами скопированных файлов (так, на всякий случай
;). Прожигаем полученные iso-образы на CD. Кстати, покупка комплекта в ближайшем
ларьке обойдется гораздо дешевле (но MD5 все равно надо сравнить!).
Затем надо скопировать накопившиеся
изменения к дистрибутиву. К моменту выпуска следующей версии изменений
набегает на целый CD! При исправлении ошибок основной дистрибутив не изменяется,
а просто добавляются файлы в директорию update, т.е. при установке приходится
сначала устанавливать плохо работающий дистрибутив, а затем вручную вносить
изменения (а это иногда сотни мегабайт!). Иногда RedHat делает называемый
"respin", т.е. обновленный дистрибутив, но там изменяется только программа
установки, а обновленные пакеты все равно надо качать самому.
Расположение ftp-архивов меняется со временем (фактически каждый раз
приходится искать куда же они его переместили и как расположили файлы на этот
раз)
Примеры установок для различных версий и ситуаций:
LILO работает через BIOS, а большинство BIOS позволяют доступ только к первым
двум IDE-дискам (считая ATAPI CD-ROM) в пределах первых 1023 цилиндров. Так что
директория (или раздел) /boot должна удовлетворять данным ограничениям.
Зависимости пакетов от библиотек и средств
программирования.
gnumeric -> guile -> umb-scheme
kernelcfg, netcfg -> tkinter -> tix, python
tix -> tk -> tcl
Tclx и itcl никем не используются.
Документация
Консоль
Документация
- пакет console-tools и
документация из него (/usr/doc/console-tools* и man)
Предварительное
замечание. ReHat заменила в 6.0 реализацию драйвера консоли kbd на
console-tools, так что старые рекомендации по руссификации консоли более
неприменимы. Рекомендации данные здесь неприменимы к старым системам. Если при
установке RH 6.2 выбрать Russian/ru-yawerty, то все будет настроено само собой
(в частности, устанавливается LANG=ru_RU.KOI8-R - очень прикольно смотрятся
устаревшие переводы man-ов на русский).
в /etc/sysconfig/i18n
- LANG="ru_RU.KOI8-R"
- SYSFONT="cyr-sun16"
- SYSFONTACM="koi8-r"
Драйвер клавиатуры
Клавиатура генерирует сканкоды (scancode), которые
преобразуются в коды клавиш (keycode) с помощью таблицы преобразования,
затаваемой setkeycodes. Коды клавиш преобразуются в символы с помощью
таблицы keymap, которая устанавливается программой loadkeys. В RHL есть
надстройка в виде kbdconfig, которая позволяет выбрать keymap из списка,
имеющихся в наличии (/usr/lib/kbd/keymaps/i386/qwerty). Я использую
ru-yawerty.kmap.gz (koi8-r, раскладка ЯВЕРТЫ, твердый знак на
подчеркивании, переключение по правому ALT). Имя ru-yawerty заносится в
/etc/sysconfig/keyboard, который используется при загрузке из
/etc/rc.d/init.d/keytable. Можно вызывать вручную: loadkeys
ru-yawerty. Для рабиты обычных 8-битных (не UNICODE) программ этого
достаточно.
Драйвер экрана
Разработчики нынешней версии ядра перешли на
использование UNICODE (UCS2) в драйвере консоли, поддержка национальных
алфавитов отстала (во всяком случае всякие FAQs, HOWTO и советы, оставшиеся от
прошлых времен не помогают; шрифты и таблицы перекодировок просто глючат).
Механизм RHL 6.0 действует так: при загрузке вызывается
/etc/rc.d/init.d/keytable (там же встроена поддержка клавиатуры), которая
вызывает /sbin/setsysfont. setsysfont в свою очередь выполняет (если
есть) /etc/sysconfig/i18n, ожидая что та определит переменные
SYSFONT (имя файла со шрифтом, берется из
/usr/lib/kbd/consolefonts) и UNIMAP (имя файла с таблицей
соответствия, берется из /usr/lib/kbd/consoletrans). После чего выполняет
consolechars -f $SYSFONT --sfm $UNIMAP
в качестве SYSFONT я беру
koi8-8x16, в качестве UNIMAP - koi8-r. Так что и клавиатура и
экран работают в koi8-r и не надо ничего перекодировать (в новой версии
использование koi8-r не ломает таблички MidnightCommander, в
RH 6.0 вместо русской буквы 'В' выводится тире с точками, в RH 6.2 -
поправлено). Есть и другие шрифты (koi8-8x8, koi8-8x14, alt-8x8, alt-8x14,
alt-8x16, Cyr_a8x8, Cyr_a8x14, Cyr_8x16), но таблица UNIMAP есть только для
koi8-r. Иногда setsysfont (consolechars) не срабатывает с первого раза,
приходится повторять. В 2.2.12 вообще перестал работать
(клавиатура переключается, но вместо русских букв на экран выдается
псевдографика, а вместо псевдографики - русские буквы). В 2.2.14
работает без проблем.
X11
Растровые шрифты. В принципе какой-то комплект
входит в поставку, но в RH 6.0 я взял более свежий с kiarchive.
Встать в /usr/X11R6/lib/X11/fonts и распаковать. Появятся поддиректории
cyrillic/{75dpi|100dpi|misc}. Шрифты из поставки
можно удалить. В RH 6.2 я взял шрифты из дистрибутива.
Type1 шрифты. Взять с kiarchive(pfb-шрифты).
А лучше взять шрифты вместе с pfm-метрикой в gpi
(тогда fonts.dir и fonts.scale придется сделать самому). Можно еще взять
afm-метрику в gpi.
Создать в /usr/X11R6/lib/X11/fonts/cyrillic поддиректорию Type1 и
положить шрифты туда. Из fonts.dir-scale.add сделать fonts.dir и
fonts.scale (не забыть добавить 16 первой строчкой). Шрифты в формате pfa
изготовляются из pfb-шрифтов программой pfbtops.
xfs. В RHL 6.0 все шрифты берутся от xfs (X font server).
Запускается в /etc/rc.d/init.d/xfs (по SIGHUP перезагружает
конфигурационный файл). Конфигурационный файл - /etc/X11/fs/config.
Команда catalogue определяет список директорий, из которых font server будет
брать шрифты. Вписать нужный cyrillic/...dpi в начало списка, затем
cyrillic/misc, cyrillic/другойdpi, cyrillic/Type1. Перезапустить xfs
(/etc/rc.d/init.d/xfs stop; /etc/rc.d/init.d/xfs start). Только не надо делать
это при работающем X сервере, он этого не любит.
locale. В XFree86 3.3. (X11R6) уже должен быть locale ru_RU.KOI8-R.
Если нет, то можно взять на kiarchive (X11R5, X11R6).
Чтобы его включить надо установить переменную LANG равной ru_RU.KOI8-R
(например, в ~/.bashrc). Я попробовал... Gnome явно пытается говорить по русски,
В заголовках окон у него это получается, а вот в остальных
местах он пытается использовать ISO5589-5, которого у меня нет, пришлось
отключить. В RH 6.2 (XFree86 3.3.6) русский язык уже почти везде
нормально смотрится (на этот раз кроме заголовков окошек
:).
Ввод. Правильный метод. Использование Cyrillic_* keysyms в XKB.
Возникают проблемы со старыми программами. В XFree86 3.3.3 ошибка, приводящая к
использованию ISO8859-5 таблиц вместо KOI8-R. Есть заплатка, позволяющая
это дело поправить (если, конечно, есть желание самому собирать XFree86). Для
того, чтобы включить русский ввод надо добавить
XkbKeymap
"xfree86(ru)"
в секцию Keyboard файла XF86Config и
установить переменную окружения LANG=ru_RU.KOI8-R. К сожалению, RHL 6.0 как раз
включает ошибочную версию XFree86 3.3.3. К тому имеются проблемы с шрифтами у
Gnome/enlightment
Ввод. Правильный метод в RH 6.2. Правый Alt работает как ModeShift
(русские буквы вводятся, пока на нее жмешь). В XF86Config в секции Keyboard
записываем (слова в кавычках являются именами файлов в соответствующих
поддиректориях /usr/X11R6/lib/X11/xkb, слова в скобках - именами секций в
соответствующих файлах):
- LeftAlt Meta
- RightAlt ModeShift
- ScrollLock ModeLock (не работает)
- RightCtl Control
- XkbKeymap "xfree86(ru)"
- XkbRules "xfree86"
- XkbModel "pc101"
- XkbLayout "ru" (раскладка "йцукенг" - как в MS Windows, кроме символов над
цифрами)
- закоментарить XkbKeycodes, XkbTypes, XkbCompat, XkbSymbols, XkbGeometry
Улучшения для правильного метода в RH 6.2.
- Можно keymap/xfree86 (секция ru) поменять en_US(pc105)+ru на ru(winkeys),
чтобы в русском режиме вводились символы как на наклейках над цифрами.
- на моей клавиатуре оказались "лишние" кнопки с окошками, которые я
приспособил для постоянного включения/выключения русского режима. В файле
/usr/X11R6/lib/X11/xkb/symbols/ru добавил определение для левой кнопки с
окошком:
key <LWIN>{ symbols[Group1]= [ ISO_Next_Group ] };
key <RWIN>{ symbols[Group1]= [ ISO_Next_Group ] };
- переделать файл /usr/X11R6/lib/X11/xkb/symbols/ru под
"яверты"
Ввод. Обманный Xmodmap. Подстановка "улучшенного" Xmodmap в
/usr/X11R6/lib/X11/xinit/.Xmodmap, который подменяет стандартную раскладку
ISO8859-1 на KOI8-R. Может быть придется где-то вручную вызывать xmodmap
/usr/X11R6/lib/X11/xinit/.Xmodmap (это должен делать xinitrxc или
~/.xinitrc, но всякое бывает). Прикладные программы после этого считают, что они
имеют дело с обычными латинскими символами, а при вводе после нажатия CapsLock
происходит преобразование в соответствии с клавиатурной раскладкой ЯВЕРТЫ.
Нарушает все концепции интернационализации в X11. У меня не заработало в XFree86
3.3.3 (в прежних версиях работало отлично).
Ввод. Использование специальной программы перекодировки. Я опробовал Xruskb
А. Лукьянова. Есть rpm в contrib. Единственный метод, который заработал у меня в
RH 6.0. Опять-таки должны возникать проблемы с "правильными" прикладными
программами. Запуск:
xrus yawerty-koi8.xmm
Переключение по кнопке
или двум shift-ам.
Менеджеры окон и рабочего стола.
gnome/enlightment - нельзя
выбирать Themes/BrushedMetal, иначе не будет русских букв в заголовках окон
(используется шрифт lucida?).
Приложения под X11
gnome-terminal:
setting->preferences->font->browse. В фильтрах ставим, что шрифт должен
иметь charset=koi8-r, после чего выбираем какой-нибудь из шрифтов типа курьер
(они моноширинные).
ghostscript. Копируем все .pfm, .afm и .pfb файлы из созданной ранее
cyrillic/Type1 в /usr/share/fonts/default/ghostscript. Берем в gpi
gs-Fontmap.add и добавляем его в конец /usr/share/ghostscript/5.10/Fontmap
(оригинал сохранить). Затем закоментировать в Fontmap алиасы для Helvetica,
Courier и Times, раскоментировать алиасы на соответствующие русские шрифты (там
два курьера, выбрать CourierCyrPS, см. про Netscape). Еще советуется запускать с
ключем -dNOPLATFONTS, но у меня gv и так с ним зпускается. Преобразование
ps в pcl для печати дл HP LaserJet:
gs -q -sDEVICE=ljet4 -r600x600
-sPAPERSIZE=a4 -dNOPAUSE -dSAFER -dNOPLATFONTS -sOutputFile=-
Netscape 4.6: Edit->Preferences->Fonts. Для кодировки koi8-r выбираем
Times(cronyx) и Curier (cronix). Почему-то netscape не любит
шрифтов Type1 (ни pfb, ни pfa, ни с метрикой, ни без нее). Проблема при
печати - он использует только встроенные метрики шрифтов и русские буквы плывут.
Есть заплатка,
которая правит бинарник netscape, записывая туда метрики CourierCyrPS и
TimesCyrMT (любой версии, у меня сработало на 4.6/4.72). Естественно, теперь
нельзя удалять русские Type1 шрифты ;). Также при печати нет подчеркиваний,
цветов и оформления страницы (дата, имя файла и т.д.).
Конфигурирование
Пересборка ядра
Все делать из
/usr/src/linux (если ядро из поставки). Если был сделан upgrade пакета
kernel_headers, то м.б. придется сделать ссылки для /usr/include/asm и
/usr/include/linux.
- make mrproper (удалить весь мусор от предыдущей конфигурации). Если
хочется сохранить предыдущую конфигурацию, то сказать: make dep; make
clean.
- конфигурация ядра (не советую делать SCSI-драйвера модулями; увы
приходится это делать, если надо писать на ATAPI CD-RW)
- make config (в виде ответов на вопросы: Y, N или M), надежно
(ничего не забудешь поменять ;), 500 вопросов, на половину из которых не
знаешь что сказать.
- make menuconfig (в виде меню), удобно (нужен ncurses_devel).
- make xconfig (под X-Windows), очень удобно :)
- make oldconfig (все ответы из .config)
- make dep
- make bzImage (не надо слепо следовать устаревшей инструкции и
делать make boot, он не влезет в загрузчик)
- make modules
- insmod loop до перемещения модулей, а то не найдет loop0
- удаляем совсем старую копию модулей (если она есть)
rm -rf
/lib/modules/2.2.5-22-old (нужен для mkinitrd)
- делаем текущий набор модулей старым
mv /lib/modules/2.2.5-22
/lib/modules/2.2.5-22-old
- инсталируем новый набор модулей (в /lib/modules/2.2.5-22)
make
modules_install
- если все-таки сделал SCSI в виде модуля (или еще какой-нибудь модуль нужен
при загрузке; ide-scsi не нужен), то пересобери initrd (отредактировать
/etc/conf.modules (/etc/modules.conf в RedHat 7.0) - вставить
alias scsi_hostadapter имя-драйвераи соответствующие options
имя-драйвера имя-драйвера="параметры"; проверить
alias eth0 - и выполнить
mkinitrd /boot/имя-нового-initrd
2.2.5-22
после чего отредактировать /etc/lilo.conf). Также
необходимо сделать, если раньше был модуль SCSI, а теперь его убрал или
включил в ядро.
- копируем получившийся arch/i386/boot/bzImage в /boot/bzImage.new
(переименовав старый, если надо)
- копируем получившийся System.map в /boot/System.map (переименовав
старый?), klogd сначала пытается смотреть в /boot/System.map; если версия ядра
не совпадает, то в /System.map, а если и там не совпадает, то в
/usr/src/linux/System.map
- добавляем новую секцию в /etc/lilo.conf со ссылками на новое ядро и м.б.
initrd (обязательно сохранив возможность загрузки старого ядра, System.map, modules?, где взять module-info для нового
ядра?)
- /sbin/lilo -v
- перезагружаемся - DMA все-равно приходится включать вручную через hdparm,
ибо не любит он WD :(
- /usr/src/linux занимает теперь 70МБ (RH 6.2 - 80 MB, RH 7.0 - 106 MB)
- скомпилированный emu10k1 не грузится, приходится брать модуль из
дистрибутива
Обновление ядра
- подготовить все необходимые пакеты (скачать и положить в локальную
директорию)
- на всякий случай сделать загрузочный диск
- rpm -Uvh kernel-utils-xyz kernel-headers-xyz kernel-source-xyz
- rpm -ivh kernel-xyz [kernel-ibcs-xyz] [kernel-pcmcia-cs-xyz]
- сделать новый initrd (только если при загрузке потребуется драйвер,
сделанный в виде модуля)
- дополнить /etc/conf.modules (/etc/modules.conf)
- lilo -v
- перезагрузиться (shutdown -r now)
- настроить ядро
linuxconf
источник
Поддерживает различные интерфейсы с пользователем:
- командная строка
- а/ц окна
- X11 (древовидное меню)
- www (позволяет удаленное администрирование, выключен по умолчанию)
Общие ощущения, как от Unixware 1.0: здорово, красиво, но ненадежно.
Если помнишь, как это вручную делается, то лучше сделать вручную. Так и есть!
Linuxconf ведет свою базу конфигурации и некоторые обычные конфигурационные
файлы генерирует исходя из нее при загрузке (например, sendmail.cf!), так что
вносить измения в них вручную безсмысленно. Есть мнение, что его надо отключить
(начальник д.б. один).
Управляет списком пользователей, групп, файловых систем (в т.ч. сетевых),
конфигурация локальной сети и PPP, сетевые клиенты и серверы, LILO.
control panel
Запускается командой control-panel в xterm.
Является площадкой для запуска отдельных графических средств конфигурации
(printtool, kerneld, netcfg, run level editor, time and date, modem
configuration).
chkconfig
Манипуляция файлами в /etc/rc.d (какие сервисы
запускать и останавливать при переходе с уровня на уровень). Криво сделан. Проще
вручную сделать, но кругом натыкано проверок с помощью chkconfig. Он действует в
терминах: включен/выключен. На самом деле для сервиса м.б. как процедура
включения, так и выключения в любых комбинациях. В результате он выдает ответ
"запущен сервер или нет" в зависимости от того, какой файл создан в директории
последним - K или S!
Ключи:
- --list (получить список сервисов)
- --add имя (добавить сервис в список отслеживаемых)
- --del имя
- --level уровень имя [ on | off |
reset ] (поднять/опустить/сбросить сервис на указанном уровне)
отдельные утилиты
- /usr/sbin/mouseconfig
- /usr/sbin/timeconfig, timetool, date, setclock, hwclock, adjtimex
- сервисы: /usr/sbin/ntsysv или /sbin/chkconfig
- mkbootdisk --device /dev/fd0 версия (хочет
vmlinuz, а не bzImage)
- Xconfigurator или vi /etc/X11/XF86Config (про существование
Interlace-режимов народ уже забыл :(
- useradd/userdel, passwd
- kbdconfig
RHL runlevels:
- 0: halt
- 1: single user
- 2: multiuser
- 3: multiuser + NFS (режим по умолчанию)
- 4:
- 5: X11 (xdm, gdm или kdm)
- 6: reboot
Network
Документация по
конфигурации сети (NET-4)
Управление параметрами стека
через /proc/sys/net/ipv4 (посмотреть - cat имя, изменить echo параметр... >
имя). Смысл имен описан в ip-sysctl.txt. В частности необходимо (для установки
во время загрузки надо поменять /etc/rc.d/init.d/network)
- изменить ip_local_port_range с "1024 4999" на "32768 61000" (echo
"32768 61000" > /proc/sys/net/ipv4/ip_local_port_range). Из этого
интервала берутся номера локальных портов для соединения с удаленными
серверами. Так как мой firewall глушит все соединения идущие снаружи на
внутреннюю сеть и направленные на порты до 32768, считая их
привилегированными, то надо вывести их выше.
- включить ip forwarding (необходим для transparent proxy, сбрасывает
остальные параметры стека в соответствии с RFC 1122 для хостов и RFC 1812 для
маршрутизаторов): echo 1 > /proc/sys/net/ipv4/ip_forward (во
время загрузки устанавливается в зависимости от значения переменной
FORWARD_IPV4 в /etc/sysconfig/network).
- включить незбежную дефрагментацию:
echo 1 >
/proc/sys/net/ipv4/ip_always_defrag # в ядре 2.2.12 указывается во время
конфигурации
В RH 6.2 для управления параметрами стека (и любыми
другими переменными из /proc/sys) используется
sysctl -p
/etc/sysctl.conf
в котором записаны операторы присваивания
соответствующим переменным (имена переменных совпадают с именами файлов из
/proc/sys с заменой слешей на точки):
- net.ipv4.ip_local_port_range = "32768 61000"
- net.ipv4.ip_forward = 1
- net.ipv4.ip_always_defrag = 1
- net.ipv4.conf.all.rp_filter = 1
- net.ipv4.conf.all.log_martians = 1 (сбрасывать пакеты с невозможными
адресами в журнал)
- net.ipv4.conf.all.accept_source_route = 0 (запретить source route)
Однако похоже, что sysctl не работает с двумя параметрами
(ip_local_port_range), так что этот параметр приходится устанавливать руками
Несколько IP-адресов на одном интерфейсе (aliasing):
- ядро должно быть собрано с поддержкой alias (CONFIG_IP_ALIAS=y)
- после конфигурации основного адреса на интерфейсе в
/etc/rc.d/init.d/network (пусть eth0):
ifconfig eth0:0
дополнительный-адрес netmask маска-дополнительной-сетки up
- в документации предлагается определить маршрут для этой сетки
route
add -net дополнительная-сетка netmask маска-дополнительной-сетки eth0:0
но
он устанавливается сам собой
PPP
Документация
- pppd.8, pppstats.8, char.8
- PPP-FAQ (1996)
- PPP-HOWTO (март 1997)
- /usr/doc/ppp-2.3.7
Ядро должно быть сконфигурировано с поддержкой PPP (netdriver/ppp, модули
ppp, slhc, bsd_comp
В RedHat 6.2 rp3 настраивает PPP почти нормально (правда, я не пробовал
настраивать диалог). Конфигурационный файл - "/etc/wvdial.conf". rp3 аварийно завершается, если слишком быстро нажать
stop/start. Обрыва линии не замечает, так что приходится прописывать в
/etc/ppp/options lcp-echo-interval и lcp-echo-failure. Адреса DNS-серверов берет
от сервера доступа.
В RedHat 6.0 linuxconf и control-panel имеют недоработки
в конфигурировании PPP-доступа в интернет :( Так что я сделал так:
- добавляем в /etc/resolv.conf имя нашего DNS-сервера
nameserver
195.161.72.28
- убедиться, что /dev/modem указывает на нужное устройство (у меня COM2 -
/dev/ttyS1)
- завел в control-panel/network интерфейс ppp0, а затем отредактировал
конфигурационные файлы ручками
- /etc/ppp/options (не забывать про ~/.ppprc)
- lock #чтобы никто больше не лез к тому же самому порту во время
работы pppd
- modem crtscts #нормальная синхронизация и сигналы
- mtu 576 mru 576 # стандартный размер блока (1500) мешает
одновременно работать с telnet и ftp
- asyncmap 00000000 # использовать все символы
- defaultroute # поднимать маршрутизацию после установления
соединения
- debug kdebug 1 # потом можно выключить
- lcp-echo-interval 20 lcp-echo-failure 3 # при разрыве связи pppd почему не получает извещения об
этом, приходится непрерывно проверять целостность соединения через
LCP echo. Может приладить програмку, которая будет
смотреть /proc/tty/driver/serial и рубить pppd при пропадании
сигнала?
- /etc/sysconfig/network-scripts/chat-ppp0 (у меня модем Zyxel Elite 2864, соединяюсь с DEOL), содержит expect-send пары для chat
- 'TIMEOUT' '2'
- 'ABORT' 'BUSY'
- 'ABORT' 'ERROR'
- 'ABORT' 'NO CARRIER'
- 'ABORT' 'NO DIAL TONE'
- '' 'ATI2&F'
- 'OK' 'AT*E1&S1S13=2S42=64S52=96'
- 'OK' 'ATDP9329765'
- 'TIMEOUT' '45'
- 'CONNECT' ''
- 'TIMEOUT' '15'
- 'Username:' 'имя'
- 'Password:' '\qпароль'
- /etc/sysconfig/network-scripts/ifcfg-ppp0 по вкусу (например,
уменьшить RETRYTIMEOUT)
- после подъема/опускания канала pppd вызывает /etc/ppp/ip-up и
/etc/ppp/ip-down, которые при необходимости тоже можно настроить (параметры:
интерфейс, tty, скорость, localip, remoteip, ipparam)
- создать в /etc/ppp скрипты для запуска ppp (названия условны):
- deol-up: /etc/sysconfig/network-scripts/ifup-ppp
/etc/sysconfig/network-scripts/ifcfg-ppp0
- deol-down: /etc/sysconfig/network-scripts/ifdown-ppp
/etc/sysconfig/network-scripts/ifcfg-ppp0
- вызывать deol-up/deol-down ручками, вставить в crontab или в графическое
меню - дело вкуса (только с правами надо разобраться)
- а где же pppdump?
firewall и NAT
(masquerading)
Документация:
- IPCHAINS-HOWTO
- NET-3-HOWTO (может есть NET-4?), август 1998
- IP-Masquerading-HOWTO
- PPP-HOWTO
- Ethernet-HOWTO
- Firewall-HOWTO
- сайт автора: Linux IP
Firewalling Chains
- ipchains.8, ipfw.4, ipchains-save.8, ipchains-restore.8
Реализация
firewall в linux 2.1.102 и выше сделана с помощью ipchains. В предыдущих
версиях - с помощью ipfwadm. В следующих версиях обещают полностью
переделать (в 2.3 - network filter). Состоит из кода, встраиваемого в
ядро (при генерации включить FIREWALL, IP_FIREWALL; появляются
/proc/net/ip_fwchains и /proc/net/ip_fwnames), и внешней программы
ipchains (ipchains-save, ipchains-restore). Настойчиво рекомендуется
дефрагментировать все пакеты (/proc/sys/net/ipv4/ip_always_defrag или
IP_ALWAYS_DEFRAG, в зависимости от версии ядра).
Теория. Каждый проверяемый IP-пакет проходит по цепочке ("сквозь строй")
правил, определяющих, что с ним делать. Правило состоит из шаблона и действия.
Каждая цепочка имеет действие по умолчанию. Задействованы цепочки с именами:
- input - обрабатываются пакеты, приходящие снаружи или с loopback;
- forward - обрабатываются пакеты, чьи исходные и конечные адреса лежат
снаружи;
- output - обрабатываются пакеты, уходящие наружу или loopback;
- определенные пользователем - используются в качестве подпрограмм, есть
отлов циклов.
Действия (действие в недопустимом месте эквивалентно
DENY):
- ACCEPT - пропустить пакет;
- REJECT - отвергнуть, послав ICMP Host Unreachable (если пакет не ICMP);
- DENY - выбросить молча;
- MASQ - только для цепочки forward - подменить адрес отправителя на свой,
номер порта на свежесгенеренный и запомнить в таблицах ядро, чтобы обратный
пакет преобразовывался автоматически;
- REDIRECT - только для цепочки input, TCP или UDP - несмотря на то, что
пакет чужой, послать его локальному процессу на указанный порт;
- имя пользовательской цепочки - переход на подпрограмму;
- RETURN - конец цепочки (как бы возврат из пользовательской
цепочки-подпрограммы);
- пусто - только увеличить счетчики байтов и пакетов и перейти к следующему
правилу в цепочке, счетчики - 64-битные.
Конфигурация производится с
помощью ipchains, ipchains-save (сохранение текущей конфигурации на stdout),
ipchains-restore (чтение сохраненной ранее конфигурации с stdin). После
загрузки определены цепочки input (ACCEPT), output (ACCEPT), forward (ACCEPT).
Основные опции ipchains:
- -N имя-цепочки (создать цепочку)
- -X имя-цепочки (удалить пустую цепочку, на которую нет
ссылок)
- -L [ -v ] [имя-цепочки] (показать список
правил и счетчики)
- -A имя-цепочки правило (добавить правило к цепочке)
- -D имя-цепочки номер (удалить правило с указанным
номером, нумерация с 1)
- -D имя-цепочки правило (удалить правило по
текстуальному совпадению)
- -F имя-цепочки (удалить все правила из цепочки)
- -I имя-цепочки номер правило (вставить
правило в цепочку перед правилом с указанным номером, нумерация с 1)
- -R имя-цепочки номер правило (заменить)
- -M -L (показать текущие маскарадные соединения)
- -M -S tcp tcpfin udp (установить
соответствующие timeout в секундах)
- -h icmp (выдать список ICMP имен)
- -Z имя-цепочки (обнулить счетчики)
- -C имя-цепочки пакет (тестировать прохождение пакета)
- -P имя-цепочки действие (изменить действие по
умолчанию)
Шаблон правила может включать (если в качестве адреса хоста
указывается имя, соответствующее нескольким адресам, то при добавляется
соответствующее количество правил; восклицательный знак инвертирует шаблон):
- --proto | -p [!] протокол
(tcp/udp/icmp/all)
- --bidirectional | -b (добавляется два правила: прямое и
обратное)
- --source | -s | --src [!]
address[/mask] [!]
[port[:port]] (маска может быть записана как в
виде 4-х десятичных чисел через точку, так и в виде одного числа)
- --source-port [!] [port[:port]]
- --destination | -d | --dst [!]
address[/mask] [!]
[port[:port]]
- --destination-port [!]
[port[:port]]
- --icmp-type [!] имя
- --interface | -i [!] имя[+]
(ppp0, lo, eth0; + - соответствует любой подстроке)
- --jump | -j действие
[port](номер порта для REDIRECT)
- --mark | -m [+-]число (пометить пакет
для QoS)
- --log | -l (запись о пакете в журнал)
- --numeric | -n (выводить адреса и порты в числовом виде)
- --output | -o [maxsize] (вывести пакет на
устройство netlink)
- -v (повысить болтливость)
- [!] --fragment | -f (только для последующих кусков
фрагментированных пкетов)
- [!] --syn | -y (имеет смысл только для TCP: только
пакеты с установленным флагом SYN, отрицание означает установленный флаг ACK)
- --TOS | -t andmask xormask
(управление битами TOS - type of service)
Тщательно составленные и
отлаженные цепочки сохранять по ipchains-save
(ipchains.transparent_proxy_and_firewall) и восстанавливать при загрузке
по ipchans-restore (/etc/rc.d).
В RH 6.2 появился сервис ipchains (управляемый обычным
chkconfig) в /etc/rc.d/init.d с функциями:
- start (настройки берутся из /etc/sysconfig/ipchains -
делаются либо с помощью функции save, либо ipchains-save)
- stop
- restart
- status
- save (сохранить текущие настройки в /etc/sysconfig/ipchains)
- panic (полная блокировка в случае атаки)
Пример
(/etc/sysconfig/ipchains в RH6.2 позволяет комментарии):
- :input ACCEPT
- :forward ACCEPT
- :output ACCEPT
- # доступ к HTTP-серверу (если есть)
- -A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -i lo -p 6
-j ACCEPT -l
- -A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -p 6 -j
DENY -l
- -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 80:80 -p 6 -j
ACCEPT
- # поддержка transparent proxy
- -A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j REDIRECT 3128
- -A input -s сосед/255.255.255.255 -d наш-адрес/255.255.255.255 3130:3130
-p 17 -j ACCEPT
- -A input -s клиенты-proxy -d наш-адрес/255.255.255.255 3128:3128 -p 6 -j
ACCEPT
- # NTP from LAN and dialup
- -A input -s сервера-NTP 123:123 -d наш-адрес/255.255.255.255 123:123 -p 17
-j ACCEPT
- # syslog from LAN
- -A input -s откуда-беррем-syslog -d наш-адрес/255.255.255.255 514:514 -p
17 -j ACCEPT
- # FTP from anywhere
- -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 21:21 -p 6 -j
ACCEPT
- -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 20:20 -p 6 -j
ACCEPT
- # пропуск FTP passive mode (д.б. согласован с passive ports в ftpaccess)
- -A input --syn -s 0.0.0.0/0.0.0.0 -d 195.161.72.12/255.255.255.255
начало:конец -p 6 -j ACCEPT
- # DNS
- # -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 6 -j
ACCEPT
- # -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 17 -j
ACCEPT
- # на адресах выше 32k только клиенты (кроме ftpd в пассивном режиме, ниже
вообще ничего), заодно борьба с gnome
- -A input --syn -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535
-p 6 -j DENY
- -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 17
-j ACCEPT
- -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 6
-j ACCEPT
- # ICMP
- -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -p 1 -j ACCEPT
- # все остальное - запретить (DENY or REJECT ?)
- -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -j DENY -l
- -A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -l
Маршрутизация
Пока чистая статика. Локальная сетка и прямая маршрутизация модемов на NAS
(routes_to_modems.sh - куча "route add -host адрес gw NAS
metric 1", /etc/rc.d).
В RH 6.2 для тех же целей используется /etc/sysconfig/static-routes, пока оставил как есть.
X11
запуск ("Ной родил Иакова, Иаков родил...")
Начинается все со
startx: добавляет xauth для доступа данного пользователя через
unix и localhost к X-серверу и вызывает xinit. Т.к. никто их оттуда
(.Xauthority и .ICEauthority) не удаляет, то через некоторое время
запуск X начинает тормозить (пытается обратиться к серверу доступа через
указанные в этих файлах порты, а там уже никого нет). Пришлось в собственный
скрипт перед запуском startx добавить обнуление этих файлов).
xinit убеждается в наличии /etc/X11/xinit/Xclients и вызывает
его.
Xclients пытается определить какой desktop установлен и запускает
gnome-session/strtkde/Another Level/AfterStep/...
gnome-session (--help)...
X сервер
Ключ "--nolisten tcp" отменяет прослушивание
порта 6000 для общения с клиентскими программами по TCP/IP. После этого
клиентские программы на этом же хосте, но из-под другого пользователя не
запускаются.
Менеджеры окон
Рабочий стол
Gnome
Количество глюков просто поражает, особенно если запускать на одном экране
приложения для нескольких пользователей.
Запуск панели, если она грохнулась: panel.
Каждая программа из комплекта gnome имеет привычку прислушиваться к tcp порту
из клиентского интервала. Это даже не дыра, а открытые ворота в системе
безопасности. На многократно заданный вопрос один из авторов заявил:
"gnome(ORBit) специально предназначен для работы в сетевом окружении и порты он
будет прослушивать всегда, а наша система безопасности - непробиваема".
Предполагается, что по этому порту программа получает команды от session-manager
(попытка отключить его с помощью ключа запуска --sm-disable или заменой запуска
gnome-session на gnome-wm ни к чему не привела - порты открываются в любом
случае). Таким образом любой осталоп может сконнектиться на этот порт и
"пообщаться" с программой, что иногда вызывает ее аварийное завершение (если
постараться, то и очередной buffer overflow exploit найти можно). Под горячую
руку я закрыл доступ к любым серверным программам на интервале клиентских портов
(фильтруя SYN пакеты), но говорят, что можно закрыть это безобразие через
tcpwrapper (host_access(5)).
xterm
Проблема при работе в linux из xterm под Solaris: не
выходит из режимов реверса и подчеркивания (less)
- infocmp xterm (в Solaris)
- записать в файл в linux (например, xterm-sol.ti)
- отредактировать имя терминала (например, xterm-sol)
- tic -v xterm-sol.ti (в linux, с правами root)
- при каждом заходе из Solaris в linux делать: export TERM=xterm-sol
(или встроить в .bash_profile разбор откуда мы пришли по DISPLAY или - в RH
6.2 - по REMOTEHOST)
Печать
Ссылки:
- Printing-HOWTO
- Printing-Usage-HOWTO
Пакеты printtool, rhs-printfilters и lpr
обеспечивают вполне сносные средства для настройки и печати, но не поддерживают
наш старый HP JetDirect (который вместо lpd использует просто порт TCP/9100).
Приходится устанавливать LPRng. Читая
документацию по LPRng, обнаружил ссылку на netcat, которого мне вполне
хватает для печати страниц из Netscape и прочих PS-файлов. Устанавливаем netcat
(например, из contrib). В /usr/local/bin уже лежит фильтр для преобразования PS
в PCL (ps2pcl.sh). Добавляем туда же tojd.sh:
/usr/sbin/nc
имя-принтера 9100
и pstojd.sh:
ps2pcl.sh | tojd.sh
Вот и все. Теперь вместо команды lp/lpr для печати PS-файлов можно
использовать pstojd.sh. Когда мне потребуется настоящий спулинг, я буду изучать
LPRng ;).
Диски, разделы
Создание и редактирование таблицы разделов производится командой
fdisk
/dev/hda (подставить требуемое имя диска)
Раздел надо создавать в той ОС, которая будет с ним работать. Например, MS
Windows не любит разделов не на границе цилиндра. Переключение режима работы с
большими дисками (LBA/Large/Auto) меняет размер цилиндра. Так что после смены
режима надо заново разбивать диск.
cfdisk, sfdisk, parted
Файловые системы
Создание стандартной файловой системы ext2:
mke2fs
имя-диска
с ключами
- -b размер-блока (по умолчанию 1024, в RedHat 7.0 - 4096)
- -c (искать плохие блоки)
- -f размер-фрагмента (по умолчанию равен размеру блока)
- -m резервируемый-процент (по умолчанию - 5)
- -v
Поиск файлов: locate. Создание базы данных для
поиска: /etc/cron.daily/updatedb.cron (в RH 6.2
/etc/cron.daily/slocate.cron). Добавить ключ "-l 0", что слегка уменьшает
безопасность, зато не надо переходить в root, чтобы найти ВСЕ файлы. Добавить в
список непросматриваемых директорий всякие squid-кеш и inn-иерархии.
swap
Linux позволяет использовать от 1
до 8 разделов диска (тип раздела - 0x82) или файлов в качестве swap-области.
Максимальный размер раздела/файла для Intel-архитектуры - 2GB (на каждый MB
swap-области тратится 1KB ОЗУ). Создание swap-области: mkswap
имя-файла-или-раздела (файл или раздел требуемого размера надо
создать заранее). Включение файла/раздела в работу: swapon [-p
приоритет ] имя-файла-или-раздела. Приоритет может быть
установлен от 0 до 32767. В первую очередь используется место в swap-области с
более высоким приоритетом. Если существует несколько областей с равным
приоритетом, то обеспечивается балансировка нагрузки, так что полезно разнести
их по разным дискам/каналам. Какая-то засада с установкой приоритета по
умолчанию, так что лучше назначать их вручную. Прекратить использование области:
swapoffимя-файла-или-раздела. Посмотреть, какие swap-области
используются и как: swapon -s (или cat /proc/swaps). Чтобы обеспечить
автоматическое включение файла/раздела в работу при начальной загрузке, надо
занести в /etc/fstab строку:
имя-файла-или-раздела none
swap defaults 0 0
(в /etc/rc.d/rc.sysinit выдается команда
swapon -a, надеюсь после монтирование всех локальных файловых систем).
Сервера и клиенты Internet
Проблемы
Загрузка со SCSI при наличии IDE-дисков.
/sbin/lilo делает оба диска
незагружаемыми. Бездумный способ: запускать lilo с выключенным IDE (и в BIOS
тоже). Разумный способ ищется.
Если диск уже запорчен:
- выключить IDE-диски
- загрузиться с дискеты UPDATE
- дойти до места где он монтирует SCSI диски
- перейти в консоль для ручного вмешательства
- mount /dev/sda6 /mnt
- cd /mnt
- bin/bash
- chroot .
- mount /dev/sda1 /boot
- теперь можно запускать lilo
Порталы, посвященные Linux:
Документация
News (USENET) и списки рассылки
Copyright © 1996-2001 Sergey E. Bogomolov