LINUX.ORG.RU
ФорумAdmin

Вся система в /boot

 , ,


0

2

Собственно, вопрос, как можно это реализовать? Нужно на usb flash оставить один каталог где должны быть все системные каталоги и файлы, и что бы это все работало.

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

Проще, так и делаю обычно. Просто интересно как это сделать, с использованием initrd.

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

Можно спокойно взять и поставить Debian целиком на флешку, создав там единственный раздел, а затем на эту же флешку вкатав GRUB. Относительно этого варианта, что ты хочешь изменить? Чтобы не было отдельного каталога /boot что ли?

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

Да я это делал тысячу раз, но я хочу что бы был лишь один каталог /boot, внутри которого будут /usr /bin и т.д., короче все системные каталоги. Все это, само собой на одном разделе.

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

собирай систему в loop-образ с fs ext3 (лучше ext3 - таки совместимость)
туда хоть генту
собирай initrd, который:
ищет флешку по маркер-файлу(например ищет раздел/диск, где в папке бут будет файл debian размером с 0) - все это на тру-бащъ
добавь чрут, ну как в initrd дебиан лив) (можешь разобрать)
и усе - готово
как убунту каспер

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

Можете подсказать как это сделать? Или ман какой-то?

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

Сделай весь /boot в системе (/). /thread

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

Делаешь рутфс себе полноценную (если хочешь, можешь засунуть туда даже иксы, а не хочешь — xfree86 или directfb). Пишешь свой инит. Рекомендую заюзать devtmpfs, если в процессе работы ничего подключать не будешь, иначе mdev, а то и вовсе udev. Весь свой софт компилишь и устанавливаешь на свежеиспечёный корень. Если возиться с gnu coreutils лень, то возьми бизибокс. А раз уж такая пьянка, то и стандартную библиотеку можно было взять полегче (но это уже история про кросскомпилляцию). Венёмся к делу. Вооружаешься cpio и (опционально) архиватором. Собираешь из всего этого говна initramfs. Теперь два варианта: берёшь своё ядро и передаёшь ему этот хлам параметром (тогда вся система умещается в два файла — rootfs + ядро) или в конфиге ядра прописываешь путь к получившемуся cpio-архиву и весь хлам вкомпиливаешь в ядро (тогда система вся в одном файле). Готово.

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

Спасибо, суть понял. А если пойти по-другому, например есть уже настроенная система со картами и девушками, и хочется перенести все в /boot, как в таком случае поправить initrd?

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

Ты хочешь перенести уже установленный дистрибутив в initramfs? Лучше не надо, грузить долго да и смысла мало. Собирай с нуля по образу и подобию. Советую вооружиться кросстулчейном.
Если ты имеешь ввиду, что уже собрал систему по вышеописанному методу, но вдруг захотелось поправить (например, обновить пакет или изменить одну строчку в конфиге), то придётся пересобирать initramfs. Сейчас у меня для этого простой скрипт на баше, но я уже работаю над ядерным модулем, осуществляющим конфигурирование без конфигов в файловой системе (ждите тупых вопросов в Development). И инит для такой системы я пишу.
Если ты вкомпиливал initramfs в ядро, как это делаю я, то тебе придётся пересобирать ядро на каждый чих.

CYB3R ★★★★★
()

как можно это реализовать? Нужно на usb flash оставить один каталог

ну в slax примерно так и сделано, вся система в /slax/, и там /slax/boot. Это если на флешку из другой системы смотреть конечно.

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

Вы можете перенесети установленную систему в файл образа файловой системы.

Т.е., создаёте файл, в котором вы создадите файловую систему и скопируете туда установленную и настроенную систему.

dd if=/dev/zero of=/путь_куда_сохранять_файл/ bs=1M count=размер_файла_в_мегабайтах
Теперь создаёте файловую систему в файле:
mkfs.ваша_любимая_файловая_система /путь_куда_сохранили_файл/
Монтируете файловую систему в файле и переносите установленную систему в файл:
mkdir /tmp/system
mount /путь_куда_сохранили_файл/ /tmp/system -t ваша_любимая_файловая_система -o loop
Собственно перенос установленной системы (копирование с сохранением прав)
cp -pr /точка_монтирования_исходной_системы /tmp/system
Далее правите /etc/fstab скопированной системы, указывая новое расположение корневой файловой системы.

Вот, можете почитать это сообщение, здесь наброски по редактированию init сценария в initrd: Нужна дуракоустойчивая система (комментарий)

squashfs as root file system (комментарий)

Вам aufs и squashfs я конечно не советую, но посмотреть что примерно и как менять в сценарии init можете.

Или можете «разобрать» initrd LiveCD диска Debian.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)
Ответ на: комментарий от drBatty

Да, только для нового slax доступно ещё не большое количество модулей, к тому же нет модуля с Nvidia-drivers . Нет, не спорю, можно собрать самому, но это же надо собирать.

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

Да, только для нового slax доступно ещё не большое количество модулей, к тому же нет модуля с Nvidia-drivers . Нет, не спорю, можно собрать самому, но это же надо собирать.

Ну для меня это проще, чем свой initrd велосипедить.

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

Вы же пишете, что у вас вся система в initrd. Видимо у вас там лишь консоль, ну или уж совсем легковесная реализация X11 и лёгкий WM. ТС же хочет получить почти десктоп систему.

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

У меня там directfb. Всё пожато `lzop -9`. Но можно и жирную систему засунуть в initrd.

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

в бубне так
ищет по /dev/sd??/ubuntu
собери init на шел
потом в конце пускай /sin/init в чрут

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

Спасибо, пробую. Да у меня как раз рескью систем, есть конечно и иксы с опенбоксом на всякий случай, но основная работа вся равно в терминале.

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