The Linux Bootdisk HOWTO Tom Fawcett (fawcett@croftj.net) Переводчик: Максим Дзюманенко (max@april.kiev.ua) v3.6, январь 2000 Этот документ описывает, как создать ваши собственные загрузочные дискеты для Linux. Эти дискеты могут использоваться как спасательные диски или для проверки новых компонент системы. Если Вы не читали Linux FAQ и связанные документы, такие как Linux Installation HOWTO и Linux Install Guide, Вы не должны пробовать создавать загрузочные дискеты. Если Вы хотите иметь только спасательный диск, см. Приложение . Предисловие.

Обратите внимание: Этот документ возможно устарел. Если дата на титульном листе - больше чем шесть месяцев назад, пожалуйста проверьте существует ли более современная версия на домашней странице Linux Documentation Project (Проект Документации Linux) . Хотя этот документ должен быть разборчив в этой текстовой форме, он выглядит Заметки о версии.

grahamc@zeta.org.au) написал оригинал Bootdisk-HOWTO, и поддерживал до версии 3.1. Tom Fawcett (fawcett@croftj.net) добавил много материала для ядра 2.0, и он - поддерживает документ начиная с версии 3.2. Многое из содержания оригинала Чапмана остается. Этот документ предназначен для ядра . Эта информация предназначена для Пока в разработке.

Есть добровольцы? Описать (или сослаться на документ, который описывает) как создать другие подобные загрузочным дискам вещи, такие как CDROM-ы, ZIP диски и LS110 диски. Описать как работать с большими libc.so динамическими библиотеками. Базовые варианты - зять старые, маленькие библиотеки или обрезать существующие библиотеки. Проанализировать загрузочные диски дистрибутивов. Обновить "Как это делают Pros" секцию. Удалить секцию, которая описывает как обновить существующие загрузочные диски дистрибутивов. Это обычно создает больше проблем, чем имеет достоинств. Переписать/переработать секцию Поиск неисправностей. Отзывы и благодарности.

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

Copyright © 1995,1996,1997,1998 by Tom Fawcett and Graham Chapman. Этот документ может быть распределен под условиями, изложенными в лицензии Linux Documentation Project на . Пожалуйста свяжитесь с авторами, если Вы неспособны получить лицензию.

Это - бесплатная документация. Она распространяется в надежде, что будет полезна, но без любой гарантии; без даже неявной гарантии пригодности к продаже или пригодности для конкретного применения.

Введение.

Загрузочные диски Linux полезны в ряде случаев, типа: Испытание нового ядра. Восстановления диска после отказа --- от потерянного сектора начальной загрузки до полного отказа диска. Исправление поврежденной системы. Небольшая ошибка пользователя root может сделать вашу систему непригодной к использованию, и Вам, вероятно, придется загружаться с дискеты, чтобы исправить это. Обновление критичных системных файлов, типа Есть несколько способов получения загрузочных дисков: Использовать диск из дистрибутива типа Slackware. Это по крайней мере позволит Вам загружаться. Использовать пакет rescue для создания спасательного диска. Узнать, что требуется для работы каждому типу диска, затем создать ваш собственный. Некоторые люди выбирают последний вариант т.к. они могут справиться сами. Т.о., если что - нибудь ломается, они могут выработать меры по устранению неполадок. Достоинство этого пути - лучший способ понять, как работает система Linux. Этот документ предполагает некоторое базовое знакомство с концепциями администрирования Linux системы. Например, Вы должны знать о каталогах, файловых системах и гибких дисках. Вы должны знать, как использовать /etc/passwd и fstab и на что они похожи. Вы должны знать,что большинство команд в этом HOWTO должен выполнять пользователь root. Построение вашего собственного загрузочного диска с самого начала может быть запутано. Если Вы не читали Linux FAQ и связанные с ним документы, типа Linux Installation HOWTO и Linux Install Guide, Вы не должны пробовать создавать загрузочные дискеты. Если Вам нужен рабочий загрузочный диск для аварийных ситуаций, намного проще загрузить предварительно созданный. См. Приложение ниже. Загрузочные диски и процесс начальной загрузки.

Процесс начальной загрузки.

