LINUX.ORG.RU

Запустить livecd собранный в susestudio из iso образа (предпочтительно grub'ом)


0

1

Захотелось загрузиться в Gears on Gallium, посмотреть. Но у меня сейчас нет свободной флешки, dvd-rom испортился, а варианты залить образ прямо на раздел жесткого диска мне не подходят.

У меня есть на флешке grub, в котором настроена загрузка livecd ubuntu прямо из iso файла (live-media-path=casper iso-scan/filename=/casper/ubuntu-10.04.2-desktop-i386.iso), но этот способ здесь не прокатит, так как работает только для скриптов casper.

Вопрос: как сделать так, чтобы можно было грузиться из образа?

★★★★★

Собери initrd, который будет монтировать образ и чрутиться в него. Кинь на диск образ, ядро и initrd, загрузи всё это счастье grub-ом как обычно. Профит.

geekless ★★
()

Установочные диски openSUSE умеют ставиться из iso-образа. Live-CD, к сожалению, такими умениями не обладают.
Остаётся только самостоятельно вскрыть initramfs и написать там функцию поиска iso-образа.

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

Этого как раз и хотелось избежать. В casper'е я случайно эту функцию нашел, когда свой велосипед приваривал. Не хочется ту же ошибку повторять, вдруг это уже там есть. Но, похоже, нет.

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

Может кому пригодится:

1) добавил в init и linuxrc запуск bash в самом начале и убрал запуск CDMount.

diff -ur orig/init 2/init
--- orig/init	2011-06-02 15:11:54.958461000 +0400
+++ 2/init	2011-06-02 16:31:32.994461000 +0400
@@ -19,6 +19,9 @@
 #======================================
 # Exports (General)...
 #--------------------------------------
+
+bash
+
 export PATH="/sbin:/bin:/usr/sbin:/usr/bin"
 export IFS_ORIG=$IFS
 export DEBUG=0
@@ -90,7 +93,7 @@
 #======================================
 # 7) Mount the CD device
 #--------------------------------------
-CDMount
+#CDMount
 
 #======================================
 # 8) Load configuration
diff -ur orig/linuxrc 2/linuxrc
--- orig/linuxrc	2011-06-02 15:11:54.962461000 +0400
+++ 2/linuxrc	2011-06-02 16:31:32.000000000 +0400
@@ -19,6 +19,9 @@
 #======================================
 # Exports (General)...
 #--------------------------------------
+
+bash
+
 export PATH="/sbin:/bin:/usr/sbin:/usr/bin"
 export IFS_ORIG=$IFS
 export DEBUG=0
@@ -90,7 +93,7 @@
 #======================================
 # 7) Mount the CD device
 #--------------------------------------
-CDMount
+#CDMount
 
 #======================================
 # 8) Load configuration

2) Загрузился с флешки, потом

mount -t devtmpfs none /dev
mkdir /a /cdrom /livecd
/sbin/modprobe loop
mount /dev/sda1 /a
mount /a/Gears_on_Gallium.i686-11.05.28.iso /livecd -o loop,ro
mount /a/Gears_on_Gallium.i686-11.05.28.iso /cdrom -o loop,ro
^D

Дальше скрипты подхватывают остальное.

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

А почему этот код:

mount -t devtmpfs none /dev
mkdir /a /cdrom /livecd
/sbin/modprobe loop
mount /dev/sda1 /a
mount /a/Gears_on_Gallium.i686-11.05.28.iso /livecd -o loop,ro
mount /a/Gears_on_Gallium.i686-11.05.28.iso /cdrom -o loop,ro

не поместить сразу в init в инитрд. И для большей универсальности можно вместо

mount /dev/sda1 /a

не сделать

mount /dev/disk/by-uuid/<UUID раздела /dev/sda1> /a
Так сможете загрузиться на любой системе, где флешка не определяется как sda.

UUID раздела можно узнать по ls -ls /dev/disk/by-uuid/ и найдите здесь имя фашего устройства, так же можно посмотреть в сторону /dev/disk/by-label/ - это метки диска (файловой системы).

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

Спасибо, полезный совет.

Я тут недавно прочитал: «Главная задача программиста - убить в себе перфекциониста». Если всё это вписывать, тут подкручивать, там дописывать, можно в конце-концов доделать способ грузить систему из образа. Только вот задача у меня была — загрузить и посмотреть, желательно с минимальными изменениями. Задача решена.

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

Ну предложенные мною изменения не большие, да к тоиу же насколько я понял, вы все равно ваш код вводите вручную, после вызова bash`а, а это вообще не камильфо .

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

> а это вообще не камильфо

Вы видимо давно не смотрели в код оперсорсных проектов. Там обычно не комильфо, а сплошной моветон. Всё в полном соответствии с Макконнелом: программисты доводят до совершенства какой-то маленький участок, затрачивая на него большую часть времени, чтобы потом абы как за оставшееся время реализовывают остальное. И вот оно качеством не блещет. У самого так.

все равно ваш код вводите вручную, после вызова bash`а

Я не боюсь трудностей :)

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от kostik87

>UUID раздела можно узнать по ls -ls /dev/disk/by-uuid/ и найдите здесь имя фашего устройства

Лучше использовать специально обученную команду blkid для этого

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

ХЫ, результат один и тот же, к тому же, использование предложенного мною спосогба даст большее понимание, что откуда берется, чем простой вывод вашей команды.

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