У меня есть внешний жесткий диск USB с одним большим разделом VFAT. Чтобы время от времени запускать Linux в системе Windows, я хотел бы сохранить установку Debian Linux в одном большом файле (скажем, debianroot.img
) в разделе VFAT внешнего жесткого диска.
Я создаю установку из существующей системы Linux. Я знаю, как создать петлевое устройство для debianroot.img
, создайте и смонтируйте там файловую систему ext3, и я могу установить Debian в целевое расположение, используя debootstrap
(например). Я не знаком только с процессом загрузки.
Моя BIOS поддерживает загрузку с USB-устройства, поэтому он должен работать, чтобы записать диспетчер загрузки в MBR внешнего жесткого диска и начать с него. Но я не уверен, какой менеджер загрузки лучше всего подходит (grub?), Если стандартные ядра Debian имеют достаточно параметров, если / как я настраиваю начальное устройство ramdisk (initrd
) и как правильно получить загрузочные файлы на внешнем жестком диске.
На первый взгляд HOWTO корневой файловой системы loopback кажется, что он содержит очень полезную информацию, но выглядит устаревшим (1999 г.) и не очень специфичен для Debian.
Что касается диспетчера загрузки: при использовании FAT в качестве файловой системы одним из подходов будет syslinux. Особенно при загрузке с USB вы можете подумать об использовании grub для загрузки, так как вы будете гибкими с оболочкой grub (обеспечивая хорошее завершение табуляции). Чтобы установить grub, вы должны запустить что-то вроде:
mount /dev/sdX /mnt/
grub-install --recheck --no-floppy --root-directory=/mnt /dev/sdX
и соответствующим образом отрегулируйте /boot/grub/menu.lst.
Ваш загрузчик должен загрузить ядро и initrd. Таким образом, эти файлы должны находиться за пределами вашего debianroot.img (если вы не используете подход ISO и grub2 с его опцией loopback, см. http://michael-prokop.at/blog/2009/05/25/boot-an-iso-via-grub2/) и должны быть указаны / настроены в вашем загрузчике (syslinux.cfg для syslinux, menu.lst для grub1 и grub.cfg для grub2). Ниже приведен пример файла menu.lst, используемого для системы grml live (http://grml.org/) сгенерированный grml2usb (http://grml.org/grml2usb/):
# misc options:
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
foreground = 000000
background = FFCC33
title grml - Default boot (using 1024x768 framebuffer)
kernel (hd0,0)/boot/release/grml/linux26 apm=power-off vga=791 quiet boot=live nomce live-media-path=/live/grml/
initrd (hd0,0)/boot/release/grml/initrd.gz
Файл initrd должен найти debianroot.img на ваших устройствах и затем смонтировать его с обратной связью. Затем он должен изменить вашу корневую файловую систему, например, pivot_root (см. http://linux.die.net/man/8/pivot_root) внутрь смонтированного файла обратной связи. Вы можете найти более подробную информацию о процессе initrd в Documentation / initrd.txt исходных текстов ядра Linux: http://lxr.linux.no/linux/Documentation/initrd.txt
Если вы хотите узнать, как распространенные живые системы делают подобные вещи, посмотрите debian-live (http://debian-live.alioth.debian.org/) или grml-live (http://grml.org/grml-live/) в сочетании с live-initramfs (который творит всю магию initrd / initramfs и используется в большинстве живых систем на основе Debian; http://packages.debian.org/sid/live-initramfs).
Другой подход к вашему подходу debianroot.img будет заключаться в использовании существующей системы Linux Live на основе Debian, обеспечивающей так называемую «корневую постоянство» (например, официальный проект Debian-live предоставляет это так же, как grml 2009.05).
Вам нужно решить несколько проблем:
1) Загрузитесь с USB-накопителя.
2) Получите загрузчик для загрузки ядра и initrd.
3) Настройте систему так, чтобы она могла перемещаться в раздел «/».
Номер 1 довольно прост: вы получаете BIOS для загрузки USB-устройств, а затем выполняете что-то вроде grub-install, чтобы изменить MBR. Замечания 2 и 3 - разные шаги. Часто у людей есть отдельный маленький раздел / boot, который grub может читать, где grub может найти ядро, initrd и т. Д. Вы ограничены типами устройств и настроек, которые может понять grub. Я не уверен, но я почти уверен, что вы не сможете заставить grub смонтировать файловую систему loopback для доступа к / boot.
Возможно, вам лучше переразбить диск и создать раздел ext2 / 3 для / boot. Вам все равно придется решить проблему настройки initrd и ядра, чтобы файловая система loopback была смонтирована для поворота в '/', но это звучит возможно.
Если вы хотите сохранить файловую систему как VFAT, используйте syslinux.