A: в DOS и /dev/fd0 в Linux). BIOS затем пробует выполнить этот сектор. На большинстве загрузочных дисков, сектор 0, цилиндр 0 содержит либо: код загрузчика - типа LILO, который находит, загружает и выполняет ядро, начиная соответствующую начальную загрузку. начало ядра операционной системы, типа Linux. Если Linux ядро было скопировано необработанным (raw) на дискету, первый сектор диска - является первым сектором ядра Linux. Этот первый сектор продолжит процесс начальной загрузки, загружая остальную часть ядра из устройства начальной загрузки. Как только ядро полностью загружено, оно производит некоторую базовую инициализацию устройств. Затем пробует загрузить и монтировать из некоторого устройства. Корневая файловая система - просто файловая система, которая монтируются как ``/''. Ядру нужно сообщать, где искать корневую файловую систему; если оно не может найти загрузочный образ, оно останавливается. В некоторых ситуациях --- часто при загрузке с дискеты --- корневая файловая система загружена в , который является оперативной памятью (RAM), к которой обращается система, как будто это был диск. Для этого есть две причины. Во-первых, RAM - на несколько порядков быстрее, чем дискета, так что операции системы выполняются быстро; и второй - ядро может загрузить с дискеты и распаковать ее на ramdisk, позволяя поместить на дискете намного больше файлов. Как только корневая файловая система загружена и примонтирована, Вы видите сообщение: VFS: Mounted root (ext2 filesystem) readonly. init inittab sysinit В этой точке система находит /bin или /sbin) и выполняет ее. /etc/inittab, ищет строку, обозначенную /etc/rc или /etc/init.d/boot. Этот скрипт - набор команд оболочки, которые выполняют базовые действия системы, типа: Запуск на всех дисках, Загрузка необходимых Запуск подкачки (swaping), Инициализация сети, Монтирование дисков, указанных в . Этот скрипт часто вызывает различные другие скрипты, для инициализации модулей . Например, в общей структуре SysVinit, каталог /etc/rc.d/ содержит комплексную структуру подкаталогов, чьи файлы определяют, как запускать и завершать большинство служб системы. Однако, на загрузочных дисках сценарий sysinit часто очень прост. Когда сценарий sysinit заканчивается, возвращается управление , которая отвечает за связь с консолью и tty. Это - программа программу, чтобы проверить доступ на вход в систему и установить сеансы пользователя. Типы дисков.

Сделав базовый обзор процесса начальной загрузки, теперь мы можем определять различные типы предполагаемых дисков. Мы классифицируем диски по четырем типам. Здесь и далее в этом документе используется термин ``диск'' как дискета, если не оговорено иначе, хотя большинство обсуждаемого может применяться и для жестких дисков. Корневой (root) Диск с файловой системой, содержащей необходимые файлы для выполнения Linux системы. Такой диск не обязательно содержит или ядро или загрузчик. Загрузочный / Корневой (boot/root) Диск, который содержит, и ядро boot/root disk и корневую файловую систему. Другими словами, он содержит все необходимое для загрузки и выполнения Linux системы без жесткого диска. Преимущество этого типа диска - все требуемое находится на одном диске. Однако, постепенно увеличивающийся размер всего означает, что все более и более трудно поместить все на одной дискете, даже со сжатием. Сервисный (utility) Диск, который содержит файловую систему, которая не предназначена, для монтирования как корневая файловая система. Это - дополнительный диск данных. Вы можете использовать диск этого типа, для хранения дополнительных утилит, если у Вас слишком много помещено на вашем корневом диске. Вообще, когда мы говорим относительно ``создания загрузочного диска'' мы подразумеваем создание обоих boot (ядро) и root (файлы) частей. Они могут быть или одним (одиночный загрузочный/корневой диск) или отдельные (загрузочный + корневой диски). Наиболее гибкий подход для спасательных дискет в использовании отдельно корневой и загрузочной дискет, и одна или более сервисных дискет, чтобы урегулировать превышение. Создание корневой файловой системы.

