Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по Fedora Core / 2008-03-11-12-12-Екатерина-Fedora_наша.doc
Скачиваний:
45
Добавлен:
01.05.2014
Размер:
1.18 Mб
Скачать

Другие параметры ядра

Эти различные параметры начальной загрузки позволяют пользователю настраивать некоторые внутренние параметры ядера.

  • Параметр `debug'

Ядро передает важные (и не очень важные) сообщения оператору через функцию printk(). Если сообщение считается важным, функция printk() поместит копию на текущую консоль, а также после доставки направит к функции для регистрации klogd() на диске. Причина печати важных сообщений на консоле наряду с регистрацией на диске в том, что в случае, например, отказа диска сообщение не запишется и будет потеряно.

Пороговое значение цености сообщения задается переменной console_loglevel. По-умолчанию на консоль отправляется все, что важнее отладки (DEBUG - уровень 7). (Эти уровни определены в файле kernel.h) Использование debug в качестве значения параметра загрузки переведет консоль на уровень 10, т.е. все сообщения ядра появятся на консоле.

Обычно уровень консоли можно установить во время выполнения опцией программы klogd(). Как это сделать смотрите на странице man для установленной в вашей системе версии.

  • Параметр `init='

По-умолчанию во время загрузки ядро запускает программу `init', которая затем подготавливает компьютер для пользователя, запуская программы getty, выполняя скрипты `rc' и т.п. В начале ядро ищет /sbin/init, затем /etc/init (обесцененно) и, напоследок, попробует запустить /bin/sh (возможно в /etc/rc). Если, например, ваша программа init повреждена и, таким образом, вы не можете загрузиться, вы можете просто использовать коммандную строку загрузки init=/bin/sh, которая может пропустить вас во время загрузки непосредственно к оболочке чтобы заменить поврежденную программу.

  • Параметр `kbd-reset'

Обычно на i386 машинах ядро Linux не сбрасывает при загрузке контроллер клавиатуры, предполагая что это делает BIOS. Но, как обычно, не все машины делают то, что должны. Использование этой опции может помочь вам, если у вас есть проблемы с клавиатурой. Опция просто заставляет делать сброс во время инициализации. (Некоторые утверждали, что это должно делаться всегда, по-умолчанию).

  • Параметр `maxcpus='

Число, указанное в этом параметре, ограничивает максимальное количество процессоров в режиме SMP. Использование 0 эквивалентно опции nosmp.

  • Параметр `mca-pentium'

Машины IBM модель 95 с Microchannel, по всей видимости, зависают во время теста, обычно выполняемом Linux для обнаружения типа математического сопроцессора. Поскольку все процессоры Pentium имеют встроенные математический сопроцессор, этот тест (и проблему зависания) можно обойти с помощью этоой опции загрузки.

  • Параметр `md='

Если ваша корневая система расположена на составном (Multiple) устройстве, то вы можете использовать это параметр (считаем, что поддержка вкомпилирована в загрузку), чтобы сообщить ядру конфигурацию (layout) составного устройства. Формат (из документации linux/Documentation/md.txt) такой:

md=md_device_num,raid_level,chunk_size_factor,fault_level,dev0,dev1,...,devN

где md_device_num количество устройств md, т.е. 0 означает md0, 1 -- md1 и т.д. Для raid_level используйте -1 для линейного режима и 0 для striped режима. Другие режимы пока не поддерживаются. chunk_size_factor только для raid-0 и raid-1 и устанавливает размер куска (chunk) как PAGE_SIZE, сдвинутый влево на указанное количество. fault_level -- только для raid-1 и устанавливает максимальное количество ошибок. (Пока не поддерживается из-за отсутствия поддержки загрузки для raid1.) dev0-devN -- список устройств, разделенный запятыми, которые составляют индивидуальное устройство md: например, /dev/hda1,/dev/hdc1,/dev/sda1

  • Параметр `no387'

В некоторых сопроцессорах i387 есть ошибки, вылезающие в 32-битовом защищенном режиме. Например, некоторые ранние чипы ULSI-387 вызывают жесткое зависание при вычислениях с плавающей запятой, очевидно из-за ошибки в командах FRSAV/FRRESTOR. Параметр загрузки `no387' позволяет Linux игнорировать мат. сопроцессор, даже если он имеется. Конечно, у вас тогда должно быть ядро с поддержкой математической эмуляции. Это может быть также полезным, если у вас действительно одна из старых 386 машин с 80287 FPU, т.к. Linux не может использовать 80287.

  • Параметр `no-hlt'

У семейства ЦПУ i386 (и его наследниках) есть инструкция `hlt', заставляющая ЦПУ ничего не делать, пока внешнее устройство (клавиатура, модем, диск и т.п.) не вызовут его для выполнения задачи. Это позволяет процессору входить в режим `пониженного потребления', в котором он сидит как зомби пока внешнее устройство его не разбудит (обычно через прерывание). У некоторых ранних чипов i486DX-100 были проблемы с командой `hlt', после которой они не могли надежно вернуться в рабочий режим. С помощью параметра `no-hlt' можно заставить Linux при отстутствии активности выполнять бесконечный цикл вместо остановки процессора. Это позволит владельцам таких бракованных чипов использовать Linux, хотя советуем по возможности менять такие процессоры по гарантии.

  • Параметр `no-scroll'

Этот параметр запрещает при загрузке функцию скроллинга (прокручивания), которая делает сложным применение терминалов Braille.

  • Параметр `noapic'

Эта опция позволяет SMP ядру не использовать расширенные возможности контроллера прерываний в многопроцессорных машинах.

  • Параметр `nosmp'

Позволяет SMP ядру на SMP машинах работать одним процессором. Обычно используется только для отладки и определения наличия зависимости конкретной проблемы от SMP.

  • Параметр `panic='

