Свой LiveCD (как сделать)

Дистрибутивы, не требующие установки на диск.

Модератор: Модераторы разделов

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Свой LiveCD

Сообщение frp » 19.07.2008 08:09

Вроде разобрался как создавать livecd, но так и не понял, как заставить систему получать права рута сразу после загрузки? su говорит

Код:

Sorry

А login говорит что-то непонятное:

Код:

login: PAM Failure, aborting: Critical error - immediate abort

Что делать?
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 19.07.2008 14:35

А как вы делали лив?

Вообще, чтобы получать права рута автоматически, надо поправить, кажется, /etc/inittab, там где вирт. консоли. Вот только не помню, что нужно прописать. Ну короче поищите мануалы по созданию сидюков, думаю легко это найдете.

А login говорит что-то непонятное:

А это вы допустили где-то ошибку. Опять таки, как делали сидюк?
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 19.07.2008 17:58

А что в inittab и rc.d надо писать?
У меня эти скрипты просто устанавливают имя хоста (localhost) и пробуют сделать login.
CD содержит isolinux, ядро и initrd, делалось все без использования специальных программ (кроме isolinux и mkisofs).
Если для ядра указать init=/bin/bash то запускается bash, но вместо приглашения пишет что-то вроде

Код: Выделить всё

I have no name!@localhost:/ #

Мой LiveCd должен всего-навсего запускать bash с правами рута. Испытываю под QEMU(movix и damn small linux в нем работают отлично).
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 20.07.2008 14:03

В любой нормальной (стационарной) системе в inittab должны быть строки типа таких:
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:2345:respawn:/sbin/agetty 38400 tty2 linux
c3:2345:respawn:/sbin/agetty 38400 tty3 linux
c4:2345:respawn:/sbin/agetty 38400 tty4 linux
c5:2345:respawn:/sbin/agetty 38400 tty5 linux
c6:2345:respawn:/sbin/agetty 38400 tty6 linux

Это вирт. консоли с первой по шестую. /sbin/agetty - программа, которая автоматически запускается на этой консоли. Надо ее заменить на другую. В Дженте например в стандартном варианте эти строки будут выглядеть примерно так (привожу только первую):
c1:12345:respawn:/sbin/agetty -nl /bin/bashlogin 38400 tty1 linux

А скрипт bashlogin - так:
#!/bin/bash

cat /etc/motd 2>/dev/null
cd /root
[[ -e .bash_profile ]] && source .bash_profile
exec -l /bin/bash -i

Если вдруг не сработает, нашел альтернативыный вариант. Сначала установите mingetty, потом в иниттабе пропишите:
c1:12345:respawn:/sbin/mingetty --autologin root --noclear tty1

для каждой консоли.


Если для ядра указать init=/bin/bash то запускается bash, но вместо приглашения пишет что-то вроде

Это потому что не настроено окружение. Оно настраивается скриптами при загрузке системы. У вас же загрузки не произошло, т.к. вы запустили bash вместо init. Однако, консоль эта вполне фунциональна.
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 21.07.2008 10:35

Вроде помогло, но я нашел способ даже проще. В Дебиане есть скрипт mindi. Он кроме Live-Cd собирает образы дискет (правда их слишком много). Получается Live-CD(или Live-Floppy) с базовой системой Дебиан и при загрузке даже пароль не спрашивает, а как Рут грузится. Правда с mindi проблема - как установить на LiveCd ядро, .
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 21.07.2008 17:33

mindi не пользовался, но а разве нельзя ядро руками добавить?


З.Ы. Набрал в гугле debian livecd, выдалась куча (вроде интересных) ссылок, в том числе мануалы. Посмотрите, может там все это есть. Просто на основе дебиана я диск не делал, вот по дженте я более-менее внятно могу пояснить.
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 22.07.2008 07:40

