InstallOnFlash

Материал из ALT Linux Wiki


Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Установка и загрузка с 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)