Разъясните как устанавливать ядро (Решено)
1. Создаю ядро с помощью genkernel --menuconfig all. Соответственно оставляю всё необходимое и убираю лишнее, поддержку файловых систем включаю в ядро. Ну и далее всё делает genkernel. В итоге в /boot появляются System.map*,Initramfs-genkernel*, kernel-genkernel*. Всё чудесно работает.
2. Далее пробую сделать всё руками. Удаляю из /boot файлы созданные genkernel, удаляю каталог с модулями из /lib/modules, делаю копию имеющегося .config и далее make mrproper. Восстанавливаю сохранённый от genkernel .config и делаю make && make modules_install. После компиляции ищу где лежит ядро. В новообразованном arch/x86_64/boot/ лежит ссылка @bzImage на 22 байта. Копирую ядро bzImage по ссылке в /boot, придаю ему благообразное имя. Правлю имя в меню grub и после перезагрузки успеваю увидеть только kernel panic и далее ноутбук выключается.
3. Вариант с make && make modules_install install, опять таки, с .config от genkernel, устанавливает в /boot System.map*, config*, vmlinuz*, но при загрузке (очень быстрой) успеваю увидеть только kernel panic и далее ноутбук выключается. Что делаю не так в ручных вариантах и какую функциональную нагрузку несут файлы System.map*, config* в /boot. Initramfs - как понимаю создается только genkernel. Хочется сделать компиляцию и размещение ядра вручную, без помощи genkernel.
- Для комментирования войдите или зарегистрируйтесь
.
Богатый и неленивый человек.
Зачем ищешь приключений на свою ...?
Тебе зачем предоставили возможность выбора варианта загрузки?
CONFIG_LOCALVERSION
спасёт вождя мирового пролетариата и нет необходимости удалять рабочий вариант загрузки.Стандартная ошибка, приводящая к панике при попытке загрузки без
initramfs
--- модульное (вместо монолитного) включение поддержки файловой системы корня (или поддержки контроллера, за подробностями иди вlspci -k
при загрузке с live cd.Про initramfs ты тоже неправ.
genkernel
--- всего лишь один из простейших (с соответственным набором недостатков) способ создания оной. Но очевидным образом не единственный.Начинать же надо как обычно: с раскуривания вопроса о том, где, зачем они насколько она initramfs нужна.
:wq
--
Live free or die
Да все очень просто
Да все очень просто :)
Устанавливаешь исходники ядра, я думаю лучше стабильного и выбираешь версию через eselect.
Конечно можно исходники ядра устанавливать сразу с USE флагом symlink, или например потом создать ручками символьную ссылку linux в каталоге /use/src/ на каталог с нужной версией ядра, но это требует особой подготовки :)
Затем переходишь в /usr/src/linux и делаешь так:
После запуска конфигуратора, я рекомендую отключать только то, что относится к железу, после знакомства с выводом команды lspci
Потому что остальная часть настроек ядра только что взята с рабочего ядра и на нем прекрасно работает (конечно бывают всякие исключения) :)
Ну а дальше:
root # make && make modules_install && make install
И смотрим в каталог /boot на новенькое ядро.
Ну а создать initramfs еще проще, достаточно почитать например это:
kesha@lata ~ $ find /usr/src/linux/Documentation/ -type f -name '*initr*' /usr/src/linux/Documentation/acpi/initrd_table_override.txt /usr/src/linux/Documentation/initrd.txt /usr/src/linux/Documentation/filesystems/ramfs-rootfs-initramfs.txt
И глянуть сюда http://www.gentoo.ru/node/26744
Как-то так...
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
Initramfs позволяет загрузить
Initramfs позволяет загрузить ядро даже в том случае, если жизненно необходимые для этого вещи (корневая ФС, драйверы SATA и т.п.) собраны модулями. Initramfs по сути содержит в себе эти модули.
Если собирать с тем же конфигом вручную, то без наличия initramfs одно ядро не сможет смонтировать файловую систему на винчестере тупо потому, что поддержка их реализована модулями. А модули где? да, в /lib/modules на винчестере в корневой ФС - вот и получается замкнутый круг.
Поэтому лучше либо пользоваться initramfs (в этом нет ничего плохого), либо собрать нужные драйвера не в виде модулей, а вкомпилировать прямо в ядро. Тогда всё получится.
Да вот в том то и дело, что
Да вот в том то и дело, что драйверы файловых систем, а также SATA (IDE и SCSI у меня нет и я их отключал полностью ещё при использовании genkernel) всё включено в ядро, только сетевые устройства оставил как модули. Топик, как ручками собрать initramfs разумеется читал, но со скриптами пока не связываюсь. Да и в английском слабоват (не тот язык с детства выбрал), хотя попытаюсь конечно почитать документацию. Однако есть простенький для общества вопрос. При ручной компиляции и размещении ядра, модули для работы всегда вручную прописывать необходимо, или они где-то ядром подхватываются? A initramfs от genkernel можно использовать если использовался один и тот же config? Сейчас попробую.
Inok
/
А-а-ай маладэц.
ЗЫ: В фортунки?
:wq
--
Live free or die
Попробовал на чищенном под
Со SCSI, да, зело погорячился, запамятовал, что для него все диски как SCSI.
Попробовал на чищенном под genkernel config собрать и установить ядро вручную добавив в меню загрузчика данные о initramfs оставшемся от сборки c genkernel ну и каталог с модулями оставил старый. Всё чудесно работает. Получается, что можно просто иметь пару файлов и каталог с модулями и без зазрения совести просто подсовывать их в систему при полной переинсталляции вместо очередной эпопеи по сборке ядра? А при монолитном ядре вообще обойтись одним файлом? Почти как в старом, добром DOS 5 ... 6.22. Сказка да и только - правда грустная.
Остались только вышеозвученные вопросы по по прописке модулей и функционалу файлов в /boot System.map и config
Inok
Inok написал(а): Получается,
Можно, только не понятно зачем эту самую "полную переинсталляцию" делать.
Ради того, ради чего люди
Ради того, ради чего люди удаляют Windows и копаются в Gentoo. Хотя и то и другое служит одной и той-же цели и чаще всего достаточно примитивной (напечатать табличку, набрать текст, выйти в интернет, проверить почту, совершить покупку и сыграть в игрушку, реже воспользоваться обучающей программой и т.д.) Жаль, на последние вопросы так никто и не ответил. Буду разбираться сам.
Inok
Как раз, одна из причин моего
Как раз, одна из причин моего перехода на gentoo была: что бы не делать переустановок.
.
Неправильно.
То, что _сейчас_ ты не наступил на грабли не гарантирует расхождения с ними в будущем.
Подпишусь под вопросом о необходимости "полной переинсталляции".
Почему грустная?
По моему опыту, вручную прописывать надо разве только модули, устанавливаемые отдельно (т.е. через
portage
), или когда для корректной работы модулю необходимо передать дополнительные параметры.config
зависит от того как_чем ты собираешь ядро.Например у меня:
Все перечисленные файлы положены ручками.
System.map
--- порождениеgenkernel
'а.man lilo.conf
:Есть мнение, что в настоящее время это суть дань традиции.
:wq
--
Live free or die
Цитата: Неправильно. То, что
Ну и расписал бы почему так.
Ну т.е. ты этого не знал ?
Кроме прочего, нужно в иметь исходники той же версии и хотя бы выполнить 'make modules_prepare' .
Всё ещё используешь "дырявые" ядра или уже наложил патч ? https://patchwork.kernel.org/patch/2441281/ Или система 32 битная ?
Это не порождение genkernel`а:
/
Восстанавливай навыки чтения.
Речь идёт о "полной переинсталляции" всего, кроме ядра.
Твои аппеляции к некоторому сокровенному знанию указывают на то, что ты в теме зачем это нужно.
Записываешься в список ответственных за данный вопрос.
Всё ещё используешь "дырявые" ядра или уже наложил патч ? https://patchwork.kernel.org/patch/2441281/ Или система 32 битная ?
И снова учимся читать (и понимать прочитанное).
Перечисленные файлы скопированы ручками. Именования согласно моим представлениям о сообразном.
И таки да: начинаял я с 32-разрядной системы. А менять принцип именования для файлов, представляющих сугубо локальный интерес, мне попросту лень.
Ты уверен?
В таком случае с тебя развёрнутое толкования факта наличия отсутствия у меня в
/boot/
файлаSystem.map
.:wq
--
Live free or die
Цитата: И снова учимся
Я лишь указал тебе на то, что в 64 битных ядрах версии до 3.8.9 есть уязвимость, поскольку вижу, что у тебя установлены более младшие версии. Заодно уточнил архитектуру системе, т.к. эту уязвимость можно реализовать лишь в 64 битной системе. Поэтому и спросил 32 битная у тебя система или нет. Ничего более я не имел ввиду, не надо искать тайный смысл там, где его нет.
Уверен. Я ядра собираю в ручную, ставлю их командами
Поэтому у меня копируется из директории с исходными кодами ядра образ ядра в /boot/vmlinuz-версия_ядра, файл с конфигом ядра /boot/config-версия_ядра и файл System.map /boot/System.map-версия_ядра.
Если ты прочитал текст, который я привёл в прошлом сообщении, то должен был увидеть, что в этом файле содержатся адреса смещения подсистем ядра, для более детального определения причин kernel panick и прочих сбоев при отладке ядра. При любом сбое и kernel panick на экран так же выводится адрес смещения, указывающий на код в ядре в котором произошёл сбой.
Кроме всего прочего, файл System.map создаётся в процессе сборки ядра в ручную и находится в /usr/src/linux/System.map проверь, если не веришь.
ЗЫЖ: Зачем упираешься, всё равно же не прав ?
.
Молодец.
Сильно.
По архивному списку _конфигов_ делать выводы относительно списка вариантов загрузки...
Срочно делись исходниками используемой версии
libtelepathy
!Как и предполагалось, ответа на вопрос относительно причин, по которым в результате приведённых команд
/usr/src/linux/System.map
не компируется в/boot/
не последовало.Ога.
А лучшим и неоспоримым свидетельством того, что ты полностью понимаешь суть выполняемых действий и называешь все значащие факторы является то, что приведённые тобой результаты не обременены свойством независимой перепроверяемости
:wq
--
Live free or die
Цитата:Молодец.Сильно.По
Вот человек, блин, я его предупреждаю о возможно уязвимости, а он какашками кидается в ответ. Я пишу ответ исходя из написанного тобой текста, ну используешь ты более новое ядро, в котором нет уязвимости или архитектура у тебя 32 битная, ну радуйся.
У меня копируется.
Ещё раз, при смонтированном /boot и после выполнения команды 'make install' указанные выше файлы копируются в /boot/ . Почему у тебя по другому не знаю, разбирайся.
Но тем не менее это не избавляет от факта, что ты не правильно указал назначение файлы System.map, даже если его нет у тебя в /boot.
/
Так вот как по нонешним просвещённым временам называются замечания к навыкам чтения/понимания прочитанного...
Был неправ.
Я использовал рекомендуемую в Gentoo процедуру установки ядра:
Которая очевидным образом
System.map
никуда не копирует.Из какового факта, кстати, очевидным образом следует опциональная сущность оного.
Хотя расхождение результатов стандартного сценария
genkernel
'а с рекомендуемым можно интерпретировать как багу. И не уподобляйся отдельным модераторам!Не отменяет.
Как не отменяет и упоротого игнорирования тобой множественных объективных указаний на опциональную сущность оного.
Был неправ, перепутал по совпадению подстроки имени с наличным файлом.
http://www.dirac.org/linux/system.map/ зеркало http://rlworkman.net/system.map/
С тебя указание на штатную документацию с обладающей свойством независимоей перепроверяемости процедурой нахождения информации.
:wq
--
Live free or die
Anarchist
Опасаясь снова поднять этот адовый тред, всёже отвечу. Когда-то я задался вопросом - а действительно, почему если make install всё копирует сам куда надо, это не описано в Handbook ? Попробовал сам, и вышло что если в /boot никого нет, то и не копирует! Почему разбираться не стал, но обновляюсь через make install.
P.S. Да, кстати, Анархист - следи пожалуйста за тегами цитат в своих адовых оверквотингах, только что минут 20 убил на разбор твоего поста ища где ты воткнул лишний/недоставил нужный [ / quote ] , из-за которого слетели рамочки постов, и кнопки ответа отправились в свободное плавание...
Цитата: а действительно,
А вы сами не хотите читать документацию ? Хотите, что бы вам всё на блюдечке давали ?
У вас /boot случаем не на отдельом разделе был ? Если до, то, естественно, 'make install' его предварительно не смонтирует.
Необходимость наличия System.map
Inok
исходя из того, что /boot
исходя из того, что /boot нередко существует как отдельный раздел и обычно он не смонтирован, польза от System.map в данном случае сомнительна. klogd и прочие заинтересованные как бы должны уметь его читать из /usr/src/linux, где он обитать и должен.
.
Строго говоря, в условиях дефицита дискового пространства каталог
/usr/src/linux
тоже может отсутствовать.:wq
--
Live free or die
ну можно и оставить только
ну можно и оставить только System.map, а на остальном экономить сплеча )
/
Усложним задачу :)
Загрузка с предыдущим ядром (
/usr/src/linux
указывает не на его дерево исходников).Твои действия?
:wq
--
Live free or die
вот уж не ленивые люди
и это после
А что будет при отсутствии поддержки ядром модулей ...?
------------------
System.map действительно опционален.
Но как показало исследование make [|menu|n]config при отсутствующем .config ищет именно /boot/config-`uname -r`
Добавив, что все три файла в make install при копировании переименовываются к виду [System.map|config|vmlinuz]-`uname -r`, предполагаю, что именно такое имя будет приоритетным в случае поиска System.map в системе.
PS. Ядер может быть собрано несколько на основе одних и тех же исходников. Все System.map в /usr/src/linux не удержишь.
предлагаю завершить все это
предлагаю завершить все это толстоквашино на том, что в общем случае System.map не будет доступен кому надо. А если это не устраивает — смотреть, где его будет искать «кто надо» и исполнять это требование.