В маловероятном случае паники ядра (т.е. внутренняя ошибка, обнаруженная ядром, и которую ядро считает достаточно серьезной для громкого предупреждения и последующей полной остановки), по-умолчанию компьютер остается в этом состоянии, пока кто-нибудь не придет, обратит внимание на сообщение паники на экране и перезагрузит машину. Однако, если машина работает автоматически в изолированном месте, возможно более желательно, чтобы машина автоматически перегрузила себя, что вернуться в работу. Например, при panic=30 при загрузке ядро попытается перегрузиться через 30 секунд после паники ядра. Нулевое значение соответствует поведению по-умолчанию, т.е. ждать вмешательства оператора.

Помните, что это время тайм-аута можно также прочитать и изменить через sysctl интерфейс /proc/sys/kernel/panic.

  • Параметр `pci='

  • Параметр `pirq='

Эта опция передает SMP ядру информацию об установках IRQ слота PCI неизвестных (или известных в черном списке) материнских плат SMP. Подробнее смотри в linux/Documentation/IO-APIC.txt.

Параметр `profile='

Разработчики ядер могут разрешать опции, позволяющие им определять как и где ядро тратить циклы ЦПУ, пытаясь максимизировать эффективность. Эта опция позволяет вам указать номер профайла при загрузке. Обычно выбран второй. Вы также можете скомпилировать ядро с профилированием, разрешенным по-умолчанию. В любом случае, вам понадобится инструмент типа readprofile.c, который поможет использовать вывод /proc/profile.

  • Параметр `reboot='

Эта опция задает тип перезагрузки, выполняемой Linux при "сбрасывании" компьютера (обычно через /sbin/init управляя Ctrl-Alt-Delete). По-умолчанию, ядра с v2.0 выполняют "холодную" перезагрузку (т.е. полный сброс, BIOS проверяет память и т.д.) вместо "теплой" перезагрузки (т.е. без полного сброса, память не проверяется). "Холодная" перезагрузка была выбрана по-умолчанию, поскольку появилась тенденция применения дешевого/поврежденного оборудования, не выполняющего требования "теплой" перезагрузки. Чтобы вернуться к старому способу ("теплому" рестарту), примените reboot=w или практически любое слово, начинающееся на букву w.

Причины для беспокойства: некоторые дисковые контроллеры с кэш-памятью на плате могут распознавать теплую перезагрузки и сбрасывать все кэшируемые данные на диск. При холодной загрузке карта может быть инициализирована и данные в кэш памяти карты будут потеряны. Другие считают что системы, затрачивающие много времени на проверку памяти, и/или SCSI BIOS'ы, долго инициализирующиеся при холодном рестарте, являются весомой причиной делать теплую перезагрузку.

  • Параметр `reserve='

Используется для защиты диапазона портов I/O от проверки (probe). Формат команды:

reserve=iobase,extent[,iobase,extent]...

В некоторых машинах бывает необходимо защитить драйверы устройств от поиска устройств (auto-probing) в определенном диапазоне. Причиной может послужить плохо сконструированное аппаратура, вызывающая подвисание загрузки (как на некоторых ethernet картах), устройства, идентифицирующиеся ошибочно, устройства, состояние которых было изменено предыдущим probe, или просто устройства, инициализацию которых ядром вы не желаете.

Этот параметр загрузки reserve устраняет эту проблему, указывая диапазон портов I/O, который нужно исключить из тестирования. Этот диапазон резервируется в таблице ядра регистрации портов как уже определенный (с именем reserved). Учтите, что этот механизм не требуется для большинства машин. Необходимо его применять только при наличии проблем или в специальных случаях.

Порты I/O в указанном диапазоне защищены от поиска устройств, выполняемого процедурой check_region() слепого поиска в области пространства I/O. Это пришлось ввести, когда приводил к зависанию некий драйвер для NE2000, а также ошибочно определял другое устройство, как свое собственное. Корректный драйвер устройства не должен тестировать зарезервированный диапазон, если другой параметр загрузки не будет явно указывать это сделать. Подразумевается, что reserve чаще будет использовать с другим загрузочным параметром. Т.е. если вы зарезервировали диапазон reserve для защиты некоторого устройства, то вы должны явно указать адреса тестирования этого устройства. Большинство драйверов игнорируют таблицу регистрации портов, если им указали явный адрес.

Например, строка загрузки

reserve=0x300,32 blah=0x300

защищает от проверки все драйверы устройств в адресах 0x300-0x31f, за исключением драйвера для `blah'.

Как обычно с загрузочными параметрами имеется ограничение на 11 параметров, таким образом вы можете указать только 5 зарезервированных диапазонов одним ключевым словом reserve. Если у вас необычно сложные запросы, то поможет несколько указателей reserve.

  • Параметр `vga='

Заметьте, что это не совсем загрузочный параметр. Это опция, интерпретируемая LILO, а не ядром, как другие загрузочные аргументы. Однако его применение стало настолько обычным, что заслуживает упоминания здесь. Его также можно установить с помощью rdev -v или эквивалентно vidmode в файле vmlinuz. Это позволяет коду установки использовать BIOS для изменения режима дисплея по-умолчанию до непосредственной загрузки ядра Linux. Обычные режимы 80х50, 132х44 и т.д. Лучший способ применения этой опции - стартовать с vga=ask, который предложит вам список различных режимов, допустимых к использованию с вашим видео-адаптером, до загрузки ядра. После того, как вы выберите нужный номер из упомянутого выше списка, его можно будет поместить на место `ask'.

Помните, что у новейших ядер (v2.1 и выше) код установки, изменяющий видеорежим как опцию, числится как Video mode selection support, поэтому эту опцию необходимо разрешить, если вы желаете использовать эту возможность.