LINUX.ORG.RU

Сообщения Nick_what_is_again

 

Lubuntu 16.04: перенос /usr на сжатый раздел.

То ли лыжи не едут, то ли я… Короче, создал /usr_squash/sq, /usr_squash/upd и /usr_squash/tmp. И для тестов — /usr_test. Сжал существующий /usr вот так вот:

sudo mksquashfs /usr /usr_sqash/usr_2018_11.sfs -b 65536 -comp xz

Во fstab добавил, сразу после монтирования основного раздела, следующие две строчки:

/usr_squash/usr_2018_11.sfs   /usr_squash/sq   squashfs   loop,ro   0 0
# overlayfs /usr overlayfs defaults,lowerdir=/usr_squash/sq,upperdir=/usr_squash/upd,workdir=/usr_squash/tmp 0 0

Раскомментирую вторую строчку на загруженной системе, запускаю sudo mount -a, оно прекрасно цепляется. Создаю тестовый файлик в /usr, он прекрасно создаётся в /usr_squash/upd, как ему и положено. Загружаюсь на пробу, сделав

overlayfs /usr_test overlayfs defaults,lowerdir=/usr_squash/sq,upperdir=/usr_squash/upd,workdir=/usr_squash/tmp 0 0

Всё прекрасно, в /usr_test появилась копия моего /usr, а в ней даже есть тестовый файлик, который overlayfs накатила из /usr_squash/upd, как ей и положено. Теперь наконец решаюсь подменить настоящий /usr — бах, грабли!

mount: mounting overlayfs on /root/usr failed: No such device.

Пробовал с aufs, всё ровно то же самое. Всё работает, пока не затрагивает реальный /usr или затрагивает его уже после загрузки.

mount: mounting aufs on /root/usr failed: No such device

Насколько я понял, жалуется на то, что упомянутое в крайней левой колонке устройство overlayfs (или aufs в другой попытке), которое должно быть примонтировано как /usr, не существует. Его надо как-то более явно прописать, чтобы какой-то модуль ядра запустился, или оно вообще не так называется? Просто добивает в ноль то, что я загружаюсь, снимаю # со строчки и после «mount -a» все добавления в /usr оказываются в /usr_squash/upd, т. е. overlayfs реально монтируется и работает! Но только не во время бута. Во время бута squashfs есть, а aufs(overlayfs) не докличешься (или докличешься, если монтировать не настоящий /usr, а /usr_test; в таком случае всё срабатывает и монтируется).

Я уже ни хрена не понимаю :(

 , , ,

Nick_what_is_again
()

Операция «вброс кукушонка» А. К. А. замена ядра в дистрибутиве Lubuntu.

Итак, снова упорядочиваю инфу по мере накопления, чтобы не разводить сумбур.

Дано: свежий дистрибутив Lubuntu Alternate (т. е. текстовоменюшный установщик без LiveCD, для машин с мелкотравчатой оперативкой).

Проблема: машины, на которых Lubuntu потенциально мог бы работать с правильно собранным ядром, имеют проблемы с установкой, т. к. ядро в комплекте не по чину привередливое. Самая частая проблема — ноуты на Pentium M не поддерживают PAE, но это не единственный возможный косяк.

Бескостыльное решение: внедрение в дистрибутив своего ядра, точнее, как минимум двух ядер (для собственных нужд установщика и для установки уже на целевую машину), плюс написание подробного мануала вплоть до уровня «чего где нажимать». Со вторым-то я справлюсь, мне бы самому понять — а там за писаниной дело не станет.

Этапы решения проблемы: 1) Предварительный этап. Разобраться, что в дистрибутиве к чему, и вбросить туда, например, ядра от предыдущей версии. Скажем, от 12.04 вбросить в 13.10. 2) Второй уровень. Суметь самому собрать на какой-нибудь посторонней машине ядро, которое также заботливо подбросить аналогично п. 1.

Отчёт об экспериментах. По стадии 1 продвинулся не так уж и далеко, а в понимании — и того меньше. Действовал методом тыка: вооружившись исомастером, взял дистрибутивы 12.04 alternate и 13.10 alternate. Выдрал из корня 12-й /install и /isolinux (в последнем заодно и загрузочная запись была в виде обычного файла isolinux.bin, на что мне и указал сразу исомастер), и вбросил этого кукушонка вместо аналогичных в 13.10 (там несколько более расширенный netinstall был, но я этот момент игнорировал как незначимый на сегодня). Соответственно, в 13.10 с заменёнными /install и /isolinux тоже перепрописал загрузочную запись на изменившийся /isolinux/isolinux.bin в процессе «исомастеряченья». Получился диск Франкенштейна, но, по крайней мере, /isolinux соответствовал /install, ядро тоже было не самосборное, а, очевидно, фирменное (из /install же), поэтому с этого диска бут прошёл успешно, установщик стартовал и через пару менюшек меня послал вот таким вот макаром:

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

Ну кто бы мог подумать, а? :)

Если вы производите установку с зеркала, то можете обойти эту проблему, выбрав для установки другую версию Ubuntu. Без модулей ядра продолжение установки может оказаться невозможным.

Ага, трудно жить без головы. Думаю, будет лишним уточнять, что это была последняя жалоба установщика перед смертью.

