четверг, 29 декабря 2011 г.

Немного извращений с выдернутым сд

Потребовалось поставить в одном месте недосервачок-файлопомойку на бытовом компе. Но времени было от силы минут 10-15. И в качестве дистра был выбран gentoo.
Комп был загружен со своего zalman бокса, который умеет эмулировать двд, прямо на боксе выбирается образ, выбран livecd который install-x86-minimal

Проверили, что айпи выдан. Запомнили его, пробросили на роутере и ушли домой. Бокс был вытащен, не хочется рабочий инструмент оставлять непойми где.
Там автомонтируется раздел на squashfs, который частично сохраняется в памяти. И при грубом извлечении диска получили, что часть файлов у него в кэше, часть отсутствует. И это требует применения бубна.
Если кто так делает - надо перед извлечением вызвать основные команды, чтобы их закэшировало, это прежде всего mount, mkfs.ext3, ls, ifconfig, dd, fdisk/parted, wget/curl

Приехали домой, подключились, приступили.
Доки, которые лучше держать под рукой
quickinstall
Англ хэндбук. Крайне желательно использовать не русский, а этот!
полный хэндбук, рус

Для начала, разметим через parted диск. Хочу gpt.. :)
Было создано 3 раздела:
sda1 - /boot
sda2 - swap
sda3 - /

Активируем своп
mkswap /dev/sda2

Создадим lvm на /dev/sda3 с именем vg0-lvroot, и будет он в /dev/mapper/vg0-lvroot
Попытаемся создать раздел - mkfs.ext3 /dev/sda1, и тут ловим
Dec 28 23:49:09 livecd kernel: SQUASHFS error: Unable to read data cache entry [10cdf76]
Dec 28 23:49:09 livecd kernel: SQUASHFS error: Unable to read page, block 10cdf76, size ff3c

К счастью, тут нам может помочь parted ) Он умеет форматировать диски.
А вот с lvm хуже - он не понимает их и не может создать. Так что примонтируем sda1 и закачаем на него stage3, который нужен для дальнейшей установки, и попутно сделаем финт ушами: закачаем и подключим install-x86-minimal
(похоже, в 3.0 уже убрали создание раздела)
...
livecd / # mount /dev/mapper/vg0-lvroot /mnt/new/
livecd / # cd /mnt/new
livecd new # wget ...
Oops... не катит.
livecd new # curl "http://mirror.yandex.ru/gentoo-distfiles/releases/x86/current-iso/stage3-i686-20111213.tar.bz2" > stage3-i686-20111213.tar.bz2
livecd new # curl http://mirror.yandex.ru/gentoo-distfiles/releases/x86/current-iso/install-x86-minimal-20111213.iso > install-x86-minimal-20111213.iso

Закачали, подмонтируем и починим систему.
livecd new # mount -o loop install-x86-minimal-20111213.iso /mnt/cdrom/
livecd new # mount -o loop -t squashfs /mnt/cdrom/image.squashfs /mnt/livecd

В 2 маунта "оживили" систему, теперь можно отформатировать vg0-lvroot
livecd new # mkfs.ext3 /dev/mapper/vg0-lvroot

А теперь нам бы надо отмонтировать наш временный раздел, но мы снова потеряем squah-раздел, и уже может с нужными утилитами. Делаем финт ушами.

livecd new # mount /dev/mapper/vg0-lvroot /mnt/gentoo/
livecd new # mkdir /mnt/gentoo/boot
livecd new # mount -o bind /mnt/new /mnt/gentoo/boot
livecd new # ls /mnt/gentoo/boot/
install-x86-minimal-20111213.iso  lost+found  stage3-i686-20111213.tar.bz2
livecd new #

Впрочем, можно было сделать и так:
# mkdir /mnt/ram
# mkfs.ext3 /dev/ram15
# mount /dev/ram15 /mnt/ram
# cp /mnt/new/ins* /mnt/ram
Снова подключаем образ как сд, подключаем сквош-раздел. Хотя
# df -k /dev/ram15
Filesystem           1K-blocks      Used Available Use% Mounted on
udev                     10240       164     10076   2% /dev

говорит, что там всего 10 Мб. Надо сначала выгрузить модуль, подгрузить с опцией rd_size=... Но мне этого не требовалось.
И помним, что без монтирования реального диска ничего у меня бы не вышло - mkfs не закэширован был.

подробнее про ram диски

Продолжим.
livecd ~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 945M   32M  914M   4% /
/dev/sr0              130M  130M     0 100% /mnt/cdrom
/dev/loop0            102M  102M     0 100% /mnt/livecd
udev                   10M  164K  9.9M   2% /dev
tmpfs                 102M  102M     0 100% /mnt/livecd/lib/firmware
tmpfs                 102M  102M     0 100% /mnt/livecd/usr/portage
/dev/sda1             457M  270M  163M  63% /mnt/new
/dev/loop1            130M  130M     0 100% /mnt/cdrom
/dev/loop2            102M  102M     0 100% /mnt/livecd
/dev/mapper/vg0-lvroot
                       40G  177M   38G   1% /mnt/gentoo

Дальше работаем по хэндбуку - tar, chroot, обновление, загрузчик, ядро, службы на старте.

Небольшое уточнение: в кратком хэндбуке не все маунты прописаны. Надо:
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
Иначе после чрута нет /dev

---
До этого особо с parted работать не доводилось.. За форматирование конечно спасибо, но тупой он - это нечто. Автоотступ от начала диска? Ой, а я не умею. Создать раздел сразу за текущим? Извините, я слишком туп. Хотя бы формат +2G? А это как?

Комментариев нет:

Отправить комментарий