Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next Previous Contents

10. Список часто задаваемых вопросов (FAQ).

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

См. секцию Поиск неисправностей, выше.

Q. Как работает загрузочный диск Slackware/Debian/RedHat?

См. секцию Как делают это pros, выше.

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

Самый простой способ - получить Slackware ядро с ближайшего Slackware зеркального сайта. Slackware ядра - семейство ядер, в которых пытаются включить драйвера как можно большего количества устройств, так, если у Вас есть SCSI или IDE контроллер, возможно его драйвер включен в Slackware ядро.

Идите в a1 каталог, и выберите либо IDE либо SCSI ядро в зависимости от типа вашего контроллера. Просмотрите xxxxkern.cfg файл для просмотра списка включенных в ядро драйверов. Если нужное устройство находится в списке, то соответствующее ядро должно загрузить ваш компьютер. Выкачайте xxxxkern.tgz файл, и скопируйте его на вашу загрузочную дискету как описано выше в секции при создании загрузочных дисков.

Вы должны затем проверить корневое устройство в ядре, используя rdev команду:

        rdev zImage 

rdev покажет текущее корневое устройство в ядре. Если оно не такое, как Вам нужно - используйте rdev, чтобы изменить его. Например, ядро, которое я пробовал, было установлено на /dev/sda2, но мой корневой SCSI раздел - /dev/sda8. Чтобы использовать корневую дискету, Вы должны использовать команду:

        rdev zImage /dev/fd0

Если Вы также хотите знать, как установить корневой диск Slackware, это - вне области внимания этого HOWTO, так что я предлагаю Вам просмотреть Linux Install Guide или получить дистрибутив Slackware. См. секцию "Ссылки" в этом HOWTO.

Q. Как я могу обновить мою загрузочную дискету новым ядром?

Просто скопируйте ядро на вашу загрузочную дискету, используя dd команду для загрузочной дискеты без файловой системы, или cp команду для загрузочной/корневой дискеты. Обратитесь к секции "Загрузочный(boot)" этом HOWTO, для подробностей относительно создания загрузочного диска. Описание применимо и к модифицированию ядра на загрузочном диске.

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

Самый простой способ состоит в том, чтобы скопировать файловую систему с rootdisk обратно на DEVICE, которое Вы использовали (из секции Создание файловой системы, выше). Затем примонтируйте файловую систему, и сделайте изменения. Вы должны помнить, где начинается корневая файловая система и сколько блоков занимает:

        dd if=/dev/fd0 bs=1k skip=ROOTBEGIN count=BLOCKS | gunzip > DEVICE
        mount -t ext2 DEVICE /mnt

После внесения изменений, продолжайте как прежде (в Секции Перенос) и перенесите корневую файловую систему обратно на диск. Вам не придется заново переносить ядро или заново вычислять слово ramdisk, если Вы не измените стартовую позицию новой корневой файловой системы.

Q. Как удалить LILO так, чтобы я смог загружаться с DOS снова?

Это не тема Bootdisk, но спрашивается часто. В Linux, Вы можете выполнить:

        /sbin/lilo -u

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

В DOS и Windows Вы можете использовать DOS команду:

        FDISK /MBR

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

Q. Как я могу загрузиться, если я потерял мое ядро и мой диск первоначальной загрузки?

Если у Вас нет загрузочного диска, вероятно самый простой метод - получить Slackware ядро для вашего типа контроллера диска (IDE или SCSI) как описано выше для ``Как я могу сделать загрузочный диск с XYZ драйвером?". Вы можете загрузить ваш компьютер, используя это ядро, затем ремонтируйте любые имеющиеся повреждения.

Полученное ядро может не быть установлено на необходимый тип диска и раздел. Например, обобщенное SCSI ядро Slackware имеет установку корневого устройства в /dev/sda2, в то время как мой корневой раздел Linux, попал на /dev/sda8. В этом случае корневое устройство в ядре должно быть изменено.

Вы можете изменять корневое устройство и ramdisk установки в ядре, даже если все, что у Вас есть - ядро, и некоторая другая операционная система, типа DOS.

rdev изменяет установки ядра, изменяя величины по фиксированному смещению в файле ядра, так что Вы можете делать тот же самое, если у Вас есть шестнадцатеричный редактор доступный на любых системах, все что Вам нужно выполнить --- например, Norton Utilities Disk Editor под DOS. Вы затем должны проверить и в случае необходимости изменить значения в ядре в следующих смещениях:

