Задача: Получение работающей ОС Linux с внешнего носителя (Flash/HDD)
подключенного к USB-порту.
преимущества изложенного подхода:
1. Возможность использовать на внешнем носителе уже установленную и
настроенную систему
2. Использование стандартных ядер (т.е. без самостоятельной пересборки)
Во-первых загрузка с usb-носителя должна поддерживатся биосом Хоста, ресурсами
которого мы и будем пользоваться. Если с этим все в порядке, то можно смело идти дальше.
Определим этапы получения работающей с usb-носителя Linux-системы, это:
1. Установка системы
1.1 Разметка носителя на разделы.
1.2 Форматирование разделов.
1.3 Установка ОС на носитель.
2. Правка загрузочного образа (файл /boot/*.img)
3. Установка загрузчика. (lilo, grub)
Итак рассмотрим детально эти этапы на примере создания live-flash (с
usb-hdd ситуация аналогична):
1. Установка системы
1.1 Разметка носителя на разделы
Для разбиение на партиции можно использовать утилиту cfdisk.
Пример разбиения 512 метровой флешки:
Disk /dev/sda: 512 MB, 512753664 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1793 458992 83 Linux
/dev/sda2 1794 1956 41728 82 Linux swap / Solaris
1.2 Форматирование разделов.
Раздел на который будет установлен Linux ( и куда будет монтироваться / )
необходимо форматировать с установкой метки (label), например так:
Самый простой способ - скопировать заранее установленную и настроенную ОС Linux
(при небольшом размере носителя её можно урезать, убрав лишние пакеты).
Пусть в /mnt/hd/ подмонтирован раздел с linux (не равный текущему /), тогда:
mkdir -p /mnt/flash
mount /dev/sda1 /mnt/flash
cp -far /mnt/hd/* /mnt/flash/
2. Правка загрузочного образа необходима, для того чтобы система могла
обнаружить и подмонтировать наше usb устройство. Итак берем текущий
img, в моем случае это:
/mnt/flash/boot/initrd-2.6.16-std26-up-alt9.img
в некоторых системах это gzip сжатый cpio архив, в ALT Linux это gzip сжатая romfs файловая система.
Итак, получим доступ к текущему initrd образу:
далее необходимо подправить init скрипт linuxrc
1. Включить модули работы с usb и scsi, обратите внимание на порядок включения модулей
2. Добавить программу sleep, для приостанова системы на момент сканирования usb-шины
и определения носителя, после загрузки ядра и до монтирования.