LINUX.ORG.RU

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

 , , , ,


0

1

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

Дано: свежий дистрибутив 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 собранное под данную машину правильное ядро, вынуть все три носителя и смело грузить свежеустановленную систему.

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

1) Не понимаю, как чередует в процессе штатной работы (от бута до завершения установки) свои ядра дистрибутив Lubuntu и что ему надо заменить, чтобы избежать запуска несовместимых с целевой системой ядер;

2) Не знаю, как собрать все ядра, которые необходимы ему для работы (ну, кроме самого простого, последнего, которое просто .deb, потому что там вообще знать нечего). Хотя, судя по тому, что я не могу даже из другого дистра ядра переткнуть, на это мне рановато замахиваться.

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

Не все :( Я весь /install подменил (очевидно, и инициальный рамдрайв там был), и вот после этого-то он меня и послал со словами, что модули от одного, а ядро от другого.

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

в install лежит и ядро и initrd, если они взяты из одного места несооответсвия версий быть не должно - но так как оно у тебя есть, то очевидно что ядро и содержимое /lib/modules внутри initrd.gz либо друг другу несоответсвуют, либо установщику нужен модуль которого у тебя в initrd.gz нет.

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

Но он не просто запустился (т. е. инитрд стартовал и ядро не жаловалось), но даже дошёл до некоторых меню!

Он, наверное, ещё где-то модули добавочные хранит и пытается грузить, когда до них доходит дело? Слово «архива» смущает.

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

больше там модулей нет - всё же сравни версию ядра и версию модулей в initrd.gz

посмотреть можно примерно так:

install|⇒ gzip -d initrd.gz | lsinitcpio initrd.gz | grep modules | tail
gzip: initrd: Read-only file system
lib/modules/3.8.0-29-generic/kernel/drivers/scsi/osst.ko
lib/modules/3.8.0-29-generic/modules.ofmap
lib/modules/3.8.0-29-generic/modules.alias
lib/modules/3.8.0-29-generic/modules.isapnpmap
lib/modules/3.8.0-29-generic/modules.pcimap
lib/modules/3.8.0-29-generic/modules.inputmap
lib/modules/3.8.0-29-generic/modules.seriomap
lib/modules/3.8.0-29-generic/modules.usbmap
lib/modules/3.8.0-29-generic/modules.ieee1394map
etc/modules.conf
install|⇒ file vmlinuz
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-29-generic (buildd@akateko) #42~precise1-Ubuntu SMP Wed A, RO-rootFS, swap_dev 0x5, Normal VGA

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

Едва ли в дистрибутиве 12.04, из которого они были взяты, одно другому могло не соответствовать...

Вообще ядро, в общем-то, успешно загрузилось. Если ядро кривое, всё падает намного раньше, не спросив, какую я желаю раскладку, блин, клавиатуры и чем её переключать (да-да, даже до этого он дотянул!). Возможно, такое уточнение места падения поможет конкретизировать причину косяка.

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

/pool/*/*.udeb
В udeb хранятся модули
Лучше не мучайся, а из-под какого-нибудь LiveCD собери себе debootstrap-ом Lubuntu
На LOR-Wiki все раписано
А потом поставишь ядро из сырцов без PAE

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

замена ядра в дистрибутиве Lubuntu
ядро
Lubuntu

Вы делаете что то не правильно.

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

Очень вероятно... там, скорее всего, тем и отличается от Live, что управление вообще передаётся текстовому установщику, который удовлетворяется самим CD, примонтированным только для чтения. А инитрд обычный, без него никуда — надо ж как-то стартовать.

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

В смысле «думаю, что обычный», т. к. просто нет никаких признаков дополнительного функционала. Установщику много ли надо...

Кстати, о подделках. Как принудительно при сборке ядра задать версию? В дистрибутиве 3.11.0-12-generic, а собирается, невзирая на заданную в menuconfig Arbitrary Version String, 3.11.10.3-10.00.Custom и это явно может добавлять «веселья». И, кстати, System.map в дистрибутиве в явном виде не лежит — куда он всунут и как это сделать? Это к вопросу о второй стадии изначальной задачи.

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

Это о том, как через UCK поставить в дистро нескучные обои? Всё равно ведь он пляшет от базового дистрибутива, неужели он умеет туда вкорячивать другие initrd, vmlinuz, System.map? Вряд ли, я вижу, что вся бутовая область берётся от базового дистра as is. Если умеет — ну так прямо и ткните пальцем в конкретный ман, где это написано, потому что то, что собеседник отказывается заранее прочитать весь интернет ради того, чтобы убедиться, что неподходящая с виду утилита действительно не подходит — явно не вина собеседника. В его визарде ничего подобного нет, ну так ткните пальцем, где я ошибаюсь. В консоли потом можно вызвать менеджер пакетов, ну дак я же не нескучные обои меняю, а саму бутовую область дистра! Или это очень нетривиально запрятанная возможность, или это не я не желаю маны читать, а кто-то не желает читать постановку задачи.

Если это о том, как собрать само ядро — да, по этим двум ссылкам я долго и вдумчиво читал, но осознал, что не понимаю, что мне с этим ядром потом делать. Потому что не осилил предыдущую стадию: имея готовое ядро, заведомо исправное, всунуть его в дистр. Я вернусь к ним позже, когда пойму, что куда втыкается.

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

Быстрый топорный тест: закинул в 13.10 вообще все файлы из 12.04, которых там не было. Т. е. на каждый новый пакет есть и старая версия из 12-й. Ессно дальше через unetbootin из-за конских размеров образа.

И модули таки нашлись! :) Установщик 13-й стартует на ядре 12-й, находит допмодули, которых не хватало раньше, ставит базовую систему, бодро чешет вперёд... и на операции «настраивается пакет linux-image-3.11.0-12-generic» падает. Естественно, пакет-то у него есть, я же не удалял пакеты от 13-й, просто добавил к ним старые версии от 12-й, но поставить его он по какой-то причине не смог. То ли из принципа нежизнеспособное для данной системы ядро ставить не хочет (ну да это-то в любом случае надо решать заменой деба с ядром на жизнеспособный, чтобы не ставить вместо системы некоего требующего допиливания кадавра), то ли ХЗ что.

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

Лучше возьми лайв какой-нибудь и по LOR-Wiki поставь убунту через debootstrap
А там уже и tasksel install ubuntu-desktop ubuntu-standard

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

«Решение на один раз» вообще можно использовать самое простое: ставится 12.04, ставится fake-pae, потом цепочка апгрейдов.

Я хочу выработать универсальную методику нагибания проблемы по какому-то такому шаблону:

1) установите bar, foo, bar-src и isomaster. 2) вскройте isomaster'ом образ установщика, запишите версию ядра, фигерсию перверсии и ещё что-то там. 3) соберите ядро, помните, что ядро должно быть собрано с ключами --foo, --bar и в конфигураторе надо задать настройки версии тртр и обязательно иметь модули прпр вкомпилированными, а хрхр — модульными. 4) из полученного .deb дистрибутива ядра сделайте initrd, vmlinuz, также понадобится System.map, сам дистрибутив, скорлупа яйца боа-боа и пепел сожжённого пера влюблённого boucassier'a. 5) замените в образе файлы bar, foo, initrd, vmlinuz, bar.udeb и так далее. Дистрибутив на кастомном ядре готов.

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

Упоротый, одним словом
Сколько раз тебе повторять: debootstrap!!!!!
ТЫ что, дурак штоле?
Я тебе говорю загрузись из лайва и ставь debootstrap-ом бубен, на лор-вики все расписано
как ставить гуй, добавить репы и пакеты
в нем и собирай ядро без PAE чтобы загрузится, то есть не из реп, а СЫРЦОВ
Неделя идиот какая-то: то Windows Server не могут настроить рукожопы, то комменты не читают, но все равно отвечают

ubuntuawp ★★
()

В Ubuntu есть менеджер репозиториев, открой его и поставь галочку на «Source». Затем открой менеджер пакетов и обнови информацию о пакетах. А теперь открой консоль и выполни:

mkdir kernel-new
cd kernel-new
sudo apt-get build-dep linux-image
apt-get source linux-image
dpkg-source -x *.dsc

Сделай изменения: патчи или изменения конфигурационного файла. Потом скомпилируй новое ядро командами:

fakeroot ./debian/rules binary
cd ..
rm *dbg*

DEB-пакеты готовы

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

DEBов я выше крыши наделал, проблема в дистр их внедрить, причём не только как объект установки, но и как хост для самого установщика. Как объект установки их внедрить-то сто способов, включая всякие визуальные конфигураторы типа «собери свою убунту», которые добавляют произвольный пакет. Вот как заставить isolinix корректно загрузить собранное таким образом ядро, а текстовый установщик — работать на нём, вот в чём вопрос-то.

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

Михаил, вы, главное, расслабьтесь, примите вещества, пусть подействуют, только потом пересекайте двойную сплошную.

___________________________

___________________________

Система у меня стоит уже, не нужен мне бутстрап. Проблема не в том, чтобы что-то поставить здесь и сейчас, а в том, чтобы собрать дистрибутив на кастомном ядре для будущих проблем и одарить им ближнего своего. А система стоит, работает, всё нормально, бутстрапу делать уже нечего, его задача успешно выполнена. За совет спасибо, бутстрап — хорошая штука, особенно, если скрипт один раз написал и сто раз на сто машин поставился. Но неактуальная, потому что все машины пока и так работают. Вопрос был про дистрибутив, и да, всё верно, сейчас идёт Неделя Отвечающих Не На Тот Вопрос. Хотя ответ полезный, спасибо.

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

Шутник, е-мае
Я тебе объясняю
Твои действия - тупые ламерские костыли
Тебе сложно сделать man debootstrap и собрать свой бубен с БиШкастомный ведром без PAE? Или возьми Ubuntu Core - уже готовый bootstrap в виде tbz2
tar xvf ubuntu-core-*.tbz2 и все, вуаля - линакс готов
Дальше ядро, пакеты и базовая настройка: время, хостнейм, e.t.c
Зачем делать себе проблемы?

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