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

В: Я загружаюсь с моих загрузочных дискет, и ничего не происходит. Что я делаю не так?
В: Как работает загрузочный диск Slackware/Debian/RedHat?
В: Как использовать дискеты высокой плотности (> 1440K)? Как я могу узнать, с какой плотностью может работать мой дисковод?
В: Как мне увеличить размер моего ramdisk?
В: Как мне сделать загрузочные CD-ROM?
В: Как сделать загрузочные диски LS-120?
В: Как создать загрузочный диск с драйвером XYZ?
В: Как я могу обновить корневую дискету новыми файлами?
В: Как удалить LILO, чтобы я снова смог загружаться с DOS?
В: Как я могу загрузиться, если я потерял ядро и мой загрузочный диск?
В: Как мне сделать дополнительные копии загрузочных/корневых дискет?
В: Как я могу избежать необходимости каждый раз набирать “ahaxxxx=nn,nn,nn”?
В: При загрузке, я получаю ошибку “A: cannot execute B”. Почему?
В: Мое ядро содержит поддержку ramdisk, но инициализирует ramdisk-и в 0K. Почему?

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

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

О: Смотрите выше секцию Разд. Как это делают профессионалы>.

В: Как использовать дискеты высокой плотности (> 1440K)? Как я могу узнать, с какой плотностью может работать мой дисковод?

О: Смотрите выше, секцию Разд. Уменьшение размера корневой файловой системы>, и комментарии от Alain Knaff по этой теме. Насколько я знаю, его ответ, наиболее авторитетен.

В: Как мне увеличить размер моего ramdisk?

О: Это вероятно должно быть лучше объяснено в тексте, но со временем, я вставлю ответ здесь.

Во-первых, не пытайтесь использовать для этого команды rdev или ramsize, не имеет значения, что сказано в их документации. Слово ramdisk больше не определяет размер ramdisk.

Во-вторых, запомните, что ramdisk фактически динамический; когда вы устанавливаете размер ramdisk вы не резервируете память, вы просто указываете предел, до которого он может вырасти. Не бойтесь устанавливать относительно большой его размер (например, 8 или даже 16 Мб). Пространство оперативной памяти практически не расходуется пока вы его не используете. Вы можете выставить этот предел несколькими способами.

  1. Используйте параметр командной строки ramdisk_size=NNN. Вы можете либо вводить его вручную, либо использовать команду append="ramdisk_size=NNN" в LILO.

  2. Если вы используете LILO, вы можете использовать такую опцию ядра ramdisk=8192K в файле lilo.conf.

  3. Измените конфигурационную опцию CONFIG_BLK_DEV_RAM_SIZE и перекомпилируйте ядро.

В: Как мне сделать загрузочные CD-ROM?

В: Как сделать загрузочные диски LS-120?

О: Так как у меня нет устройства LS-120, следующая далее информация является обобщением информации предоставленной Dave Cinege с Linux Router Project.

LS-120 это IDE floppy устройство. Оно совместимо как со стандартными 3.5" дискетами, так и с новыми 120MB дисками. Оно полностью поддерживаются, начиная с Linux v2.0.31. Чтобы с него загрузиться, ваш BIOS должен содержать поддержку LS-120 как диска 0 (тогда как устройства IDE обычно начинаются с 80). Если Ваш BIOS так не может, чтобы побороть этот недостаток Вы можете купить небольшую карту IDE FloppyMAX от Promise Technologies.

Загрузчику ядра не нравятся LS-120 диски, и он тотчас умрет. Ему также не нравятся диски 2m, и он не будет загружаться. Диски от 1.44MB до 1.74MB работают правильно. SYSLINUX работает с дисками 120MB, начиная с версии 1.32. Если вам не важна MS-DOS совместимость, то Вам лучше не создавать разделы на диске и вместо SYSLINUX использовать ext2 или minix.

LILO правильно работает с дисками 120MB. Вот пример lilo.conf:
        boot=/dev/hda
        compact
        disk=/dev/hda bios=0
        install=/floppy/boot.b
        map=/floppy/map
        image=/floppy/linux
        label=Linux
        append="load_ramdisk=1"
        initrd=/floppy/root.bin
        ramdisk=8192
Вся хитрость загрузки с LS-120 в строке "disk=/dev/hda bios=0".

В: Как создать загрузочный диск с драйвером XYZ?

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

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

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

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

В: Как я могу обновить корневую дискету новыми файлами?

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

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

О: Это не касается загрузочных дисков, но часто спрашивается. В Linux, Вы можете выполнить:
        /sbin/lilo -u

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

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