Дело в том, что mindi на диск настойчиво бросает то ядро, что стоит в системе(если на вопрос, бросать ли то ядро что в системе ответить нет, то возникает ошибка). А в моем случае желательно сделать специальное ядро для LiveCD без поддержки разных мелочей (при загрузке диска, созданного mindi ядро выкидывает кучу сообщений, что проблемы с некоторыми модулями, в том числе и NVIDIA_Kernel, bttv и другие, которых mindi просто не пишет на диск. А поддержка NVIDIA и bttv на liveCD ни к чему.
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 22.07.2008 14:48

Посмотрел я абсолютно все сообщения об ошибках. Не загружает нормально ни одного модуля. А будет ли ядро работать если все это сделать built-in?
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

xasya
Сообщения: 48
ОС: Gentoo GNU\Linux

Re: Свой LiveCD

Сообщение xasya » 22.07.2008 21:51

frp писал(а):
19.07.2008 08:09
Вроде разобрался как создавать livecd, но так и не понял, как заставить систему получать права рута сразу после загрузки? su говорит

Код:

Sorry

А login говорит что-то непонятное:

Код:

login: PAM Failure, aborting: Critical error - immediate abort

Что делать?

Берешь slax
сморишь как создавать/удалять модули
и делаешь за 10-15 минут.
да еще можно и сделать с темой такой как копирование в память и отмонтирование сидюка.
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 23.07.2008 01:02

frp
Вы идете каким-то сложным путем :)

Вообще, опять таки, вы можете заменить тамошнее ядро на свое. Просто удалить файлы одного ядра и добавить файлы другого.
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 24.07.2008 22:02

А как изменить содержимое initrd для ядра 2.6.18?
Для более старых ядер можно было использовать способ

Код: Выделить всё

mount -t ext2 -o loop initrd /mnt

А далее просто бросать файлы в /mnt.
С этим ядром такое не проходит. mount пишет в dmesg, что в initrd нет файловой системы ext2.
Какая там файловая система?
С gzip-файла я его распаковал.
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 26.07.2008 18:20

А как изменить содержимое initrd для ядра 2.6.18?

Распаковка:
zcat /boot/initrd | cpio -i
Как упаковать обратно - х.з., но вы погуглите по слову cpio, найдете.
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 28.07.2008 08:55

В интернете куча русских manpages. Вот в них написано: чтоб упаковать надо дать для cpio список файлов. В случае если архив не будет содержать папок (или будет, но пустые) можно

Код: Выделить всё

ls|cpio -o > /boot/initrd

А есть программы, которые рекурсивно просматривают рекурсивно все каталоги и составляют список типа этого?

Код: Выделить всё

/bin
/bin/busybox
/bin/bash
/bin/cp
..........
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 28.07.2008 18:57

Уже нашел у себя в системе. Так действует find без параметров.
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 29.07.2008 08:35

А как сделать, чтобы /dev/ram0 монтировался не только для чтения?
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 29.07.2008 20:36

Узнал, что это невозможно. Нужно с помощью init-скриптов создавать еще ramdisk с файловой системой ext2. А как использовать unionfs?
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 30.07.2008 00:46

frp
А как сделать, чтобы /dev/ram0 монтировался не только для чтения?

Это который само ядро монтирует? Вероятно, надо пропатчить ядро, хотя у меня такого вопроса не возникало, не знаю.

А как использовать unionfs?

Можете посмотреть этот мануал: http://www.gentoo-wiki.com/HOWTO_Diskless:...nfs._Why_not%3F. Там много лишнего, но нужная информация есть. А вообще по этой теме в инете много информации.

З.Ы. Имхо лучше юзать aufs, это тот же юнионфс (и пользоваться им так же), только постабильнее. По крайней мере у меня такое впечатление сложилось.

З.З.Ы. Просто из любопытства: с какой целью делаете live-cd?
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 31.07.2008 09:11

А вообще по этой теме в инете много информации.

Да, но не на русском языке. Я разобрался, как сам unionfs смонтировать. А как к ней прицепить разделы?
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

skvitek
Сообщения: 96

Re: Свой LiveCD

Сообщение skvitek » 01.08.2008 14:33

Здравствуйте! Для повышения Linux skill тоже решил попробовать сделать LiveCD.
Пока использовал только 2.6.26 ядро, busybox и mingetty.
Создание компиляция ядра, создание initrd проходят на ура, пробовал загрузить арч на них - загрузился, работает. Собрал образ - загружается, оборудование и рамдиск определяются, монтируется root.
Но в конце вылетает warning:
"Warning: unable to open an initial console."

Не подскажите, в чём может быть проблема?
nyashka
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 01.08.2008 19:43

А как к ней прицепить разделы?

Вот пример: http://www.gentoo-wiki.com/Unionfs-linuxrc. Тут для aufs, но суть, насколько я знаю, одна. Вот еще пример: http://rus-linux.net/lib.php?name=MyLDP/bo...h-squashfs.html
У меня самодельного кода под рукой нет и делал я это один раз, по этому сам точно не помню. Но вроде в примерах то, что нужно.

