LINUX.ORG.RU

Как поместить корень полностью в опративу?

 


1

1

Есть где нибудь подробное HOWTO, как сделать, чтобы система полностью работала из RAM?
Гугление даёт лишь какие-то обрывки информации.

______________
UPD0:
Что нужно прописать в init-скрипт, чтобы произвести монтирование корня и подкатплогов в tmpfs?
Как потом прописать pivot_root?

Правильно ли я понял:
Создаём каталог
Монтируем в tmpfs
Копируем в этот tmpfs каталоги из корня, кроме dev, proc, sys
Делаем pivot_root в смонтированный в tmpfs каталог
Делаем mount -n --move для dev, proc, sys в новый корень
?
Обязательно ли создавать новый каталог, или можно смонтировать / в tmpfs?
Как правильно сделать pivot_root для уже запущенных всех процессов?
Нужен ли ключь -n для mount? И нужно ли вообще это действие? ведь dev, proc, sys будут уже вне корня?

__________________
UPD1:
Как поместить корень полностью в опративу? (комментарий)

★★★★★

Последнее исправление: teod0r (всего исправлений: 10)

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

вопрос ещё в том, не повлияет ли chroot на скорость работы программ.
Плюс, не возникнет ли проблем после отмонтирования диска.
И может есть более правильный способ?

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от anonymous

man pivot_root

пытался его понять, но не понял. насколько я понял, он меняет / уже запущенного процесса, и только одного за раз. как его вообще применять? что с ним можно сделать и что оно даст в моей задаче?

Смотри как initramfs устроен

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

ещё вопрос: можно ли будет внутренним каталогам каким-то образом задавать свои опции монтирования, например noexec? возможно ли внутри initramfs создать другие fs?

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

apt-cache search pivot libtext-unaccent-perl - provides functions to remove accents using UTF16 as a pivot libsuperlu3 - Direct solution of large, sparse systems of linear equations libsuperlu3-dev - Direct solution of large, sparse systems of linear equations

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

всё, кроме кислых щей твоей тёщи. Не могу я такое пойтить - левые программы в ОС пихать. Как initramfs то поможет?

darkenshvein ★★★★★
()

всё, что нужно твоей системе, уже и так находится в ram

а если тебя утомляют тормоза при запуске, купи ssd

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

всё, что нужно твоей системе, уже и так находится в ram

но не всё что нужно мне.

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

apt-cache search pivot

прежде чем щеголять знанием апта, набери в терминале

pivot_root -V
и удивись, попутно узнаешь, какому пакету принадлежит.

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

Есть разные реализации «run from RAM».

я уж надеялся, что по ссылке как раз получу информацию о реализациях, а не неполный список дистрибутивов, которые работают из RAM

initramfs-tools

тоже не нашёл там нужного

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

я уж надеялся, ...

Дык, у каждого дистра свои способы. Например, я давным-давно интересовался How Puppy works, там довольно подробно излагают несколько вариантов развёртывания системы в RAM.

quickquest ★★★★★
()

Да именем anonymous-а я разрешаю тебе решить эту задачу и оформить её решение в виде страницы wiki на лоре!

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

Да именем anonymous-а

Ого! у анонимоуса ID 2 и его можно игнорировать

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

а ведь современные ядра вроде как могут грузиться без загрузчика.
плюс, вроде бы, initramfs может быть частью ядра. Если это так, значит реально всё построить одним единственным файлом. Но только можно ли будет как-нибудь примонтировать этот образ без распаковки?

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

Действительно, initramfs может быть встроен непосредственно в само ядро.
Опцией devices->block devices->CONFIG_INITRAMFS_SOURCE= задаётся путь к директории (или архиву) с системой, которая должна стать частью initramfs.

В корне initramfs должен находиться init (пока не знаю, должен ли это быть какой-то особый инит, или подойдёт обычный скрипт).

Осталось выяснить, как сделать, чтобы ядро могло грузиться без загрузчика (опция, какая строка параметров должа передоваться ядру при старте, ЕМНИП, есть в конфиге ядра), и можно совсем избавиться от каталога /boot, вся система будет помещаться в один файл.

Вот только вопрос по поводу обновления такой системы остаётся открытым. Получится ли примонтировать ядро со встроенным в него архивом (лучше, конечно, только initramfs) как диск для доступа к содержимому?

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

стал читать http://wiki.sourcemage.org/HowTo(2f)Initramfs.html, теперь в ещё большем не доумении.

Раньше всегда думал, что внутри initrd есть ядро с модулями и минимальный набор бинарей и скриптов, необходимый для монтирования и передающий дальнейшее управление основному ядру. К моему удивлению внутри я не нашёл ядра и каталога /boot.

Я НЕ ПОНИМАЮ как работает initrd! Объясните пожалуйста. Как оно работает, если там нет ядра? Что тогда запускает init и бинари-монтировщики? Как тогда можно залогиниться в initrd и использовать как конечную систему??

Если там нет ядра, зачем тогда вообще из этого initrd что-то монтировать? Не дано init и всё необходимое для монтирования просто разместить в /boot, чтобы ядро само это сразу запустило?

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

Кажется, НАШЁЛ! :http://dreamlayers.blogspot.ru/2012/10/running-linux-from-ram.html

Почти всё как и предпологал, но мне не понятна последняя строка:
exec chroot . bin/sh -c "umount old_root ; exec sbin/init"

Во первых, почему нужен chroot? Не окажет ли это негативного воздействия на производительность, по сравнению с системой, работающей НЕ в чруте?
Второе: exec sbin/init, разве это не означает, что init будет иметь PID 2 заместо 1?

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

Судя по всему ответ на второй вопрос: нет, exec вроде как как раз для этого

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

И всё-таки не пойму, зачем делать chroot в конце, если уже сделан pivot_root?

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 1)

ставишь линукс
dd if=/dev/zero of=/loop bs=1M count=<размер линукса в метрах>
создаешь свой init-wrapper с поиском луп-файла
собираешт инитрамфс с инит-врапом
mkfs.ext4 /loop
mount /loop /mnt/loop
копируешь usr, etc, home, var, bin, sbin в /mnt/loop
чмодим файлы
чистим шлак
качаем grub4dos
grldr и loop в корень фс
создаем там же menu.lst с кодом:
[code]
timeout 5
default 0

title Linux
map /loop (hd0)
map --hook
root (hd0)
kernel /boot/vmlinuz параметры ядра
initrd /boot/initrd
[/code]

P.S.: иниь-врап - скрипт с монтированием луп и чрутом + маунт нужных фс
разбери инитрд своего дистра и поправь скрипты
можно даже скопиррвать на флеху
grub.exe - 16bit бинаря для запуска из под DOS/GRUB2
bootlace.com /dev/sda
ставим бутсектор груб4доса :)

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

собираешт инитрамфс

уже нашёл решение без него

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