В: Как я могу загрузиться, если я потерял ядро и мой загрузочный диск?

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

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

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

rdev изменяет настройки ядра, изменяя значение по фиксированному смещению в файле ядра, таким образом, если у Вас есть шестнадцатеричный редактор для любой, установленной у Вас системы, Вы можете сделать то же самое --- например, с помощью Norton Utilities Disk Editor под DOS. Вам следует проверить, а в случае необходимости и изменить, значения в ядре по следующим смещениям:
HEX     DEC  ОПИСАНИЕ
0x01F8  504  младший байт слова RAMDISK
0x01F9  505  старший байт слова RAMDISK
0x01FC  508  младший номер корневого устройства - см. ниже
0X01FD  509  старший номер корневого устройства - см. ниже

Интерпретация слова ramdisk была описана выше в секции Разд. Установка слова ramdisk>.

Значения старшего и младшего чисел устройства должны указывать на устройство, на котором Вы хотите монтировать корневую файловую систему. Некоторые полезные значения:
УСТРОЙСТВО        МЛАДШ. СТАРШ.
/dev/fd0            2     0   первый дисковод
/dev/hda1           3     1   раздел 1 на первом IDE устройстве
/dev/sda1           8     1   раздел 1 на первом SCSI устройстве
/dev/sda8           8     8   раздел 8 на первом SCSI устройстве
После установили этих значений, Вы можете записать файл на дискету, используя либо Norton Utilities Disk Editor, либо программу rawrite.exe. Эта программа включена во все дистрибутивы. Это DOS программа, которая, вместо записи на файловую систему, записывает файл прямо на диск, начиная с загрузочного сектора. Если Вы используете Norton Utilities, Вы должны записать файл в начало физического диска.

В: Как мне сделать дополнительные копии загрузочных/корневых дискет?

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

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

Для копирования оригинала, дайте команду:
        dd if=DEVICENAME of=FILENAME
где DEVICENAME - имя устройства флоппи диска, а FILENAME - имя файла на жестком диске. Пропуск параметра count заставит dd скопировать всю дискету (2880 блоков, для высокоплотной дискеты).

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

Обратите внимание, что выше подразумевается, что у Вас один дисковод. Если у Вас два дисковода одного типа, Вы можете копировать дискеты, используя команду:
        dd if=/dev/fd0 of=/dev/fd1

В: Как я могу избежать необходимости каждый раз набирать “ahaxxxx=nn,nn,nn”?

О: Там где диск не может быть автоматически обнаружен, необходимо снабдить ядро строкой с параметрами устройства, такой как:
        aha152x=0x340,11,3,1
Эта строка параметров, с помощью LILO, может быть применена несколькими способами:

  • Каждый раз при загрузке вводить ее в командной строке LILO. Хотя, это нудно.

  • Использовать в LILO ключевое слово lock, для помещения строки в командную строку по умолчанию, т.о. каждый раз при загрузке LILO будет использовать эти опции.

  • Использовать в конфигурационном файле LILO выражение append=. Заметьте, что строка параметров должна быть в кавычках.

Например, типовая командная строка, использующая вышеупомянутую строку параметров, такова:
        zImage  aha152x=0x340,11,3,1 root=/dev/sda1 lock

Это должно передать строку параметров устройства, установить корневое устройство на /dev/sda1 и сохранить эту командную строку для использования при последующих загрузках.

Пример для APPEND выглядит так:
        APPEND = “aha152x=0x340,11,3,1”

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

Также обратите внимание, для того чтобы строка параметров подействовала, ядро должно содержать драйвер данного типа диска. Если это не так, не кому будет принять строку параметров, и Вы должны пересобрать ядро, чтобы включить требуемый драйвер. Подробнее о сборке ядра смотрите в README в каталоге /usr/src/linux, и читайте Linux FAQ и Installation HOWTO. В качестве альтернативы Вы могли бы получить и установить обобщенное ядро для нужного типа диска.

Перед экспериментами с установкой LILO, настоятельно рекомендуется прочесть документацию LILO. Неосторожное использование выражения BOOT может повредить разделы.

В: При загрузке, я получаю ошибку “A: cannot execute B”. Почему?

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

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

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

  • По крайней мере, у одного человека были проблемы с неспособностью ядра найти init.

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

В: Мое ядро содержит поддержку ramdisk, но инициализирует ramdisk-и в 0K. Почему?

О: Когда это происходит, во время загрузки должно появляться такое сообщение ядра:
        Ramdisk driver initialized : 16 ramdisks of 0K size

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

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

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