В итоге я понял, что структуру дистрибутива lubuntu и что куда в каком порядке в этой матрёшке грузится, я понимаю от силы на троечку с минусом, чего явно недостаточно. В силу чего и жду продолжения напутственно-направляющих пинков.

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

tazhate, beastie кастуются по совету ziemin.

Из генерации идей также известен потенциальный обходной вариант: загрузиться с минималистического LiveCD, вставить в другой привод CD с нетронутым дистрибутивом, запустить там установщик (как именно и согласится ли он работать из-под «левого» бута?), поставить Lubuntu, вставить некий носитель с собранным под данную систему ядром в формате просто-напросто .deb, доставить поверх свежеустановленной Lubuntu собранное под данную машину правильное ядро, вынуть все три носителя и смело грузить свежеустановленную систему.

 , , , ,

Nick_what_is_again
()

Операция «вброс кукушонка».

Сразу скажу, что взаимонепонимание исключительно на совести тех, кто читает не то, что написано. У Маркса нигде не написано, что подъезд Калабуховского дома на Пречистенке надо заколотить досками, и я тоже нигде не писал, что не дублирую двухстраничный тред потому, что не уважаю специалистов и мне лень пальцем шевельнуть для их удобства, а вовсе не потому, что двухстраничную простыню тащить в тему считаю ещё более похабным поведением. Как и укрывание части фактов от тех, кому они могли бы быть полезны. Если кто-то автоматически в уме подставил к реальным словам то, что написано курсивом — это скорее их портрет рисует, чем мой. Правда, не ожидал, что их будет так много. Если необходимой частью «проявления уважения» считается обилие текста — фигня-война, только намекните. Надеюсь, это прояснило ситуацию, и я хочу покончить с гуманитарными проблемами (желательно перманентно, без рецидивов) и перейти к техническим.

Итак. Первичная задача: в дистрибутив Lubuntu 13.10 Alternate Installer внедрить своё ядро. Точнее, оба (и .deb-пакет, который будет устанавливаться при использовании этого дистрибутива, и само то ядро, которое этот дистрибутив грузит и использует для своей собственной жизнедеятельности). Сначала, конечно, собственное ядро, потому что с .deb-пакетом задача мне кажется несколько тривиальной. Забудем его вообще пока.

Теперь лог экспериментов в стиле «бочку сделал, тунца с гречкой съел, не помогло».

1) С этого самого дистрибутива поставил Любку на первый попавшийся десктоп. Воспользовавшись мануалом «сборка ядра для самых маленьких» (он же http://pingvinus.ru/note/linux-kernel-compile) выполнил следующие простые вещи:

sudo apt-get install build-essential kernel-package libncurses-dev

sudo apt-get install linux-source

cd /usr/src

sudo tar xjf linux-source-3.11.10.tar.bz2

sudo ln -s linux-source-3.11.10 linux

cd /usr/src/linux

sudo make oldconfig

Вот тут у меня возник первый вопрос, с которым нужно обращаться к знающим людям, а не к гуглятине. А дефолтные параметры ядра в установленной системе подходят ли для ядра, на котором установщик будет крутиться? Всё-таки не LiveCD, а Alternate. Поскольку я не знаю, я довёл вивисекторский опыт до конца. Особенно меня смущают нюансы с модулями.

sudo make menuconfig

Нашёл и поменял то, что нужно найти и поменять. Сохраниться не забыл, нет :)

sudo make-kpkg clean

(на всякий пожарный почистил, просто я заодно и себе тюненое ядрышко собрал, но это оффтоп уже)

sudo make-kpkg --initrd --append-to-version=-mykernel kernel_image kernel_headers

Ну, и спокойной ночи :) Утром убедился, что в гнезде появились два кукушачьих яйца .deb-формата (ядро и хедеры, очевидно). Двойным кликом в папке (ну да, да, через гуйный PCManFM, хотя какая к чёрту разница...) вылупил из яйца кукушонка. Ребутнулся, ессно прощёлкал клювом grub menu %) но через

uname -r

убедился, что «майкернел» имеет место быть. Удостоверился, что Любка с моими ковыряниями в ядре вполне жизнеспособна. Не без подсказки добрых умных людей убедился, что в директории нет, опять в папке, я опять через PCManFM смотрел %) по фамилии /boot присутствует каноничное, описанное здесь вот содержимое: config, initrd.img, System.map и — дайбохздоровья Торвальдсу — vmlinuz.

Тут возникает второй вопрос к узким кругам знающих больше, чем можно нагуглить за вечер. Куда, собственно, на этом чёртовом загрузочно-установочном CD вбрасывать кукушонка? Родные vmlinuz и initrd.gz лежат в /install. Там они и были торжественно мной заменены (при помощи iso-редактора, который очень деликатно относится к тем областям, которые менять не надо) на позаимствованные из /boot, предварительно убедившись, что они так же и тем же сжаты, просто чтобы посмотреть, на какой стадии это грохнется. Грохнулось всё на правильной стадии, то есть я поменял то, что нужно было поменять :) Это было тривиально и очевидно. А за остальным я, собственно, к вам и постучался.

Видимо, карта вызовов функций ядра куда-то жёстко вшита. Внемлю.

 , ,

Nick_what_is_again
()

RSS подписка на новые темы