Но в конце вылетает warning:
"Warning: unable to open an initial console."

хм... А на initrd каталог /dev с нужными файлами присутствуют?
Кто выдает это сообщение?
Спасибо сказали:

skvitek
Сообщения: 96

Re: Свой LiveCD

Сообщение skvitek » 01.08.2008 22:34

Делал по такой статье:
http://www.nixp.ru/articles/making_minilinux

Сообщение появляется ещё при загрузке. А какие именно фалы должны быть в /dev LiveCD? Они не должны появляться автоматически(как написано в статье)?
nyashka
Спасибо сказали:

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Свой LiveCD

Сообщение nadge » 02.08.2008 00:13

Посмотрел, действительно в этой статье написано, что создавать файлы устройств вручную не требуется... Но все же попробуйте перейти в каталог /dev вашего initrd (на этапе создания оного) и выполнить там нечто вроде:
mknod console c 4 0
chmod 622 console

хотя я не уверен, что проблема в этом.

З.Ы. Можете сфотографировать экран загрузки (сообщения) в момент, когда выдаются предупреждения? Что пишет до и что после?
Спасибо сказали:

ServAdmin
Сообщения: 10
ОС: Linux Ubuntu

Re: Свой LiveCD

Сообщение ServAdmin » 02.08.2008 10:03

frp писал(а):
19.07.2008 08:09
Вроде разобрался как создавать livecd
Разъясните ServAdmin, как делать LiveCD, пожалуйста!
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 02.08.2008 14:42

Разобрался я как раздел прицепить. В манах по unionctl написано.
Делаю, например, так

Код: Выделить всё

#mount -t unionfs -o dirs=/=rw unionfs /mnt/union
#unionctl /mnt/union --add /mnt/ram

В результате получаю очень функциональную систему в /mnt/union. Только чтоб работать в ней нужно сделать

Код: Выделить всё

chroot /mnt/union

Возникает вопрос, как сделать корневую файловую систему unionfs? Монтируется она как unionfs нормально. А приаттачить /mnt/ram не получается.

Разъясните ServAdmin, как делать LiveCD, пожалуйста!

Использовать руководства типа http://www.nixp.ru/articles/making_minilinux (только при этом лучше иметь еще простую систему, из которой можно взять файлы.)
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 04.08.2008 10:20

Разобрался. Для того, чтобы корневой каталог был unionfs я вместо init использую скрипт, который создает unionfs, а потом запускает init в среде chroot. А как сделать, чтобы устройства в /dev добавлялись автоматически (как в ASP и Debian)?
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 04.08.2008 21:51

Я и с этим разобрался (порылся в своем Debian).Решается добавлением в livecd udev. А вообще для добавления в livecd программ я использую apt.
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 04.08.2008 22:11

А как без udev узнать major и minor cdrom-а?
PS. Без udev нужно потому, что нужно смонтировать cd еще до загрузки init (моя система уже не хочет умещатся в ramdisk полностю)
PPS. Знаю, что в случае с ATAPI можно просто перебрать ноды hda,hdb,hdc,hdd. А как в случае с другими типами cdrom.
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 05.08.2008 11:38

Как написать скрипт bash, который будет перебирать по очереди устройства hda, hdb, hdc, hdd и пробовать смонтировать как iso9660, а потом проверять наличие файла rootfs.ext2?
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 05.08.2008 15:29

Скрипт я сделал (нашел руководство по Shell). Остается только вопрос о scsi-cdrom (я не могу здесь сам разобраться потому, что у меня cdrom ATAPI).
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Свой LiveCD

Сообщение frp » 05.08.2008 22:25

Я уже сделал свой Live довольно приличным (даже с X и IceWM) (правда пока он работает лишь на IDE CDROMах). В виртуальной машине все работает, но медленно.
Я испытал свое изделие на настоящем компьютере и обнаружил, что X начинает загружаться, но сразу гаснет монитор. При этом tty работает без никаких проблем.

В /etc/X11/xorg.conf вроде написано, что карточка Generic Video Card (насколько я понимаю стандартная SVGA карта). У меня NVIDIA (но не желательно делать livecd зависимым от карты).

Посмотрите, может че не то прописано в моем xorg.conf (додается к этому посту).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Вернуться в «Live-CD»