InstallOnFlash
Установка и загрузка с USB-устройства
Иногда, требуется поставить систему на USB-носитель. Это может быть внутреннее устройство, доступное по шине USB или внешний диск/флешка. Я ставил на CF-карточку в кардридере, т.к. адаптер IDE-CF ещё не купили, а сервер завести нужно было как можно скорее.
Начальные условия
Для проведения подобной операции нужно:
- возможность загрузки с USB-устройства в BIOS компьютера
- источник, откуда будет инсталлироваться система
- возможность обновить пакеты из сети или другого носителя информации (в будущем, это может быть не обязательным)
Мне хватило:
- CF-card 4Gb
- altlinux-server-i586-20080821
- сетевой карты, опознаной инсталлятором
Последовательность установки
Сначала, просто ставим систему, она должна распознать все нужные нам устройства хранения данных. Форматируем флешку и ставим пакеты. Загрузчик я поставил в MBR.
Когда установка будет завершена, не спешите нажимать "Далее"/"Закончить".
- Переключитесь в текстовую консоль ([Ctrl]+[Alt]+[F2])
- Определите, куда подмонтировано Ваше USB-устройство.
- Можно ввести
# mount
и найти строки на подобие
- Можно ввести
/dev/sda2 on /mnt/some_folder type ext3 (rw) proc on /mnt/some_folder/proc type proc (rw, noexec, nosuid, gid=19) sysfs on /mnt/some_folder/sys type sysfs (rw) udevfs on /mnt/some_folder/dev type tmpfs (rw)
в /mnt/some_folder - смонтирован корень файловой системы устройства
- Далее делаем chroot
# chroot /mnt/some_folder
- Проверяем версии ключевых пакетов:
- udev (у меня 127-alt4)
- mkinitrd (у меня 3.0.8-alt1)
Для нормальной загрузки с ядром 2618-std-smp-12M403 они мне подошли.
- Если версии ниже - обновляем. Для этого может понадобиться дополнительный носитель данных или настроенная сеть.
- Генерируем новый initrd:
# mkinitrd -f -v --preload "ehci-hcd uhci-hcd ohci-hcd usb-storage sd_mod" /boot/initrd-2.6.18-std-smp-alt12.M40.3.img 2.6.18-std-smp-alt12.M40.3
Тут может быть и другое ядро. Модули ehci-hcd uhci-hcd ohci-hcd usb-storage sd_mod - необходимы для определения "флешки". - Редактируем конфиг загрузчика. Наш раздел с корнем ФС должен быть доступным по UUID или LABEL. (Посмотреть их можно
# blkid
. У меня получилось так:
lba32 prompt compact default="2618-std-smp-12M403" vga="0x314" boot="/dev/sda" map="/boot/map" timeout="100" install="text" append="panic=30" image="/boot/vmlinuz-2.6.18-std-smp-alt12.M40.3" initrd="/boot/initrd-2.6.18-std-smp-alt12.M40.3.img" label="2618-std-smp-12M403" root="UUID=7deb64be-1be5-49dc-9e0f-4ac9381173f2" read-only optional
- Прописываем его
# lilo
- Выходим в обычную оболочку
# exit
(и не забываем ввести его ещё раз, если запускали bash из chroot'а) - Переходим обратно в графический интерфейс ([Ctrl]+[Alt]+[F7]) и завершаем установку.
Советы
Если при загрузке не успевает определиться USB-устройство, то можно передать ядру дополнительный параметр rootdelay=xx
, где хх - секунды для ожидания медленно думающих устройств.
Ссылки и благодарности
http://lists.altlinux.org/pipermail/community/2007-September/395627.html
http://lists.altlinux.org/pipermail/community/2008-September/417070.html
Спасибо vsu@ за полезные советы.
--DiYago 18:24, 3 сентября 2008 (UTC)