Установка rootfs

Материал из Toshiba AC100 wiki
Перейти к: навигация, поиск

Установщик с оф. сайта Ubuntu — это ядро с ramdisk, содержащим скрипты для распаковки rootfs с флешки во внутреннюю память или на SD. По умолчанию ядро-установщик умеет ставить только один вариант rootfs, однако его можно модифицировать в целях получения некого универсального установщика.

Как работает оф. установщик

  • После загрузки монтируется флешка, на ней ищется tar.gz с соответствующим именем и контрольной суммой
  • Скрипт ищет самый большой внутренний раздел. Если есть карточка, предлагает ставить на неё
  • Распаковывается рутфс
  • Скрипт установки вызывает update-initramfs из-под chroot
  • update-initramfs hook вызывает flash-kernel
  • flash-kernel ищет раздел с ядром, собирает образ обновленного ядра, используя abootimg, и прошивает новое ядро
  • после перезагрузки загружается установленная система

Модификация образа установщика

Итак, есть файл , представляющий из себя образ, подлежащий разбору программой abootimg. Согласно мануалу, для разборки следует использовать команду:

abootimg -x <bootimg> <bootimg.cfg> <kernel> <ramdisk>

где <bootimg> — это имя исходного файла, последующие параметры — имена файлов распакованных компонентов.

Работа с ramdisk

Распаковка:

mkdir ramdisk
cd ramdisk
gunzip -c ../your-ramdisk-file | cpio -i

Далее, собственно, модификация. Все основные действия выполняются из /scripts/installer, функция mountroot()

Пакуем ramdisk обратно:

find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz

Упаковка результата

abootimg --create <bootimg> -f <bootimg.cfg> -k <kernel> -r newramdisk.cpio.gz

У меня получился образ ac100-tarball-installer.img, <range type="comment" id="205919">который ищет на юсб флешке tar.gz и распаковывает его во внутреннюю память.</range id="205919"> Будьте внимательны, убедитесь, что tar.gz единственный и именно тот, который нужен. Этот образ может не отработать на не-ubuntu дистрибутивах, пробуйте, дорабатывайте скрипт.