Pull to refresh

Gentoo & root loopfs

Reading time2 min
Views1.2K
В статье рассматривается возможность установки linux на файловую систему ntfs.

Изначально система была установлена в виртуальной машине и ее образ был скопирован через dd.

Нам потребуется установить genkernel(из него был взят initramfs) и ntfs-3g для поддержки ntfs в режиме записи.
# emerge genkernel ntfs3g

перед созданием genkernel скопируем наш текущий конфиг в конфиг для genkernel
# zcat /proc/config.gz > /usr/share/genkernel/arch/x86/kernel-config

и создаем его.
# genkernel --menuconfig all

распаковываем исходный initrd
# gzip -dc /boot/initramfs-genkernel-x86-2.6.32.9 | cpio -id

немного модифицируем init — добавляем
ntfs-3g /dev/sda1 /mnt
mount -o ro,loop /mnt/gentoo.img ${NEW_ROOT}

копируем ntfs-3g в /bin образа и в /lib все зависимости, которые выдаст ldd
# ldd /bin/ntfs-3g
linux-gate.so.1 => (0xb787e000)
libfuse.so.2 => /usr/lib/libfuse.so.2 (0xb783f000)
librt.so.1 => /lib/librt.so.1 (0xb7836000)
libdl.so.2 => /lib/libdl.so.2 (0xb7832000)
libntfs-3g.so.73 => /lib/libntfs-3g.so.73 (0xb77e9000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb77d0000)
libc.so.6 => /lib/libc.so.6 (0xb7688000)
/lib/ld-linux.so.2 (0xb787f000)
первая библиотека из списка не обязательна

создаем каталог с будущим образом диска
# mkdir -p gentoo/boot

Запаковываем
# find. -print0 | cpio -ov -0 --format=newc | gzip -9 > gentoo/boot/initramfs-genkernel-x86-2.6.32.9

копируем grub
# cp -R /boot/grub gentoo/boot

правим menu.lst, добавляем пункт вида:
title Gentoo Linux 2.6.32.9
root (cd)
kernel /boot/kernel-genkernel-x86-2.6.32.9 root=/dev/ram0 real_root=/dev/loop0 vga=791
initrd=/boot/initramfs-genkernel-x86-2.6.32.9

создаем диск для загрузки
# mkisofs -o gentoo.iso -r -J -V «gentoo-boot» -A «gentoo-boot» -b boot/grub/iso9660_stage1_5 -c boot/boot.cat -v -no-emul-boot -boot-load-size 4 -boot-info-table gentoo

записываем диск
# cdrecord -v gentoo.iso

источники:
The Loopback Root Filesystem HOWTO
Tags:
Hubs:
Total votes 21: ↑18 and ↓3+15
Comments10

Articles