- •Fedora Core 5 (Bordeaux)
- •2007 Оглавление
- •Многообразие ядер Linux
- •Чуть ближе к истории
- •Хронология
- •Нумерация версий
- •Поддержка
- •Стабильные версии
- •Загрузочные параметры ядра
- •Параметры корневой файловой системы
- •Параметры загрузки управления памяти
- •Параметры управления ram-диском
- •Другие параметры ядра
- •Процессы Немного об архитектуре процессов
- •Общие сведения о процессах
- •Системные вызовы fork() и ехес()
- •Нити Что такое нить?
- •Создание нити и идеология posix api
- •Завершение нити, особенности главной нити
- •Жизненный цикл нити
- •Синхронизация с использованиеmutex Что такое mutex?
- •Использование mutex
- •Проблема тупиков
- •Решение проблемы тупиков
- •Общая схема управления процессами
- •Команды управления процессами Команда ps
- •Команда top
- •Изменение приоритета процесса - команда nice
- •Взаимодействие процессов(ipc)
- •Семафоры
- •Файловая система Видимая сторона файловой системы
- •Имена файлов и каталогов
- •Каталоги
- •Стандартные каталоги
- •Типы файлов
- •Файлы физических устройств
- •Наиболее часто используемые стандартные имена устройств
- •Жесткие и символические ссылки
- •Именованные каналы
- •Права доступа к файлам и каталогам
- •Команды работы с файлами и каталогами
- •Команды chown и chgrp
- •Команда cat
- •Команда cp
- •Команда mv
- •Команды rm и rmdir
- •Команды more и less
- •Команда find и символы шаблонов для имен файлов
- •Команда split — разбиваем файл на несколько частей
- •Сравнение файлов и команда patch
- •Изнанка файловой системы
- •Типы файловых систем, поддерживаемых в Linux
- •Файловая система ext2fs – предшественница ext3fs
- •ReiserFs
- •Файловая система ext3 Введение в файловую систему ext3.
- •Журналируемая файловая система
- •Файловая система ext3
- •Различные журналируемые режимы в файловой системе ext3
- •Управление памятью
- •Аппаратно-независимый уровень управления памятью
- •Страничное замещение основной памяти и swapping
- •Свопинг
- •Управление пространством на устройстве выгрузки
- •Выгрузка процессов
- •Выгрузка при выполнении системной функции fork
- •Выгрузка с расширением
- •Загрузка (подкачка) процессов
- •Подкачка по запросу
- •Структуры данных, используемые подсистемой замещения страниц
- •Функция fork в системе с замещением страниц
- •Сборщик" страниц
- •Управление вводом/выводом
- •Взаимодействие драйверов с программной и аппаратной средой
- •Конфигурация системы
- •Программы обработки прерываний
- •Дисковые драйверы
- •Список используемой литературы
- •Приложение Низкоуровневый ввод/вывод Обзор механизмов ввода/вывод вLinux
- •Файловые дескрипторы
- •Открытие файла: системный вызовopen()
- •Закрытие файла: системный вызов close()
- •Чтение файла: системный вызов read()
- •Запись в файл: системный вызов write()
- •Произвольный доступ: системный вызов lseek()
Параметры управления ram-диском
Все следующие опции сообщают ядру как управлять устройством RAM-диска, обычно используемым для загрузки машины на этапе установки или в машинах с модульными драйверами, которые должны быть уже установлены для доступа к корневой файловой системе.
Параметр `ramdisk_start='
Чтобы разрешить образу ядра находиться на флоппи-диске со сжатым образом ram-диска необходимо добавить команду `ramdisk_start=<смещение>'. Ядро нельзя включить в сжатый образ файловой системы ram-диска, т.к. необходимо хранить его, начиная с нулевого блока, чтобы BIOS смогла считать загрузочный сектор и далее ядро могло загрузить само себя.
Замечание: Если вы использовать несжатый образ ram-диска, то ядро может быть частью образа ФС, загружаемой в ram-диск, а дискету можно загрузить с помощью LILO, или это могут быть два отдельных ядра, как в случае сжатого образа.
Если вы использовать двухдисковую boot/root установку (ядро на диске 1, образ ram-диска на диске 2), то ram-диск должен начинаться с нулевого блока и значение смещения должно быть равно нулю. Поскольку это значения по-умолчанию, вам вообще не обязательно использовать эту команду.
Параметр `load_ramdisk='
Этот параметр сообщает ядру - нужно ли загружать образ ram-диска или нет. При `load_ramdisk=1' ядро будет загружать флоппи-диск в ram-диск. По-умолчанию значение равно нулю, т.е. ядро не должно загружать ram-диск.
Параметр `prompt_ramdisk='
Этот параметр сообщает ядру о необходимости сделать приглашение пользователю для вставки флоппи-диска с образом ram-диска. В однодисковой конфигурации образ ram-диска находится на той же дискете, с которой только что закончилась загрузка ядра, поэтому приглашения не нужно. В этом случае нужно использовать `prompt_ramdisk=0'. В двухдисковой конфигурации вам потребуется заменить диски, поэтому нужно указать `prompt_ramdisk=1'. Поскольку это значение по-умолчанию, в действительности оно не указывается. (Историческая справка: Боязливые обычно используют опцию LILO `vga=ask', временно приостанавливающую процесс загрузки и поволяющую заменить загрузочный диск на корневой.)
Параметр `ramdisk_size='
Поскольку в действительности размер ram-диска растет динамически, по мере необходимости, должено быть ограничение его размера, чтобы он не занял всю память и не оставил вас в недоумении. По-умолчанию это 4096 (т.е. 4МБ), что вполне достаточно. Вы можете изменить значение по-умолчанию, сделать больше или меньше с помощью параметра загрузки.
Параметр `ramdisk=' (устаревшее)
ЗАМЕЧАНИЕ: Этот параметр устарел и не должен использоваться на ядрах, начиная с v1.3.47. Команды устройства ram-диска, которые можно использовать, описаны вышше.
Определяет размер устройства RAM-диска в кБ. Например, если необходима корневая ФС на флоппи-диске 1.44МБ, загруженная в RAM-диск, нужно использовать:
ramdisk=1440
Это один из немногих параметров загрузки ядра, которые хранят значение по-умолчанию в образе ядра и которые, таким образом, могут быть изменены утилитой rdev.
Параметр `noinitrd' (начальный RAM-диск)
В ядрах, начиная с v2.x, корневой файловой системой изначально может быть RAM-диск, а ядро выполняет /linuxrc образа RAM. Эта возможность обычно используется для загрузки модулей, необходимых для монтирования реальной корневой ФС (например, загрузка модулей драйвера SCSI, хранящиеся в образе RAM-диска, а затем монтирование реальной файловой системы на SCSI диске).
Фактически параметр `noinitrd' определяет что будет происходить с данными initrd после загрузки ядра. Если указано, то вместо преобразования их в RAM-диск, они будут доступны через /dev/initrd, который можно прочитать непосредственно перед освобождением памяти и возвращением ее системе. Более подробно об использовании начального RAM-диска смотрите в linux/Documentation/initrd.txt. Кроме того, дополнительную полезную информацию можно найти в самых свежих версиях LILO и LOADLIN.
Параметры загрузки для файловой системы NFS
Linux поддерживает системы, типа бездисковых рабочих станция, благодаря настройке их корневых систем как NFS (Network FileSystem -- Сетевая файловая система). Эти параметры используются, чтобы сообщить бездисковой рабочей станции с какой машины она будет получать систему. Помните, также, что необходим параметр root=/dev/nfs.
Параметр `nfsroot='
Этот параметр сообщает ядру какую машину, какой каталог и с какими опциями NFS использовать в качестве корневой ФС. Формат этого параметра следующий:
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
Если параметр nfsroot не был дан в командной строке, то по-умолчанию будет использовано `/tftpboot/%s'. Другие опции следующие:
<server-ip> - Задает адрес IP сервера NFS. Эсли это поле не задано, то по-умолчанию адрес будет определен переменной nfsaddrs (см. ниже). Одно из применений этого параметра, например, разрешение использования разных серверов RARP и NFS. Обычно оставляете это поле пустым.
<root-dir> - Имя каталога на сервере, монтируемого как корневого. Если в строке имеется фраза `%s', то она будет заменена на ASCII-представление IP адреса клиента.
<nfs-options> - Стандартные опции NFS. Все опции разделены запятыми. Если поле опций не задано, то будут использованы следующие умолчания:
port = как указан демоном portmap сервера
rsize = 1024
wsize = 1024
timeo = 7
retrans = 3
acregmin = 3
acregmax = 60
acdirmin = 30
acdirmax = 60
flags = hard, nointr, noposix, cto, ac
Параметр `nfsaddrs='
Это параметр загрузки устанавливает различные адреса сетевого интерфейса, необходимые для соединения по сети. Если это параметр опущен, то для выяснения этих значений ядро попытается использовать RARP и/или BOOTP. Формат следующий:
nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>
<my-ip> - IP адрес клиента. Если опущен, адрес будет опреледен с помощью RARP или BOOTP. Выбор протокола будет зависить от то, какой был разрешен во время конфигурирования ядра и параметра <auto>. Если параметр указан, то ни RARP, ни BOOTP использоваться не будут.
<serv-ip> - IP адрес сервера NFS. Если для определения адреса клиента используется RARP и этот параметр НЕ опущен, то будут приниматься ответы только от указанного сервера. Для использования разных RARP и NFS серверов, укажите здесь ваш сервер RARP (или оставьте пустым), а сервер NFS укажите в параметре nfsroot (см. выше). Если это поле опущено, то будет использован адрес сервера, ответившего на запрос RARP или BOOTP.
<gw-ip> - IP адрес шлюза, если сервер находится в другой подсети. Если поле опущено, то никакие шлюзы использоваться не будут, подразумевается, что сервер находится в локальной сети, если значение не было получено с помощью BOOTP.
<netmask> - Маска сети для сетевого интерфейса. Если поле опущено, то сетевая маска будет взята из IP адреса клиента, если не будет получено значение по BOOTP.
<name> - Имя клиента. Если поле опущено, будет использован IP адрес клиента в ASCII нотации или значение, полученое по BOOTP.
<dev> - Имя используемого сетевого устройства. Если поле опущено, то для RARP запросов будут использованы все устройства, а для BOOTP -- первое найденное. Для NFS будет использовано устройство, на котором были получены ответы RARP или BOOTP. Если у вас только одно устройство, вы спокойно можете опустить это поле.
<auto> - Используемый метод автоконфигурирования. Если указан `rarp' или `bootp', то используется указанный протокол. Если значение -- `both' (оба) или опущено, то будут применены оба протокола, насколько они были разрешены при конфигурировании ядра. Использование `none' означает отсутствие автоконфигурирования. В этом случае вы должны указать все необходимые значения в предыдущих полях.
Поле <auto> может быть единственным значением параметра nfsaddrs (без всех предыдущих `:') в случае применения автоконфигурирования. Однако в этом случае значение `none' не допустимо.