Корневая файловая система должна содержать все необходимое для поддержки полной Linux системы. Для этого диск должен включить минимальные требования для Linux системы: базовая структура файловой системы, Минимальный набор каталогов: /dev, /proc, /bin, /etc, /lib, /usr, /tmp, Базовый набор утилит: sh, ls, cp, mv, и т.д., Минимальный набор файлов конфигурации: rc, inittab, fstab, и т.д., Устройства: /dev/hd *, /dev/tty *, /dev/fd0, и т.д., Библиотеки поддержки, для обеспечения базовых функций, используемых утилит. Конечно, любая система становится полезной только, когда Вы можете что - нибудь на ней выполнить, и корневая дискета становится полезной, когда Вы можете делать что-то вроде: Проверить файловую систему другого устройства, например проверить корневую файловую систему на жестком диске, у Вас должна быть возможность загрузить Linux с другого устройства- корневой дискеты. Затем Вы можете выполнить на вашем основном корневом диске, в то время как он - не замонтирован. Восстанавливать все или часть вашего основного корневого устройства из архива используя утилиты резервирования типа Мы опишем, как создать Создание файловой системы.

Если на вашей системе нет loop устройства (/dev/loop0,/dev/loop1, и т.д.), Вы должны создать их - ``mknod /dev/loop0 b 7 0''. Как только вы установили специальные /tmp/fsfile). Вы можете использовать команду: dd if=/dev/zero of=/tmp/fsfile bs=1k count= для создания -o loop'' чтобы mount использовала петлевое устройство. mount -o loop -t ext2 /tmp/fsfile /mnt примонтирует /tmp/fsfile (через петлевое устройство) в точке монтирования /mnt. Команда После того, как вы выбрали одну из этих опций, подготовьте DEVICE: dd if=/dev/zero of=DEVICE bs=1k count=3000 Эта команда обнуляет устройство. Этот шаг важен, т.к. файловая система на устройстве будет сжата, для достижения максимальной степени сжатия все неиспользуемые части должны быть заполнены нулями. -i опцию, чтобы определить большее количество inodes чем значение по умолчанию; /dev файлов. mke2fs по умолчанию создаст 360 inodes на дискете 1.44МБ. Я считаю, что 120 inodes вполне достаточно для моей текущей спасательной корневой дискеты, но если Вы включаете все устройства в /dev каталог, Вы легко превысите 360. Использование сжатой корневой файловой системы позволяет иметь большую файловую систему, и следовательно большее количество inodes по умолчанию, но Вы должны либо уменьшить число файлов,либо увеличивать число inodes. Так что Ваша команда выглядит так: mke2fs -m 0 -i 2000 DEVICE ( Если вы используете петлевое устройство, вместо DEVICE должно быть подставлено имя используемого дискового файла. mount -t ext2 DEVICE /mnt ( Вы должны создать каталог монтирования /mnt, если он не существует.) В следующих секциях, все имена каталогов назначения полагаются отностительно /mnt. Заполнение файловой системы.

Существует разумный минимальный набор каталогов для вашей корневой файловой системы: /dev -- Устройства, требуемые для ввода/вывода /proc -- каталог-заглушка, необходимый для proc файловой системы /etc -- системные файлы конфигурации /sbin -- критичные системные бинарники /bin -- базовые бинарники, часть предполагаемой системы /lib -- общие библиотеки, для обеспечения средств динамической поддержки (run-time) /mnt -- точка монтирования для поддержки других дисков /usr -- дополнительные утилиты и приложения ( Представленная здесь структура каталогов - только для использования в корневой дискете. Реальные Linux системы имеют более полный и четкий набор правил размещения файлов, называемый .) /proc - просто заглушка, в которой помещается файловая система proc. Каталоги /mnt и /usr - только точки монтирования для использования после того, как загрузочная/корневая система будет запущена. Следовательно, эти каталоги должны быть только созданы. Оставшиеся четыре каталога описаны в следующих секциях. /dev

/dev каталог содержит специальные файлы для всех устройств, которые обязательно используются в любой Linux системе. Сам каталог - обычный каталог, и может быть создан . Есть более короткий путь - копировать содержимое вашего существующего каталога /dev , и удалить те устройства, которые Вам не нужны. Единственное требование - чтобы Вы, копируя специальные файлы устройств, использовали Убедитесь, что Вы использовали верхний регистр R. Если Вы укажете опцию со строчной буквы cp -dpR /dev /mnt предполагается, что дискета примонтирована в /mnt. Опции используется для ленточных устройств, так что Вам надо скопировать все их, если Вы предполагаете обращаться к вашим ленточным устройствам из загрузочной дискеты. Обратите внимание, что для каждого файла устройства требуется один inode, и /dev каталоге дискеты, которые Вам не нужны. Много устройств очевидно не нужно на специфических системах. Например, если у Вас нет SCSI дисков, Вы можете свободно удалить все файлы устройств начинающиеся с Убедитесь, что включили следующие файлы в этот каталог: console, kmem, mem, null, ram, tty1. /etc

Требуемые всегда, например, Которые могут потребоваться, но не обязательно. Всякий хлам. Файлы, которые не необходимы, могут быть идентифицированы с командой: ls -ltru она выводит файлы в обратном порядке по дате последнего обращения, так если к каким-либо файлам не обращались, их можно не включать в корневую дискету. На моих корневых дискетах число конфигурационных файлов до 15. Это уменьшает мою работу разделив на три набора файлов: Те, которые я должен конфигурировать для загрузочной системы rc.d/* -- скрипты запуска системы и изменения уровня выполнения -- список монтируемых файловых систем -- параметры для процесса Те, которые я должен привести в порядок для загрузочной системы: -- список пользователей, домашних каталогов, и т.д. Если безопасность важна, содержит по крайней мере Остальные. Они работают в данный момент, так что я оставляю их. Помимо этого, я действительно должен конфигурировать только два файла, и то, что они должны содержать, удивительно мало. #!/bin/sh /bin/mount -av /bin/hostname Kangaroo Убедитесь, что каталоги правильны. В действительности Вы не должны выполнять - это только выглядит лучше, если Вы это сделаете. должен содержать по крайней мере: /dev/ram0 / ext2 defaults /dev/fd0 / ext2 defaults /proc /proc proc defaults Вы можете копировать записи из вашего существующего Ваш должен быть изменен так, чтобы строка выполнила rc, или любой базовый сценарий начальной загрузки, который будет использоваться. Также, если Вы хотите запретить пользователям на последовательных портах входить в систему, закоментируйте все записи для файл выглядит так: id:2:initdefault: si::sysinit:/etc/rc 1:2345:respawn:/sbin/getty 9600 tty1 2:23:respawn:/sbin/getty 9600 tty2 файл определяет то, что система будет запускаться в различных режимах включая запуск, переход в многопользовательский режим, и т.д. Тщательно проверьте, команды указанные в /etc/shutdown имеет жестко связан с /etc/reboot. Если я перемещаю /bin/reboot, и затем выдаю команду /etc каталоге, плюс все исполняемые программы в вашем /etc каталоге, в которых Вы не уверены, что они Вам не понадобятся. Как инструкцией, руководствуйтесь примером, в секции . Вероятно достаточно скопировать только эти файлы, но системы значительно отличаются, так что Вы не можете быть уверены, что тот же самый набор файлов на вашей системе эквивалентен файлам в списке. Единственный верный метод - начать с /etc/rc.d/ каталог, содержащий сценарии оболочки для различных уровней выполнения. Минимум - одиночный и /etc/rc.d каталог из вашей существующей системы, и сокращать сценарии оболочки в /bin и /sbin

/bin - удобное место для дополнительных утилит, которые должны выполнять базовые операции, утилиты типа для примерного списка файлов, которые входят в /bin и /sbin каталоги. Он не включает никакие утилиты восстановления из резервных копий, типа /usr. Создание . Вероятно желательно хранить копию той же самой версии утилит резервирования, используемых для записи резерва, чтобы Вы не тратить впустую время, пробуя установить версии, которые не смогут прочитать ваши ленты резервирования. Удостоверьтесь, что Вы включили следующие программы: /lib

/lib Вы помещаете необходимые общедоступные библиотеки и загрузчики. Если необходимые библиотеки не найдены в вашем /lib каталоге система будет не способна загрузиться. Если вам повезет, то Вы сможете увидеть сообщение об ошибках, сообщающее Вам причину. libc.so., где /lib каталог. % ls -l /lib/libc* -rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so* lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so* В этом случае Вам надо командой. Например: % ldd /sbin/mke2fs libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000) libuuid.so.1 => /lib/libuuid.so.1 (0x40028000) libc.so.6 => /lib/libc.so.6 (0x4002c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Каждый файл справа - нужен. Имейте в виду, что перечисленные библиотеки могут быть символическими ссылками. Заметьте, что некоторые файлы очень большие и не будут просто помещаться на корневой файловой системе. Например, для инструкций. /lib Вы должны также включить загрузчик для библиотек. Загрузчик может быть либо % file/lib/libc.so.4.7.2 /lib/libc.so.5.4.33 /lib/libc-2.1.1.so /lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC), stripped /lib/libc.so.5.4.33: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped /lib/libc-2.1.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped Обеспечение для PAM и NSS.

Если ваша система использует PAM (Pluggable Authentication Modules) Вы должны принять некоторые меры, иначе Вы будете не способны войти в систему. PAM - изощренный модульный метод, для опознавания пользователей и их доступа к службам. Простой путь проверки использования вашей системой PAM состоит в проверке каталога /etc на вашем диске на наличие файла pam.conf или каталога pam.d; если они существуют - вы должны обеспечить минимальную поддержку PAM.(В качестве альтернативы запустите ldd для вашего исполняемого файла login; если выдаваемая информация включает libpam.so вам нужен PAM). К счаcтью, безопасность не имеет значения для загрузочных дисков, т.к. если кто-то имеет физический доступ к машине он может сделать все, что захочет. Следовательно, по существу вы можете запретить PAM создав в вашей корневой файловой системе простой /etc/pam.conf: OTHER auth optional /lib/security/pam_permit.so OTHER account optional /lib/security/pam_permit.so OTHER password optional /lib/security/pam_permit.so OTHER session optional /lib/security/pam_permit.so Также скопируйте файл /lib/security/pam_permit.so в вашу корневую файловую систему. Эта библиотека приблизительно 8Кб, т.о. она налагает минимальные расходы. Заметьте, что эта конфигурация разрешает любому полный доступ к файлам и службам на вашей машине. Если по некоторым причинам Вы заботитесь о безопасности вашего загрузочного диска, Вы должны скопировать некоторые или все установки PAM на вашу корневую файловую систему. Прочтите внимательно документацию на PAM и скопируйте необходимые библиотеки в /lib/security на вашей корневой файловой системе. Вы также должны включить /lib/libpam.so на ваш загрузочный диск. Но Вы уже об этом знаете, т.к. запускали ldd для /bin/login, который показал эту зависимость. NSS (Name Service Switch).

Если Вы используете glibc (или libc6) Вы должны обеспечить name services или вы не сможете войти в систему. Файл /etc/nsswitch.conf управляет поиском по базе данных для различных служб. Если вы не планируете доступ к сетевым службам (таким как DNS, NIS поиск). Вы должны подготовить простой nsswitch.conf файл который выглядит так: passwd: files shadow: files group: files hosts: files services: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files automount: files aliases: files netgroup: files publickey: files Это указывает, что каждая служба будет иметь доступ только к локальным файлам. Вы также должны включить /lib/libnss_files.so.1, которая загружается динамически для работы с обзором файлов. Если вы планируете доступ к сети с вашего загрузочного диска, вы должны создать более замысловатый файл nsswitch.conf. Для подробностей смотрите man страницу nsswitch. Запомните, что Вы должны включить файл /lib/libnss_service.so.1 для каждой указанной службы. Модули.

/lib/modules. Вы должны также включить /etc/conf.modules. Однако, основное преимущество использования модулей - то, что Вы можете перемещать некритические модули на сервисный диск и загружать их когда необходимо, т.о. используется меньше пространства на вашем загрузочном диске. Если Вам, возможно, придется иметь дело с многими различными устройствами, этот подход предпочтительнее, чем формирование одного огромного ядра с многими встроенными драйверами. Некоторые заключительные подробности.

Некоторые системные программы, типа /var/run/utmp и каталог /var/log не существует. mkdir -p /mnt/var/{log,run} touch /mnt/var/run/utmp В заключение, после того, как Вы установили все библиотеки, Вам необходимо, выполнить /etc/ld.so.cache на корневой файловой системе. Кэш сообщает загрузчику, где найти библиотеки. Чтобы пересоздать chdir /mnt; chroot /mnt /sbin/ldconfig Перенос.

/usr/src/linux. Если создание ядра - проблема для Вас, то Вы, вероятно, не должны пытаться создавать загрузочную систему. Не забудьте сжать ядро ``Совмещение их вместе: Создание диска (ов).

Теперь у Вас есть ядро и сжатая корневая файловая система. Если Вы создаете загрузочный/корневой диск, проверьте их размеры, чтобы убедиться, что они оба поместятся на одном диске. Если Вы делаете две дискеты загрузочную + корневую, проверьте помещается ли корневая файловая система на одной дискете. Вы должны решить, использовать LILO для загрузки или bootdisk ядро. Альтернатива - копировать ядро непосредственно на дискету и загружаться без /etc/lilo.conf в вашей системе. Если он существует и имеет строку ``. Перенос ядра с LILO

Последний шаг - перенос корневой файловой системы. если корневая файловая система будет dd if=rootfs.gz of=/dev/fd0 bs=1k seek=KERNEL_BLOCKS если корневая файловая система будет помещена dd if=rootfs.gz of=/dev/fd0 bs=1k Поздравляю, Вы сделали это! Вы должны всегда проверять загрузочный диск перед откладыванием его в сторону до критической ситуации! Если он не загружается - читайте. Поиск неисправностей, или Агония Поражения.

Если Id xxx respawning too fast: disabled for 5 minutes /etc/inittab корректно. Если Вы получаете странные сообщения от /etc/inittab неправильна. Опции программ . Проблема может быть также в использовании вами скрытых паролей, и не скопированном /etc/shadow на ваш загрузочный диск. Если Вы пытаетесь выполнять некоторые программы, типа Разнообразные темы.

Уменьшение размера корневой файловой системы

' на этих файлах сообщит Вам 'not stripped'. При копировании бинарников в вашу корневую файловую систему, хорошо это использовать: objcopy --strip-all FROM TO objcopy --strip-debug FROM TO . Вы можете также обдумать перемещение модулей на сервисный диск. Не - ramdisk корневые файловые системы.

. В этом случае, бинарники могут быть помещены в каталог /bin на вашем сервисном диске, т.о. получается путь /usr/bin для доступа к ним. Дополнительные библиотеки нужные бинарники, помещены в /lib на сервисном диске. Есть несколько важных моментов, которые нужно иметь в виду при проектировании сервисного диска: Не помещайте критические бинарники системы или библиотеки на сервисный диск, так как он не будет примонтирован, пока система не загрузилась. Вы не можете обращаться к дискете и ленточному накопителю одновременно. Это означает,что если у Вас есть ленточный накопитель, Вы будете не способны обратиться к нему, пока ваш сервисный диск примонтирован. Доступ к файлам на сервисном диске будет медленный. Приложение показывает пример содержимого сервисного диска. Есть несколько полезный идей: программы для проверки и управления дисками (Как это делают pros.

Q. Я загружаюсь с моих загрузочных дискет, и ничего не происходит. Что я делаю не так?

См. секцию , выше. Q. Как работает загрузочный диск Slackware/Debian/RedHat?

См. секцию , выше. Q. Как я могу сделать загрузочный диск с XYZ драйвером?

Самый простой способ - получить Slackware ядро с ближайшего Slackware зеркального сайта. Slackware ядра - семейство ядер, в которых пытаются включить драйвера как можно большего количества устройств, так, если у Вас есть SCSI или IDE контроллер, возможно его драйвер включен в Slackware ядро. Идите в rdev zImage /dev/sda2, но мой корневой SCSI раздел - /dev/sda8. Чтобы использовать корневую дискету, Вы должны использовать команду: rdev zImage /dev/fd0 Если Вы также хотите знать, как установить корневой диск Slackware, это - вне области внимания этого HOWTO, так что я предлагаю Вам просмотреть Linux Install Guide или получить дистрибутив Slackware. См. секцию "Ссылки" в этом HOWTO. Q. Как я могу обновить мою загрузочную дискету новым ядром?

Q. Как я могу модифицировать корневую дискету новыми файлами?

, выше). Затем примонтируйте файловую систему, и сделайте изменения. Вы должны помнить, где начинается корневая файловая система и сколько блоков занимает: dd if=/dev/fd0 bs=1k skip=ROOTBEGIN count=BLOCKS | gunzip > DEVICE mount -t ext2 DEVICE /mnt После внесения изменений, продолжайте как прежде (в Секции ) и перенесите корневую файловую систему обратно на диск. Вам не придется заново переносить ядро или заново вычислять слово ramdisk, если Вы не измените стартовую позицию новой корневой файловой системы. Q. Как удалить LILO так, чтобы я смог загружаться с DOS снова?

/sbin/lilo -u Вы можете использовать команду FDISK /MBR MBR означает Главная Загрузочная Запись, и это заменяет загрузочный сектор на чистый DOS, без воздействия на таблицу разделов. Некоторые пуристы не согласны с этим, но даже автор LILO, Werner Almesberger, предлагает это. Это просто, и работает. Q. Как я могу загрузиться, если я потерял мое ядро

Если у Вас нет загрузочного диска, вероятно самый простой метод - получить Slackware ядро для вашего типа контроллера диска (IDE или SCSI) как описано выше для ``Как я могу сделать загрузочный диск с XYZ драйвером?". Вы можете загрузить ваш компьютер, используя это ядро, затем ремонтируйте любые имеющиеся повреждения. Полученное ядро может не быть установлено на необходимый тип диска и раздел. Например, обобщенное SCSI ядро Slackware имеет установку корневого устройства в /dev/sda2, в то время как мой корневой раздел Linux, попал на /dev/sda8. В этом случае корневое устройство в ядре должно быть изменено. Вы можете изменять корневое устройство и ramdisk установки в ядре, даже если все, что у Вас есть - ядро, и некоторая другая операционная система, типа DOS. HEX DEC DESCRIPTION 0x01F8 504 младший байт слова RAMDISK 0x01F9 505 младший байт слова RAMDISK 0x01FC 508 младший номер корневого устройства - см. ниже 0X01FD 509 старший номер корневого устройства - см. ниже Интерпретация ramdisk слова была описана в Секции , выше. Старшие и младшие числа устройства должны быть установлены на устройство, на котором Вы хотите монтировать вашу корневую файловую систему. Некоторые полезные значения: DEVICE MAJOR MINOR /dev/fd0 2 0 первый флоппи-диск /dev/hda1 3 1 раздел 1 на 1-ом IDE устройстве /dev/sda1 8 1 раздел 1 на 1-ом SCSI устройстве /dev/sda8 8 8 раздел 8 на 1-ом SCSI устройстве Как только Вы установили эти величины,Вы можете записать файл на дискету, используя Norton Utilities Disk Editor, или программу Q. Как я могу сделать дополнительные копии загрузочных корневых дискет?

Т.к. магнитные носители могут разрушиться через какое-то время, Вы должны хранить несколько копий вашего спасательного диска, в случае, если оригинал невозможно считать. Самый простой способ создания копий любых дискет, включая загрузочные и сервисные дискеты - использовать dd if=DEVICENAME of=FILENAME где DEVICENAME имя устройства флоппи диска и FILENAME имя файла на жестком диске Пропуск параметра dd if=FILENAME of=DEVICENAME Обратите внимание, что вышеупомянутое обсуждение предполагает, что у Вас только один дисковод. Если у Вас два дисковода одного типа, Вы можете копировать дискеты, используя команду: dd if=/dev/fd0 of=/dev/fd1 Q. Как я могу загружаться без того, чтобы печатать в " ahaxxxx = nn,nn,nn " каждый раз?

aha152x=0x340,11,3,1 Эта строка параметра может быть применена несколькими способами используя LILO: Вводить ее в командной строке каждый раз, когда система загружается через LILO. Хотя, это нудно. Использовать ключевое слово ``Используя Например, типовая командная строка, использующая вышеупомянутую строку параметра должна быть: zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock Это должно передать строку параметра устройства и также просить, чтобы ядро установило корневое устройство на /dev/sda1 и сохранить всю командную строку и использовать ее для всех будущих загрузок. Примерное выражение APPEND: APPEND = "aha152x=0x340,11,3,1" Заметьте, что строка параметра не должна быть заключена в кавычки в командной строке, но она ДОЛЖНА быть ЗАКЛЮЧЕНА в кавычки в выражении APPEND. Заметьте также, что для действующей строки параметра, ядро должно содержать драйвера для данного типа диска. Если это не так, то нет ничего принимающего строку параметра, и Вы должны пересобрать ядро, чтобы включить требуемый драйвер. Для подробностей относительно сборки ядра, войдите в /usr/src/linux и читайте README, и читайте Linux FAQ и Installation HOWTO. В качестве альтернативы Вы могли бы получить обобщенное ядро для дискового типа и установить его. Читающим строго рекомендуется прочесть LILO документацию перед экспериментами с установкой LILO. Неосторожное использование выражения Q. Во время начальной загрузки, я получаю ошибку "A: cannot execute B". Почему?

shutdown в некоторых версиях имеет /etc/reboot жестко указанным, так что reboot должна быть помещена в /etc каталог. Чтобы устранить эти проблемы, или переместите программы в правильный каталог, или измените файлы конфигурации (например /etc/rc.d файлы, как на вашем жестком диске. Q. Мое ядро имеет ramdisk поддержку, но инициализирует ramdisk-и на 0K

Когда это происходит, во время загрузки должно появиться сообщение ядра подобно такому: Ramdisk driver initialized : 16 ramdisks of 0K size Вероятно, потому что размер был установлен в 0 параметрах ядра во времени загрузки. Возможно из-за лишнего параметра файла конфигурации LILO: ramdisk= 0 Эта строка была включена в примеры файлов конфигурации LILO в некоторых старых дистрибутивах, и было помещено там, чтобы отменить любую предыдущую установку ядра. Если у Вас есть такая строка, удалите ее. Обратите внимание, если Вы пытаетесь использовать ramdisk, который был установлен в 0K, поведение может быть непредсказуемо, и может приводить к панике ядра (kernel panics). Ресурсы и указатели.

При получении пакета, всегда получайте последнюю версию, если у Вас нет должных оснований не делать так. Pre-made bootdisks.

Несколько пакетов для создания спасательных дисков доступны на sunsite.unc.edu. С этими пакетами Вы определяете включаемый набор файлов, и программы автоматизируют (в различной степени) создание загрузочного диска. Для подробной информации смотри Сценарии оболочки Грэма Чапмана

Грэм Чапман написал набор скриптов, которые могут быть полезны как примеры того, как создать загрузочные диски. В предыдущих версиях этого HOWTO сценарии были приведены в приложении, но они были удалены из документа и помещены на WEB страницу: Вы можете найти удобным использовать эти сценарии, но читайте тщательно инструкции --- например, если Вы определяете неправильное устройство подкачки, то ваша корневая файловая система будет полностью и окончательно уничтожена. Убедитесь, что Вы правильно сконфигурировали их перед использованием! LILO -- Linux Linux загрузчик.

. Также доступен на Sunsite и зеркалах. Linux FAQ и HOWTO.

Они доступны из многих источников. Просмотрите группы новостей и HOWTO из . Большинство Linux документации может быть найдено на домашней странице Проекта Документации Linux . Использование Ramdisk.

/usr/src/linux/Documentation/ramdisk.txt. Он написан Paul Gortmaker и включает секцию о создании сжатого ramdisk. Процесс загрузки Linux.

Гид Linux Системных Администраторов содержит секцию о загрузке, См. LILO ``Технический обзор'' Имеет вполне достаточно подробное техническое описание процесса начальной загрузки, до запуска ядра. исходный код - окончательный источник. Ниже - некоторые файлы ядра, связанные с процессом начальной загрузки. Если у Вас есть исходный код ядра Linux, Вы можете найти их в /usr/src/linux на вашей машине; в качестве альтернативы, у Shigio Yamaguchi (shigio@wafu.netgate.net) очень хороший гипертекстовый просмотрщик ядра . Здесь несколько относящихся к делу файлов: arch/i386/boot/bootsect.S,setup.S Содержит ассемблерный код загрузочного сектора. arch/i386/boot/compressed/misc.c содержит код декомпрессии ядра. arch/i386/kernel/ Каталог, содержащий код инициализации ядра . drivers/block/rd.c Содержит ramdisk драйвер. Процедуры LILO коды ошибок при загрузке.

. Когда LILO загружается самостоятельно, он показывают слово `` (Ничего) Никакая из частей LILO не была загружена. Или LILO не установлен, или раздел, на котором размещен сектор начальной загрузки , не активен. /boot/boot.b без запуска map installer. /boot/boot.b без выполнения map installer. /boot/boot.b без выполнения map installer. Если BIOS сообщает о ошибке, когда LILO пытается загрузить загрузочный образ, отображается соответствующий код ошибки. Коды располагаются от Пример каталога корневого диска.