Текст книги "Linux"
Автор книги: Алексей Стахнов
Жанр: ОС и Сети, Компьютеры
сообщить о неприемлемом содержимом
Текущая страница: 10 (всего у книги 60 страниц) [доступный отрывок для чтения: 20 страниц]
Используются для загрузки ядра операционной системы Linux, передачи параметров ядру и организации загрузки нескольких операционных систем, установленных на компьютере.
Программа-загрузчик, на сегодняшний день является стандартом de-facto практически для любого дистрибутива Linux. LILO (LInux LOader – загрузчик Linux) без проблем может загружать DOS, OS/2, Linux, FreeBSD, Windows и множество других операционных систем.
Стандартно сконфигурированная программа LILO после запуска приостановит свое выполнение и выведет на экран графическое изображение с меню, пунктами которого являются варианты загрузки. Несколько секунд LILO ожидает ввода пользователем варианта загрузки (или специальных команд) и, в случае их отсутствия, запускает вариант загрузки, выбранный при конфигурировании по умолчанию. Обычные варианты загрузки в LILO носят название linux и dos (если в системе установлены одновременно операционная система Windows 9х и Linux).
Конфигурационный файл LILO – /etc/lilo.conf, формат его можно найти в соответствующей справочной документации.
GRand Unified Bootloader (Главный унифицированный загрузчик) – универсальный загрузчик, разработан в Фонде свободного программного обеспечения. Имеет больше возможностей по сравнению с LILO, а также избавлен от некоторых ограничений. В последнее время стал очень популярен, и по распространенности скоро догонит LILO.
Еще одна программа запуска Linux, которая, правда, не используется при старте компьютера, а позволяет загрузить ядро Linux из командной строки DOS (с параметрами загрузки). Применение LoadLin оправдано в том случае, если мы не хотим устанавливать загрузчик типа LILO в MBR (Master Boot Record) винчестера. Этот загрузчик также необходим, если у нас имеется оборудование, использующее драйвер DOS для установки в определенное состояние.
Есть еще несколько других программ, которые можно использовать для загрузки Linux, однако они не получили широкого распространения.
Параметры ядраПрограммы-загрузчики, описание которых приведено выше, способны также, помимо загрузки самого ядра, передавать ему необходимые параметры загрузки.
В параметрах загрузки недопустимо использовать пробелы, кроме как между отдельными аргументами. Список значений для одного аргумента должен разделяться запятыми между значениями. К примеру:
ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1
Посмотреть параметры командной строки, заданные при загрузке, можно набрав /proc/cmdline.
Есть несколько параметров загрузки ядра Linux, хранящих свои значения по умолчанию в его образе. Эти параметры задаются при компиляции ядра, и для того, чтобы не перекомпилировать каждый раз ядро, используется утилита rdev.
Утилита rdev может изменять следующие параметры:
• rdev – устройство, с которого производится загрузка;
• swapdev – устройство, содержащее раздел подкачки (swap);
• ramsize – параметры RAM-диска;
• vidmode – видеорежим по умолчанию;
• rootflags – установка режима монтирования корневого устройства ("только для чтения" или "чтение/запись").
Более подробную информацию по rdev можно найти в соответствующей справочной документации.
Большая часть параметров загрузки имеет вид:
Имя[=значение_1][,значение_2]…[,значение_11]
где имя – уникальное ключевое слово, идентифицирующее часть ядра, которому передаются связанные значения, но не более одиннадцати параметров. Большая часть разбора параметров загрузки происходит в linux/init/main.c. Сначала ядро проверяет, не являются ли параметры одним из специальных параметров root=, ro, rw или debug. Затем ядро просматривает список функций установки (находящийся в массиве bootsetups) в поиске совпадения заданной строки параметра с функцией установки конкретного устройства или части ядра. Если мы передаем ядру строку foo=3,4,5,6, bar, то ядро будет искать, присутствует ли foo в массиве bootsetups. Если присутствует, то ядро вызовет функцию установки, связанную с foo (foo setup ()) и передаст ей целочисленные значения 3, 4, 5 и 6, указанные в командной строке ядра, и также строковый параметр bar.
Если строка не подходит ни для одной функции установки, то этот случай считается установкой переменной окружения. Примером может служить указание переменных окружения term=vtioo или boot_image=vmiinuz.bak в качестве параметров загрузки. Как правило, переменные окружения проверяются скриптами инициализации для разрешения или запрещения большого диапазона параметров.
Любые оставшиеся параметры, не выбранные ядром и не интерпретированные в качестве переменных окружения, будут переданы в дальнейшую обработку, которую обычно выполняет программа init. Чаще всего процессу init в качестве параметра передается слово single, которое сообщает init о необходимости загрузить компьютер в однопользовательском режиме. Список параметров программы init можно найти в соответствующей справочной документации.
Общие неаппаратные параметры загрузкиВ этом разделе рассматриваются параметры загрузки, не связанные с каким-либо оборудованием или периферией, а с параметрами ядра, такими как управление памятью, RAM-диском, корневой системой и т. п.
Параметр root
Этот параметр сообщает ядру, какое устройство будет использовано в качестве корневой файловой системы во время загрузки. По умолчанию эта установка имеет значение корневого устройства системы, на котором было скомпилировано ядро. Например, на одном компьютере корневая файловая система находится на /dev/hda2, а на другом – на /dev/hda6. Если скомпилировать ядро на втором компьютере, перенести его на первый и не указать в параметре root=/dev/hda2, то ядро будет думать, что оно загружается с /dev/hda6. А такого устройства на этом компьютере нет! Допустимыми корневыми устройствами могут быть следующие:
• /dev/hdaN, /dev/hdbN, /dev/hdcN, /dev/hddN, которые являются разделами N на IDE-диске;
• /dev/sdaN, /dev/sdbN, /dev/sdcN, /dev/sddN, /dev/sdeN, которые являются разделами N на SCSI-диске;
• /dev/fd0, /dev/fdl – привод флоппи-диска с номером N;
• /dev/nfs, не являющееся флагом, заставляющим ядро получить корневую файловую систему по сети.
Это один из немногих параметров загрузки ядра, которые хранятся в его образе и могут быть изменены утилитой rdev.
Параметры ro и rw
Параметр го сообщает ядру о необходимости монтирования корневой файловой системы в режиме «только для чтения». Парный ему параметр rw указывает ядру монтировать корневую файловую систему в режиме «чтение/ запись». Сразу после загрузки ядра и запуска процесса init система должна осуществить проверку подмонтированных файловых систем на отсутствие ошибок. Однако, если корневая файловая система смонтирована в режиме «чтение/запись» надежно проверить целостность файловой системы невозможно. Существует два способа решения проблемы:
• Смонтировать изначально корневую файловую систему в режиме "только для чтения".
• Смонтировать изначально корневую файловую систему в режиме "чтение/запись", а перед проверкой перемонтировать ее в режим "только для чтения".
Это одни из немногих параметров загрузки ядра, которые хранят значение в образе ядра и могут быть изменены утилитой rdev.
Все следующие опции сообщают ядру, как управлять устройством RAM-диска, обычно используемым для загрузки машины.
Параметр ramdisk_start
Чтобы разрешить образу ядра находиться на флоппи-диске со сжатым образом RAM-диска, необходимо добавить команду ramdisk_start=<cMei4eHMe>.
Параметр load_ramdisk
Этот параметр сообщает ядру, нужно загружать образ RAM-диска или нет. При ioad_ramdisk=l ядро будет загружать RAM-диск. По умолчанию значение параметра равно нулю, т. е. ядро не должно в этом случае загружать RAM-диск.
Параметр prompt_ramdisk
Этот параметр сообщает ядру о необходимости вывести пользователю приглашение вставить флоппи-диск с образом RAM-диска. В однодисковой конфигурации образ RAM-диска находится на той же дискете, с которой только что закончилась загрузка ядра, поэтому приглашение не нужно. В этом случае нужно использовать команду prompt_ramdisk=0. В двухдисковой конфигурации может потребоваться заменить диски, поэтому нужно указать команду prompt_ramdisk=1. По умолчанию значение равно единице.
Параметр ramdisk_size
Поскольку RAM-диск размещается в оперативной памяти, необходимо каким-то способом указать занимаемый им объем оперативной памяти. По умолчанию это 4096 Кбайт.
Параметр noinitrd (начальный RAM-диск)
В ядрах, начиная с версии 2jc, корневой файловой системой изначально может быть RAM-диск. Эта возможность обычно используется для загрузки модулей, необходимых для монтирования реальной корневой файловой системы (например, загрузка модулей драйвера SCSI, хранящихся в образе RAM-диска, а затем монтирование реальной файловой системы на SCSI-диске).
Параметр noinitrd определяет, что будет происходить с данными initrd после загрузки ядра.
Следующие параметры определяют действия ядра Linux по обнаружению или управлению физической и виртуальной памятью системы.
Параметр mem
Используется для указания объема установленной памяти (или меньшего значения, если требуется ограничить объем памяти, доступный Linux). Старые версии BIOS не могли корректно возвращать количество оперативной памяти, если оно превышало 64 Мбайт. Поэтому приходилось вручную передавать в ядро реально установленное количество памяти.
Ядро воспримет любое значение параметра mem=xx, которое будет указано, однако если указать больший размер памяти, чем физически установлено в компьютере, то при определенном количестве процессов система попытается использовать несуществующий участок памяти и в общем возникнут проблемы, и что самое неприятное, такое может произойти и через месяц-другой после конфигурирования системы.
Количество памяти можно указывать как в шестнадцатеричном представлении, так и в десятичном. Например, если в компьютере установлено 96 Мбайт оперативной памяти, можно указать mem=0x6000000 или mem=96M.
Параметр swap
Позволяет пользователю настраивать некоторые параметры виртуальной памяти (Virtual Memory), относящиеся к разделу подкачки. Он может иметь следующие значения:
• MAX_PAGE_AGE;
• PAGE_ADVANCE;
• PAGE_DECLINE;
• PAGE_INITIAL_AGE;
• AGE_CLUSTER_FRACT;
• AGE_CLUSTER_MIN;
• PAGEOUT_WEIGHT;
• BUFFEROUT_WEIGHT.
В каталоге /usr/src/Linux-2.4.3/Documentation/vm/ содержится полезная документация по этой теме, подставляемая с ядром операционной системы.
Параметр buff
Параметр, похожий на swap, позволяет пользователю настроить некоторые параметры, связанные с управлением буферной памятью. Он может иметь следующие значения:
• MAX_BUFF_AGE;
• BUFF_ADVANCE;
• BUFF_DECLINE;
• BUFF_INITIAL_AGE;
• BUFFEROUT_WEIGHT;
• BUFFERMEM_GRACE.
Linux поддерживает и бездисковые рабочие станции, загружаемые по локальной сети. Для этого необходимо настроить корневую файловую систему бездисковой станции как NFS (Network File System, сетевая файловая система). Чтобы сообщить бездисковой рабочей станции, с какой машины она будет получать операционную систему, используются указанные в этом разделе параметры. Также необходимо установить параметр root=/dev/nfs. Подробная информация по использованию NFS в качестве корневой файловой системы содержится в файле /usr/src/Linux-2.4.3/Documentation/nfsroot.txt. Эта тема также будет рассмотрена в гл. 33.
Параметр nfsroot
Параметр сообщает ядру, какую машину, какой каталог и с какими опциями NFS использовать в качестве корневой файловой системы. Формат этого параметра следующий:
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
Если параметр nfsroot не был дан в командной строке, то по умолчанию будет использовано значение /tftpboot/%s.
Другие опции:
• <server-ip> – задает IP-адрес сервера NFS. Если это поле не задано, по умолчанию адрес будет определен переменной nfsaddrs;
• <root-dir> – имя каталога на сервере, монтируемого как корневой. Если в строке имеется фраза "%s", она будет заменена на ASCII-представление IP-адреса клиента;
• <nfs-options> – стандартные опции NFS. Все опции разделены запятыми. Если поле опций не задано, будут использованы следующие параметры:
– port = указывается демоном роЛтар-сервера
– rsize = 1024
– wsize = 1024
– timeo = 7
– retrans = 3
– acregmin = 3
– acregmax = 60
– acdirmin = 30
– acdirmax = 60
– flags = hard, nointr, noposix, cto, ac
Параметр nfsaddrs
Параметр загрузки устанавливает параметры сетевого интерфейса. Если параметр опущен, то для выяснения этих значений ядро попытается использовать RARP и/или ВООТР. Формат параметра следующий:
nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>
• <my-ip> – IP-адрес клиента. Если параметр опущен, адрес определяется с помощью RARP или ВООТР. Выбор протокола будет зависеть от того, как было сконфигурировано ядро, и от параметра <auto>. Если параметр указан, ни RARP, ни ВООТР использоваться не будут;
• <serv-ip> – IP-адрес сервера NFS. Если это поле опущено, будет использован адрес сервера, ответившего на запрос RARP или ВООТР;
• <gw-ip> – IP-адрес шлюза. Если поле опущено, шлюзы использоваться не будут;
• <netmask> – маска сети для сетевого интерфейса;
• <name> – имя клиента;
• <dev> – имя используемого сетевого устройства. Если поле опущено, для RARP-запросов будут использованы все устройства, а для ВООТР – первое найденное. Для NFS будет использовано устройство, на котором были получены ответы RARP или ВООТР;
• <auto> – автоконфигурирование. Можно использовать следующие значения:
– rarp – использовать протокол RARP;
– bootp – использовать протокол ВООТР;
– both – будут применены оба протокола;
– none – означает отсутствие автоконфигурирования. В этом случае следует указать все необходимые значения в предыдущих полях.
Дополнительные параметры загрузкиЭти параметры начальной загрузки позволяют пользователю настраивать некоторые внутренние параметры ядра.
Ядро Linux имеет возможность выводить важные сообщения на консоль (ошибки ввода/вывода, проблемы с оборудованием и т. п.). Пороговое значение важности сообщения задается переменной consoie_iogievei. По умолчанию на консоль отправляется практически все, кроме отладочной информации. Использование параметра debug позволит всем сообщениям ядра попадать на консоль.
Во время загрузки ядро Linux запускает программу init, которая затем подготавливает операционную систему для полноценной работы. Сначала ядро Linux ищет программу init в каталоге /sbin, а при неудаче попробует запустить ее из каталога /bin/sh. Если программа init повреждена и загрузить операционную систему не удается, можно использовать командную строку загрузки init=/bin/sh, которая даст возможность заменить поврежденную программу или выполнить какие-то другие программы.
Обычно на компьютерах семейства х86 ядро Linux не сбрасывает при загрузке контроллер клавиатуры, предполагая, что это делает BIOS. Однако такое предположение не всегда соответствует действительности. Применение этой опции заставляет во время загрузки Linux делать сброс контроллера клавиатуры.
Параметр ограничивает максимальное количество процессоров, используемое в режиме SMP. Указание в параметре о эквивалентно опции nosmp.
Параметр, специфичный для компьютеров IBM модели 95 с шиной МСА (MicroChannel), которые зависают во время теста, выполняемого Linux для обнаружения типа математического сопроцессора. Эту проблему можно решить с помощью параметра загрузки mca-pentium.
Если корневая система компьютера расположена на составном (Multiple) устройстве (как правило, это RAID-массив дисков), то можно использовать параметр md, чтобы сообщить ядру конфигурацию составного устройства.
Подробная информация по этой теме содержится в файле /usr/src/Linux-2.4.3/Documentation/md.txt.
Параметр актуален только для старых компьютеров на базе процессора i386. В некоторых сопроцессорах 1387 есть ошибки, например, ранние чипы ULSI-387 вызывают зависание при вычислениях с плавающей запятой. Параметр загрузки по387 заставляет Linux игнорировать сопроцессор, даже если он имеется.
Параметр актуален только для старых компьютеров на базе процессора i486. У процессоров Intel есть инструкция hit, заставляющая процессор ничего не делать, пока внешнее устройство (клавиатура, винчестер и т. п.) не вызовут его для выполнения задачи. Некоторые чипы i486 имели проблемы с командой hit, после которой они не могли вернуться в рабочий режим. С помощью параметра no-hit можно заставить ядро Linux при отсутствии активности вместо остановки процессора выполнять бесконечный цикл.
Параметр запрещает при загрузке функцию прокрутки. Актуально только для некоторых устаревших терминалов.
Параметр позволяет ядру Linux с поддержкой мультипроцессорности не использовать расширенные возможности контроллера прерываний в многопроцессорных машинах. Подробную информацию можно найти в файле /usr/src/Linux-2.4.3/Documentation/IO-APIC.txt.
Позволяет ядру Linux с поддержкой мультипроцессорности на SMP-машинах работать только с одним процессором. Обычно используется для отладки.
В крайне редком случае «паники» ядра (обнаруженная ядром внутренняя ошибка, которую ядро считает достаточно серьезной, что приводит к выдаче сообщения kernel panic и полной остановке системы) по умолчанию компьютер остается в этом состоянии, пока администратор его не перезагрузит. Однако иногда необходимо, чтобы машина автоматически перезагрузила себя, чтобы восстановить нормальную работу системы. Используя этот параметр, можно установить время (в секундах), по прошествии которого система попытается перезагрузиться. Например, при установке параметра panic=2 о ядро Linux попытается перегрузиться через 20 секунд после выдачи сообщения kernel panic. Нулевое значение соответствует стандартному поведению – ждать вмешательства администратора.
Также время тайм-аута можно прочитать и изменить через интерфейс /proc /sys/kernel/panic.
Эта опция передает мультипроцессорному ядру информацию об установках IRQ-слота PCI для некоторых материнских плат SMP. Подробную информацию можно найти в файле /usr/src/Linux-2.4.3/Documentation/IO-APIC.txt.
Разработчики ядер могут разрешать опции, позволяющие им с целью оптимизации быстродействия ядра определять, как и где ядро может использовать циклы процессора. Эта опция позволяет указать номер конфигурационного файла при загрузке. Можно также скомпилировать ядро с конфигурацией, разрешенной по умолчанию.
Параметр задает тип перезагрузки, выполняемой ядром Linux. Стандартно ядро Linux выполняет так называемую «холодную» перезагрузку (полная инициализация аппаратного обеспечения, BIOS проверяет память и т. д.). Существует также «теплая» перезагрузка, при которой не происходит первоначального тестирования оборудования, что несколько убыстряет загрузку операционной системы.
Используется для защиты диапазона портов ввода/вывода от тестирования (I/O probe). Формат команды:
reserve=iobase,extent[,iobase,extent]…
В некоторых машинах бывает необходимо защитить драйверы устройств от поиска устройств (auto-probing) в определенном диапазоне. Причиной могут послужить устройства, идентифицирующиеся ошибочно, или устройства, инициализация которых ядром нежелательна.
Параметр загрузки reserve устраняет проблему, указывая диапазон портов ввода/вывода, который необходимо исключить из тестирования. При этом диапазон резервируется в таблице ядра регистрации портов как уже определенный. Такой механизм необходимо использовать только при наличии проблем или в специальных случаях.
Опция, интерпретируемая LILO, а не ядром, однако ее применение стало настолько обычным, что заслуживает упоминания. Также может быть установлена с помощью команды rdev – v. Лучший способ применения этой опции – стартовать с vga=ask. Тогда до загрузки ядра будет предложен список различных режимов, допустимых для имеющейся в системе видеокарты. Более подробная информация содержится в файле /usr/src/Linux-2.4.3/Documentation/svga.txt.
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?