LINUX.ORG.RU

Создание своего LiveCD


0

1

Создаю небольшой LiveCD, который при запуске должен выполнить один скрипт (поиск разделов диска, их монтирование, поиск и редактирование файлов на примонтированных разделах) и завершить работу. Что уже получилось: Создал initrd, в котором установил собранный статически busybox (1.19.3). Ядро скачал самое последнее (3.2.1), собрал пока что по дефолтным настройкам. Ну и загрузчик - isolinux. Что получается: после загрузки системы имею командную строку sh и полный набор из busybox. Что не получается: при попытке создать каталог выскакивает ошибка, что файловая система доступна в режиме только чтения. Плюс ко всему, не могу примонтировать ни один раздел диска, хотя /dev/sda, /dev/sda1, /dev/sda2 и /dev/sda3 присутствуют. Пробовал двумя способами: создавал в initrd заранее каталог /mnt/sda1, прописывал в /etc/init.d/rcS строку «mount /dev/sda1 /mnt/sda1». В данном случае каталог sda1 из /mnt пропадал после загрузки системы. Во втором случае я пытался монтировать устройство уже в загруженной системе. В данном случае система мне пишет, что /mnt/sda1 не существует, хотя «ls /mnt» прекрасно видит етот каталог.

По мануалам из гугла читал, что загрузка выполняется в два етапа. Сначала в /dev/ram0 монтируется файловая система initrd, после етого в /dev/ram1 создаётся другая файловая система, с которой пользователь потом и работает.

У меня вопросы такие. То, что первоначальная файловая система в read-only режиме - ето нормально, или необходимо прописать какую-ту настройку при компиляции busybox'а? Ну и что мне сделать, чтобы при загрузке системы с моего LiveCD, можно было в ней создавать папки и файлы и монтировать разделы диска?

после етого в /dev/ram1 создаётся другая файловая система, с которой пользователь потом и работает.

неверно, после этого в файловую систему initram'a монтируется squashfs образ целевой файловой системы или воссоздаётся/генерируется с нуля, в которую следом выполняется chroot. Ну так на большинстве livecd в обычно.

Вообще неплохо бы сказать, по какому мануалу/принципу ты это всё делаешь.

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

Мануалов несколько, на самом деле..
http://sanych.nnov.ru/content/JEkstremal`no_malen`kij_livecd Отсюда я понял, как прикрутить isolinux и примерно что такое initrd
http://lug-wiki.nnov.ru/index.php/Создание_LiveCD здесь настройка isolinux
https://www.ibm.com/developerworks/ru/edu/l-embedded-distro/index.html с етого мануала начинал и ничего не понял сначала, но потом по нему нормально собрал busybox
Мануал, в котором говорится, что после initrd должна примонтироватся другая ФС, я уже из виду потерял. Выполнение chroot встречалось в третьей статье, но вот что должно происходить после выполнения скрипта init и до chroot я пока так и не понял. Мне как раз и хотелось узнать, что вобще происходит после загрузки initrd и выполнения скрипта init.
А что значит

образ целевой файловой системы или воссоздаётся/генерируется с нуля

и где об етом можно почитать?

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

А, вот он: http://sources.ru/magazine/1204/linux_live_cd.html

Программа linuxrc в свою очередь пытается примонтировать CD-диск, а затем копирует сжатую основную файловую систему в память (обычно в /dev/ram1). Новая файловая система монтируется и в её каталоге /dev создается символическая ссылка на CD-драйв.

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

> >А, вот он: http://sources.ru/magazine/1204/linux_live_cd.html

> программа будет занимать меньше места, чем в случае динамической линковки с libc-2.1.3.

http://ftp.gnu.org/gnu/glibc/glibc-2.1.3.tar.gz 25-Feb-2000 02:59 8.6M

Ты бы ещё несколько более старых руководств взял и из каждого по чуть-чуть взял.

Возьми свежее современное руководство от http://live.debian.net/ и не морочь людям голову своим некроманством по хаотично нагугленным руководствам.

anonymous
()

Создал initrd
файловая система доступна в режиме только чтения

Добавьте «rw» к параметрам ядра или собрайте initramfs, а не initrd (hint: cd initrd; find . | cpio -o -Hnewc | gzip -9cf > ../initramfs.gz)

AITap ★★★★★
()

rw к параметрам ядра, root=/dev/ram0. Когда-то пилил (еще во времена ядер 2.6.18) - все работало :)

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