Корень в squashfs

mkdir /overlay
mount -t tmpfs none /overlay
mount -t squashfs "/mnt/root.squashfs" "/newroot" -o loop
mount -t aufs -o dirs=/overlay=rw:"newroot"=ro none "newroot"
вот как монтировать squashfs как корень.
после стандартный скрипт чрутится в newroot и запускает инит-скрипт с корня.
изменения будут сохраняться в памяти, что бы они сохранялись на диск изменений будет минимум, overlay создаёшь там, где тебе надо, убираешьего создание из скрипта выше, и изменяешь пути.
полную версию скрипта ищи тут: viewtopic.php?f=2&t=3448&start=75#p29922
Shaman, огромное спасибо за содействие) Если все успешно получится - напишу хаутушку.

cucullus
и во что превратится usr после полусотни обновлений?
Если нормально настроить aufs, то все изменения будут писаться в другую фс, а при загрузке старые файлы из сквошфс будут заменяться новыми. Проделывал такое в убунте - на произвидетельность, как ни странно, повлеяло в лучшею сторону. Видимо из-за того, что сократился размер, винт находит и грузит файлы быстрее.

_AND_
cucullus
и во что превратится usr после полусотни обновлений?
А, кстати, интересно как себя поведет aufs, если файл будет присутствовать и в ro образе и в rw оверлейной части. Надо будет попробовать :) Если она такую ситуацию нормально переварит, то и с обновлениями проблем не будет. Нужно будет только время от времени заново сворачивать образ и чистить оверлейную часть.
Aufs в этом плане ведет себя отлично. Уже проверял в убунте. Только ноут слабенький, поэтому занового сворачивать образ было лень, а сейчас убунту и вовсе на ноуте нет)

_AND_
jim945
Вот например http://linuxopen.ru/2008/10/09/primer-i … ashfs.html
Вот спасибо! Сделал только что так на нетбуке с SSD (AAO110) - он гораздо гораздо быстрее зашевелился при загрузке и запуске объемных приложений (openoffice, google earth и т.п). При этом еще и /usr теперь занимает 1.1Gb вместо 3Gb! Очень спасибо, моему счастью и радости нет предела :)
А представь, что будет, если всю систему вообще в сквош запихнуть?)

jim945
KriK
В инсталлере уже покапался. Там hook один добавлен “archiso”, насколько я понял - он и монтируют сквошфс-образ. Но разобраться, как это все подключить и оформить на жестком диске я не смог.
Тут про archiso, если интересно.
Спасибо огромное! А то информации чтот на этот счет все-таки маловато и просто так не найдешь… А в самих скриптах слишком много переменных, из-за которых очень сложно понять прямой смысл и комментариев почти нет.
Читал я про тот archiso, плюнул и ушел читать скрипты в initrd. алгоритм простейший: в init_functions лежат дополнительные функции, туда же помещаем новые. init - скрипт, который выполнит начальную инициализацию системы (не трогаем), найдет и смонтирует корень (изменяем) и передаст управление дальше. в init_functiuns есть функция default_mount_handler, а в начале init есть переменная mount_handler, по умолчанию переменная имеет значение с названием default_mount_handler. получается, что достаточно изменить только её значение и дописать свою функцию поиска и загрузки корня. все остальное без изменений. так что распаковывай initrd и колдуй над ним. только некоторых после обновлений он будет затираться на стандарт, поэтому как получишь рабочие скрипты, меняй /lib/initcpio/init и /lib/initcpio/init_functions. в этом случае только после обновления mkinitcpio надо будет переделывать. может получиться со своими хуками замутить что-то, если сделаешь постучись :)
Столкнулся с новой проблемой. Так как с арчем могу работать только через chroot, то mkinitcpio генерит initrd без нужных модулей. Но насколько я понял kernel26-fallback.img содержит все модули независимо от системы. И вроде можно hook один убрать… Но пока попробую в fallback воткнуть скрипты Shaman'а.
Не, чтот совсем не то… Распаковал оба initrd. Везде нет в init строчки “mount_handler”. Что-то делаю не то. Попробую поспать и на свежую голову разобраться.
они в самом верху, 19 строка
Shaman
они в самом верху, 19 строка
Нету) Там вообще монтируется только sysfs и помоему еще proc. Это просто я намудрил с установкой. Я арч ставил из убунту с помощью chroot и ставил не на раздел, а подмонтировал просто в /mnt обычный loop-файл с ext4) Решил завтра, то есть уже сегодня, взять просто у друга хард, поставить туда арч и тогда уже проще будет настроить загрузку из squashfs-файла.
И так, поставил я арч на другой хард, настроил, засунул я скрипты и они даже отрабатываются при загрузке, но корень все равно не грузится, ругается на невозможность создать loop, что-то в этом роде… Потом сфоткаю, если нужно будет.
Какие параметры ядру надо давать при загрузке? Помимо этих скриптов что-нибудь править надо? Что писать в fstab?
С проблемой выше разобрался, воткнув модуль loop. Но возникла новая проблема. В общем, mount из initrd не хочет монтировать squashfs. Вот так вот ругается:
mount: mounting /dev/loop0 on /new_root failed: Device or resource busy
Хз, что делать дальше…
Есть прогресс. Глюк был в том, что я образ сквоша делал из убунты, убунтовской утилитой mksquashfs. Попробовал образ сделать в арче и загрузиться практически удалось. Сквош-образ нормально монтируется, инитрд чрутится и грузится уже основная система из образа, но сразу появляется новая фича. Арч говорит, что не может проверить файловую систему и дальше не грузится.
 
Зарегистрироваться или войдите чтобы оставить сообщение.