Сделать стартовой / Добавить в избранное / Написать нам
МЕНЮ
ОС Windows
ОС Linux
    » Дистрибутивы
    » Безопасность
    » Сети
    » Аппаратное обеспечение
    » Программирование
    » Система, ядро, утилиты
    » Программное обеспечение
    » Прочее
BIOS
Сети
Безопасность
Вебмастеру
Программисту
Железо

СВЕЖИЙ СОФТ
ЕГЭ ГИА 2011 репетитор и задачник
Гость 11 Портье
Мини-Сайт v.3.6
Мини-Каталог 1.0
Мини-Кадры 1.0
Мини-Смета v.1.4
Мини-Автопредприятие v.1.13
Мини-Зарплата v.3.3
Жадюга 1.9
LLLLLL
ОС Linux   Система, ядро, утилиты

ОС Linux -> Система, ядро, утилиты ->Полноценный Linux-сервер, стартующий с USB Flash

Полноценный Linux-сервер, стартующий с USB Flash

дата добавления: 26.06.2005, просмотров: 4070

Идея разместить полноценную операционку на USB flash карте не нова, особенно актуальной она стала с тех пор как многие материнские платы стали поддерживать загрузку с USB ...

В основном этот документ относится к ОС Linux, причем желательно использовать дистрибутив не менее RedHat 7.3 (там хорошо реализована работа USB).

Желательно уметь пересобирать ядро системы, хотя это не обязательно.

Чтобы успешно решить поставленную задачу, необходимо чётко представлять процесс загрузки системы:

  • стартует загрузчик прописаный в MBR flash
  • далее грузится ядро системы
  • загрузчик, исходя из геометрии диска, находит и загружает образ корневой файловой системы (initrd). Образ размещается в /dev/ram1, это устройство прописывается как корень и управление передаётся в файл /linuxrc. Именно из этого файла осуществляется подгрузка необходимых драйверов scsi или raid. Сами драйверы в виде модулей также распологаются в initrd. По структуре, initrd - это запакованный образ дискеты ёмкостью 2.8 MB, файловая система fat12 или ext2.
  • файл загрузки linuxrc после подгрузки модулей передают в систему параметры реальной файловой системы и меняет на неё корень посредством команды pivoot_root.
  • Дальнейшая загрузка продолжается стандартным образом с вашей реальной файловой системы.

Теперь немного о том, какие команды вам потребуются в процессе работы:

      #mkinitrd <файл назначения> <версия ядра>

Эта команда создаст для вас стандартный загрузочный образ. Обычно он расположен в /boot/initrd-<версия ядра>.img . Образ содержит минимальную root FS (file system), модули прописанные в /etc/modules.conf , а так же стартовый скрипт загрузки /linuxrc . Модули берутся из каталога /lib/modules/<версия ядра>.

      #lilo -v[/color]

Установка загрузчика LILO происходит согласно его файлу настройки (/lilo.conf) вот пример моего lilo.conf:

nowarn
lock
verbose=0
timeout=0
default=snap

disk=/dev/sda
bios=0x80
sectors=63
heads=255
cylinders=16

boot=/dev/sda
install=/boot/boot.b
message=/boot/message
map=/boot/map
linear

image=/boot/bzImage
	label=snap
	initrd=/boot/initrd
	read-only
	root=/dev/ram0

Обратите внимание на то, что скорее всего необходимо жестко задать геометрию вашего flash диска (можно получить из fdisk) , иначе загрузка остановится после старта ядра с надписью "Unable to mount root FS"

Предлагаю еще пару скриптов для облегчения процесса создания и модификации файла initrd:
Распаковываем содержимое образа /boot/initrd.img в каталог /initrd

   cd /
   umount /initrd
   zcat /boot/initrd.img > /dev/ram1
   mount -t ext2 /dev/ram1 /initrd

После внесёных изменений необходимо его вновь запаковать:

  
   cd /
   umount /initrd
   mv /boot/initrd.img /boot/initrd.old
   dd if=/dev/ram1 bs=1k count=2880 | gzip -9 > /boot/initrd.img

Далее задача выглядит следующим образом:

  • проверяем наличие поддержки модулей в ядре
  • проверяем наличие необходимых модулей поддержки USB, RAID, SCSI в /lib/modules/<версия_ядра> и их подключение из /etc/modules.conf
  • создаём новый файл initrd
  • распаковываем и контролируем скрипт загрузки, наличие модулей в initrd, вносим поправки по своему разумению. Мне потребовалось внести в загрузку паузу в 1 сек для нормальной инициализации USB flash. Для контроля посреди загрузки как точку останова можно поставить shell (/bin/sh). При добавлении команд в linuxrc не забудте проверить наличие соответствующих библиотек в том же образе (проверяется как #ldd <имя_файла>).
  • пакуем подкорректированный initrd

Собственно, загрузочная часть готова, а оптимизация системы - это другая тема. По ней рекомендую почитать http://www.linuxfromscratch.org/ и http://www.damnsmalllinux.org/

P.S. Постоянный адрес статьи в интернете http://www.3nity.ru/viewtopic.htm?t=651

Статья взята с сайта OpenNet.

комментарии к статье (0)

Ссылки по теме:

  • Запись дисков CD-R/RW из консоли
  • Архитектура UNIX и Windows
  • История о том, как я настраивал USB flash-memory-drive в Linux
  • Установка Linux на устройство, которое не поддерживается дистрибутивом
  • Утилита lsof - инструмент администратора

  • ВХОД
    (?)
    |
     
       Copyright WinSov © 2003-2005. При использовании материалов ссылка на www.winsov.ru обязательна.
       Designed by "2BEST Studio",  Developed by #Dialer
    Вверх