HEX     DEC  DESCRIPTION
0x01F8  504  младший байт слова RAMDISK
0x01F9  505  младший байт слова RAMDISK
0x01FC  508  младший номер корневого устройства - см. ниже
0X01FD  509  старший номер корневого устройства - см. ниже

Интерпретация ramdisk слова была описана в Секции Установка слова 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, или программу rawrite.exe. Эта программа включена во все дистрибутивы. Это - программа DOS, которая записывает файл прямо на диск, начиная с загрузочного сектора, вместо того, чтобы писать в файловую систему. Если Вы используете Norton Utilities, Вы должны записать файл на физический диск в начало диска.

Q. Как я могу сделать дополнительные копии загрузочных корневых дискет?

Т.к. магнитные носители могут разрушиться через какое-то время, Вы должны хранить несколько копий вашего спасательного диска, в случае, если оригинал невозможно считать.

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

Чтобы скопировать оригинал, введите команду:

        dd if=DEVICENAME of=FILENAME
        где     DEVICENAME имя устройства флоппи диска
        и       FILENAME имя файла на жестком диске

Пропуск параметра count заставляет dd копировать целую дискету ( 2880 блоков, для высокоплотной).

Чтобы скопировать полученный файл обратно на новую дискету, вставьте новую дискету, и введите обратную команду:

        dd if=FILENAME of=DEVICENAME

Обратите внимание, что вышеупомянутое обсуждение предполагает, что у Вас только один дисковод. Если у Вас два дисковода одного типа, Вы можете копировать дискеты, используя команду:

        dd if=/dev/fd0 of=/dev/fd1

Q. Как я могу загружаться без того, чтобы печатать в " ahaxxxx = nn,nn,nn " каждый раз?

Где дисковое устройство не может быть автоматически обнаружено, необходимо обеспечить ядро строкой параметра устройства, типа:

        aha152x=0x340,11,3,1
Эта строка параметра может быть применена несколькими способами используя LILO:

  • Вводить ее в командной строке каждый раз, когда система загружается через LILO. Хотя, это нудно.
  • Использовать ключевое слово ``lock'' LILO , для сохранения командной строки как заданной по умолчанию, т.о. LILO использует эти опции, каждый раз при загрузке.
  • Используя append= выражение в файле конфигурации 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. Неосторожное использование выражения BOOT может повредить разделы.

Q. Во время начальной загрузки, я получаю ошибку "A: cannot execute B". Почему?

Есть несколько имен программ, являющихся жестко указанными в различных утилитах. Это случается не везде, но это может объяснить, почему исполнимая программа не может быть найдена на вашей системе даже при том, что Вы можете видеть, что она - есть. Вы можете выяснять, имеет ли данная программа жестко указанное имя другой, используя команду strings и конвейерный вывод через grep.

Известные примеры жесткого указания:

  • shutdown в некоторых версиях имеет /etc/reboot жестко указанным, так что reboot должна быть помещена в /etc каталог.
  • init вызвал проблемы для по крайней мере у одного человека, с неспособностью ядра найти init.

Чтобы устранить эти проблемы, или переместите программы в правильный каталог, или измените файлы конфигурации (например inittab) указав правильный каталог. Если сомневаетесь, поместите программы в те же самые каталоги, как и на вашем жестком диске, и используйте тот же самый inittab и /etc/rc.d файлы, как на вашем жестком диске.

Q. Мое ядро имеет ramdisk поддержку, но инициализирует ramdisk-и на 0K

Когда это происходит, во время загрузки должно появиться сообщение ядра подобно такому:

        Ramdisk driver initialized : 16 ramdisks of 0K size

Вероятно, потому что размер был установлен в 0 параметрах ядра во времени загрузки. Возможно из-за лишнего параметра файла конфигурации LILO:

ramdisk= 0

Эта строка была включена в примеры файлов конфигурации LILO в некоторых старых дистрибутивах, и было помещено там, чтобы отменить любую предыдущую установку ядра. Если у Вас есть такая строка, удалите ее.

Обратите внимание, если Вы пытаетесь использовать ramdisk, который был установлен в 0K, поведение может быть непредсказуемо, и может приводить к панике ядра (kernel panics).


Next Previous Contents