LINUX.ORG.RU

Как из Live-CD сделать Live-flash-USB под оффтопиком?


0

0

Ориентировался на инструкцию http://www.debian.org/releases/stable/i386/ch04s04.html.en : распаковал образ ISO, положил в корень флешки vmlinuz, initrd.gz, syslinux.cfg и образ ubuntu.iso. Запустил syslinux.exe -ma G: (G: -- имя флешки, syslinux.exe взял из http://www.kernel.org/pub/linux/utils/boot/syslinux/ ), установилось без ошибок, создало ldlinux.sys.

Но вместо загрузки иксов с флешки получаю только busybox.

Содержимое syslinux.cfg:
default vmlinuz
append initrd=initrd.gz

Что сделать, чтобы загрузило систему из ISO? Или его надо распаковать? Тогда как цеплять filesystem.squashfs ?

★★★

Ответ на: комментарий от desruptor

Канал узкий, а надо было срочно, пока владелец ноутбука не обнаружил, что я с parted-ом сделал :(

olegd ★★★
() автор топика

> Ориентировался на инструкцию http://www.debian.org/releases/stable/i386/ch04s04.html.en

Неправильно ориентировались.

> Что сделать, чтобы загрузило систему из ISO? Или его надо распаковать?

Расскажу, как я делал live-HD/live-flash из FINNIX, KNOPPIX, slitaz, morphix.

У всех LiveCD ISO'шник обычно содержит (сжатый) образ ФС (squashfs, cloop, etc),
ядро, initramfs, isolinux (загрузчик), и его конфиг(и). Нужно скопировать
на флешку образ ФС, ядро, initramfs. Затем поставить загрузчик. Я использую
extlinux, но никто не запрещает использвать syslinux, grub, или даже lilo.
После этого надо подправить конфиг загрузчика: как минимум, переименовать конфиг
из isolinux.cfg в {ext,sys}linux.cfg (или заново написать {menu.lst,lilo.conf}).

Вся процедура выглядит буквально так:

# ВНИМАНИЕ: ДАННЫЕ С ФЛЕШКИ СТИРАЮТСЯ НАФИГ!
mke2fs -b4096 /dev/disk/by-id/usb-foo-bar-part1
mkdir /tmp/target
mount -t ext2 -o rw,nodev,nosuid /dev/disk/by-id/usb-foo-bar-part1 /tmp/target
mount -t iso9660 -o ro,nodev,loop ./finnix-91.1.iso /mnt
# Копируем
tar cf - -C /mnt . | tar xf - -C /tmp/target
# Ставим загрузчик. extlinux нужно ставить на _смонтированную_ ФС.
extlinux -i /tmp/target/isolinux
cd /tmp/target/isolinux
# extlinux читает файл extlinux.conf
mv isolinux.cfg extlinux.conf
# Этот файл нужен только на CD.
rm -f boot.cat
umount /mnt
# Отмонтируем флешку
umount /tmp/target
# {sys,ext}linux ставятся на раздел, а не в MBR. Поэтому нужно сделать
# mbr загрузочной.
cat /usr/lib/syslinux/mbr.bin > /dev/disk/by-id/usb-foo-bar

Правда, альтернативными ОСями я не пользуюсь. Поэтому додумываться до того,
как сделать тот же фокус в m$ window$, Вам придется самостоятельно.

Dselect ★★★
()
Ответ на: комментарий от Dselect

> tar cf - -C /mnt . | tar xf - -C /tmp/target

Чем это лучше cp?

> mv isolinux.cfg extlinux.conf

Вот этого я и не понял. Спасибо! Поезд ушёл, но лучше поздно, чем никогда.

> Правда, альтернативными ОСями я не пользуюсь.

Проблема была именно в альтернативной оси :) В линуксе есть dd, cat и директория /dev/, которые сильно облегчают жизнь. Руководств, как это сделать из никсов, в сети -- вагон.

Правильный ответ на мой вопрос: надо было

1. Распаковать iso на флешку.

2. Переименовать isolinux/ в syslinux, isolinux.cfg в syslinux/syslinux.cfg.

3. Скопировать в syslinux/ ldlinux.bin из архива syslinux.* с http://www.kernel.org/pub/linux/utils/boot/syslinux/

4. Установить загрузчик командой syslinux -ma имя_флешки.

(Если на флешке файловая система не FAT, а ext2 -- заменить все "syslinux" и "ldlinux" на "extlinux". Можно не создавать директории syslinux и пр., а просто свалить всё в корень.)

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

> > tar cf - -C /mnt . | tar xf - -C /tmp/target

> Чем это лучше cp?

cp -a /mnt/* /tmp/target

не копирует файлы/директории, у которых имена начинаются с точки '.'
(на Debian'овских ISO'шках такие есть). А tar -- он все сгребет.

> Проблема была именно в альтернативной оси :)

Проблема была в том, что Вы

1. Слили на флешку не образ ФС, а целиком ISO'шку.
2. Подсунули загрузчику неправильный конфиг.

А альтернативная ОСь тут как бы и не виновата.

Dselect ★★★
()
Ответ на: комментарий от Dselect

>1. Слили на флешку не образ ФС, а целиком ISO'шку.

Строго по мануалу :) Потом распаковал образ, но это не помогло.

>2. Подсунули загрузчику неправильный конфиг.

Именно

> А альтернативная ОСь тут как бы и не виновата.

Под никсы имеется немало готовых скриптов. Под оффтопик предлагают скачать что-нибудь многомегабайтное и шароварно-триальное :)

В общем, спасибо ещё раз, что указали, что у конфигов одинаковый формат.

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

А можно ли сделать загрузку LiveCD не с флэшки а с сети. У меня есть загрузочный диск Suse Linux 11 openSUSE-11.0-NET-i386.iso который позволяет загрузится с сети и начать установку Suse из репозитория. Так же есть сам LiveCD Suse 11 openSUSE-11.0-KDE4-LiveCD-i386.iso. Как при загрузке загрузочного диска обратится к LiveCD? Меня интересует именно Suse 11 так как другой LiveCD Slitaz http://www.slitaz.org/en/get/#stable я успешно загрузил по сети. Скорее всего в Suse придется переделать загрузочный файл initrd. Подскажите как это сделать.

JekaRus
()
4 августа 2008 г.
Ответ на: комментарий от JekaRus

Для этого понадобится поднять DHCP и tFTP серверы

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.