Назад | Перейти на главную страницу

Загрузите Debian Linux с образа на внешнем USB-накопителе

У меня есть внешний жесткий диск 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.