LINUX.ORG.RU

|Gentoo| как правильно пересобрать ядро?

 ,


0

0

Появилась необходимость добавить несколько опций в ядро. На виртуальной машине пересобирал неоднократно, вроде все получалось. На ноуте боюсь что-нибудь накосячить, все таки установка gentoo занимала более 7 часов и переустанавливать заново не хочется, тем более что не могу не нарадоваться. Тем более что сидя на убунте и иже с ними вопросами пересборки ядра сильно не озадачивался. Возникло несколько вопросов по переконфигурации ядра:

  • собственно сама пересборка (рукокнигу читал, но меня интересует make mrproper), правильно или нет?
    cd /usr/src/linux
    make mrproper
    make menuconfig
    make && make modules_install
    make install
    grub2-mkconfig -o /boot/grub/grub.cfg
    reboot

    Собственно, интересует не затрет ли make mrproper старый конфиг, или старый конфиг нужно сохранить? или как?
  • Далее еще один вопрос, связанный с пересборкой. Допустим, у меня несколько ядер. Одно я переконфигурировал и оно не загрузилось, как выбрать для загрузки другое, работоспособное ядро?

Между mrproper и menuconfig не хватает zcat /proc/config.gz >/usr/src/linux/.config ; make oldconfig — зачем каждый раз с 0 настраивать?
А еще есть genkernel, который спасает от кучи копипасты, например у меня:

genkernel --kernel-config=/usr/src/linux/.config --clean --no-mrproper --oldconfig --menuconfig --symlink --makeopts=-j3 --e2fsprogs --compress-initramfs-type=xz --bootloader=grub2 --splash=natural_gentoo --splash-res=1280x1024 --install all

Собственно, интересует не затрет ли make mrproper старый конфиг, или старый конфиг нужно сохранить? или как?

Конечно затрет, чтобы не терло можно использовать make clean, а при обновлении ядра конфиг можно взять из /proc/config.gz

как выбрать для загрузки другое, работоспособное ядро?

В grub нажать нужное кол-во раз <вниз> и затем <enter>.

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

переустанавливать заново не хочется

Если будут проблемы в конфигурации ядра и ты не можешь загрузить систему, то просто грузишься с LiveCD, монтируешь файловые системы, делаешь chroot и перенастраиваешь ядро. Зачем всю систему-то заново переустанавливать?

Собственно, интересует не затрет ли make mrproper старый конфиг, или старый конфиг нужно сохранить? или как?

Затрёт, можешь сохранить куда-либо файл .config из директории с исходниками, а потом вернуть обратно.

как выбрать для загрузки другое, работоспособное ядро?

На этапе работы grub выбираешь пункт с запуском Gentoo, если в загрузчике несколько вариантов загрузки, нажимаешь клавишу «e», попадаешь в редактирование варианта загрузки, переводишь курсор к строке где указано какой файл образа ядра нужно грузить, стираешь имя файла до директории /boot и нажимаешь клавишу «tab», grub выведет список файлов в директории /boot, по подсказкам дописываешь имя файла нужного тебе ядра, после того как дописал наживаешь клавишу «b», загрузка пошла с внесёнными изменениями. Стирать имя файла целиком не нужно, в том случае если в /boot лежат файлы vmlinuz-3.18.4-gentoo, vmlinuz-3.18.5-gentoo, vmlinuz-3.18.5-gentoo.old, то достаточно стереть только до vmlinuz или vmlinuz-3.1, а затем нажать клавишу «tab». Если используется initramfs и в нём находятся модули, необходимые для монтирования корня, то точно так же указывай соответствующий файл initramfs.

Удачи.

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

Значит должна быть такая последовательность?

cd /usr/src/linux 
make mrproper
zcat /proc/config.gz >/usr/src/linux/.config
make oldconfig
make menuconfig
make && make modules_install
make install
grub2-mkconfig -o /boot/grub/grub.cfg
reboot
А вообще make mrproper нужен или нет? И если нужен то зачем? Можно ли его вообще не использовать?
И как быть с makeopts? У меня в make.conf makeopts прописан, нужно ли его прописывать при компиляции ядра, скажем make -j3 или того что в make.conf должно хватить?
И еще один вопрос меня мучает. Это makeopts. У меня процессор Dual core Intel Core i3-2350M, у него физических два ядра, но он поддерживает HT, значит логических должно быть 4. Так что написать в makeopts? j3 или j5. В нете встречал такую рекомендацию

рекомендуется количество ядер +1 или 2*кол-во_ядер +1

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

А вообще make mrproper нужен или нет?

clean сносит только ошметки от предыдущих сборок, а mrproper еще и конфиг.

И как быть с makeopts? У меня в make.conf makeopts прописан

Утилитка make makeopts из make.conf не читает, нужно указывать.

Так что написать в makeopts?

j3, если хочется чтобы побыстрее собралось, или j1, если нужно чтобы сборка поменьше мешала работе за компом.

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

А вообще make mrproper нужен или нет? И если нужен то зачем? Можно ли его вообще не использовать?

# cd /usr/src/linux
# make help | grep 'mrp\|clean'
  clean           - Remove most generated files but keep the config and
  mrproper        - Remove all generated files + config + various backup files
  distclean       - mrproper + remove editor backup and patch files
  cleandocs       - clean all generated DocBook files

И как быть с makeopts? У меня в make.conf makeopts прописан, нужно ли его прописывать при компиляции ядра, скажем make -j3 или того что в make.conf должно хватить?

То, что у тебя прописано в make.conf оказывает влияние только на emerge (portage), на ручной вызов make ни коим образом ни как не повлияет, т.е. в данном случае ядро будет собираться в один поток.

Если ты хочешь собирать ядро в несколько потоков, то указывай соответствующую опцию make:

make -jN bzImage
make -jN modules
где N - число потоков сборки.

Так что написать в makeopts?

Смотри сам, но думается, что 3-х хватит, но как я уде сказал makeopts оказывает влияние лишь на emerge.

kostik87 ★★★★★
()

мой скрипт для генты выглядит так, написан пару лет назад в пьяном угаре, с тех пор так и остался

KLINK=$(readlink /usr/src/linux)
LKERN=$(eix -c gentoo-sources | sed -r 's/.+\(([0-9]{,3}\.[0-9]{,3}\.[0-9]{,3})\).+/\1/')
[[ $(echo ${LKERN} | wc -c) -le 11 ]] || exit
CKERN=$(uname -r)
LKERN+=-${CKERN##*-}
[[ $KLINK = /usr/src/linux-$LKERN ]] || ln -sfT /usr/src/linux-${LKERN} /usr/src/linux && echo -e 'Symlink was updated\n\n'
[[ linux-$CKERN = $KLINK ]] || cp -l "/usr/src/linux-${CKERN}/.config" "/usr/src/linux-${LKERN}/.config" && echo -e 'Currently loaded kernel differs from selected\n\n'

# sooo it doesnt really work with the same kernel atm

cd /usr/src/linux
make oldconfig
make -j5 menuconfig
make -j5 && make INSTALL_MOD_STRIP=1 -j5 modules_install
mount /boot
cp -v /usr/src/linux/arch/x86_64/boot/bzImage /boot/kernel-sunrise-${LKERN}
#${KLINK#*-} o_0 my bad. oh well, who cares
grub2-mkconfig -o /boot/grub/grub.cfg
find /lib/modules/ -type f -exec chmod -R 644 {} \;
find /lib/modules/ -type d -exec chmod -R 755 {} \;
find /usr/src/linux/ -type d -exec chmod -R 755 {} \;
#sed 's/^CONFIG_R8169/\#CONFIG_R8169/' -i /usr/src/linux/.config
#emerge net-misc/r8168
emerge @module-rebuild
#sed 's/^\#CONFIG_R8169/CONFIG_R8169/' -i /usr/src/linux/.config

emerge -1 sys-apps/microcode-data

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

Может быть странный вопрос, но если выполнить make clean, видеодрайвер потом не соберётся? Интересно, что значит most в данном случае.

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

если выполнить make clean, видеодрайвер потом не соберётся?

Скорее всего не соберется, нужно сделать ЕМНИП make modules_prepare - он сгенерит нужные заголовочники, это не долго.

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

не уверен что это правильно но make mrproper вообще ни когда не делаю, и не понимаю зачем нужно заставлять make собирать то что он уже собрал и увеличивать время компиляции в овер дохрена.

grub2-mkconfig -o /boot/grub/grub.cfg нужен только когда версию ядра обновляешь, если по 20 раз пересобираешь одно и то же ядро то названия файлов в /boot не меняются, конечно же если у тебя вообще grub2 )

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

не уверен что это правильно но make mrproper вообще ни когда не делаю, и не понимаю зачем нужно заставлять make собирать то что он уже собрал и увеличивать время компиляции в овер дохрена

а как правильно? Все говорят по разному. Нашел вот такую статью. Там не используют mrproper, но кто то использует. Так как правильно? Я это и хочу узнать, не охота косячить.

grub2-mkconfig -o /boot/grub/grub.cfg нужен только когда версию ядра обновляешь, если по 20 раз пересобираешь одно и то же ядро то названия файлов в /boot не меняются, конечно же если у тебя вообще grub2 )

У меня grub2. На том же лоре читал, что если не обновить загрузчик, будет проблема с загрузкой ядра, или что то такое.
Так как правильно и грамотно все сделать? Что бы потом не жалеть и не переустанавливать gentoo, не рыдать и не плакать. Да, а как тогда обновлять ядро, если придет новое?

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

Что бы потом не жалеть и не переустанавливать gentoo, не рыдать и не плакать.

Выше же уже написали. Неправильно собранное ядро совсем не повод все переустанавливать, можно загрузить старое ядро, можно загрузить liveCD и в черуте пересобрать ядро как при установке по хендбуку.

а как правильно?

Зависит от задачи, обновить ядро и пересобрать ядро потому что забыл что то включить в конфиге немного разные задачи. Пробуй на практике, смотри что получается, если что то сломаешь liveCD с убунтой -> chroot

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

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

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

может тогда посмотреть с сторону genkernel? Что лучше, что правильно?

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

у меня вышло 170 строк проверки и вывод ошибок инфы в стиле emerge, но смысл тот же
eselect kernel list|set
zcat /proc/config.gz > /usr/src/linux/.config
make oldconfig && make && make modules_install
и установка

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

ладно, лучше так, а как вы пересобираете/обновляете ядро? Вы уже давно пользуетесь gentoo, я только начал. Хочется услышать мнение практика, конкретно как лучше. Например, добавить вот это cfg80211 wireless extensions compatibility

akhmylin
() автор топика
Ответ на: комментарий от akhmylin
make menuconfig
make && make modules_install && make install

Если обновляю то еще

grub2-mkconfig -o /boot/grub/grub.cfg

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

Тут главное не то как лучше, главное уметь решать возможные проблемы при пересборке ядра. |Gentoo| как правильно пересобрать ядро? (комментарий) И тогда в общем то пофигу как его собирать, как нибудь соберется.)

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

и последнее, все таки, при переконфигурации ядра, после make install в рукокниге написано

Change the system's bootloader configuration to pick up at boot the new kernel.

значит все таки после переконфигурации, не после обновления, стоит все таки сделать grub2-mkconfig -o /boot/grub/grub.cfg или нет?

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

все, спасибо большое за помощь, вопросов больше не имею.

akhmylin
() автор топика

Ерунду вы какую-то порете, батенька. Собрать - вовсе не значит запустить. Тем более в генте.
Собери да подставь его загрузчику в качестве основного. Не понравится - верни обратно.
Не понимаю, в чём проблема-то, ёптыть.

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

А вообще make mrproper нужен или нет? И если нужен то зачем? Можно ли его вообще не использовать?

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

И как быть с makeopts? У меня в make.conf makeopts прописан, нужно ли его прописывать при компиляции ядра, скажем make -j3 или того что в make.conf должно хватить?

Так как ядро собирается не портажем, то mace.conf тут вообще не при делах.

У меня процессор Dual core Intel Core i3-2350M, у него физических два ядра, но он поддерживает HT, значит логических должно быть 4. Так что написать в makeopts? j3 или j5.

-j5.

r3lgar ★★★★★
()

сто лет уже использую такой скрипт:

#!/bin/bash

cd /usr/src/linux && \
make -j6 oldconfig && \
make -j6 modules_prepare && \
make -j6 nconfig && \
make -j6 && make modules_install && make install && \
emerge @module-rebuild

# removed due to new emerge @module-rebuild functionality
#module-rebuild rebuild

UPD: это для новых ядер, соотв. руками перед запуском делаю eselect kenel set #ядра

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

Любой нормальный работоспособный конфиг, на который ты тратишь больше 5 минут времени нужно бекапить. Они весят по несколько килобайт, неужели так сложно сделать отдельный каталог в /home, всунуть специально обученную копеечную флешку и выполнить cp пару раз?

Полезная привычка же.

raven_cler ★★
()

lilo лучше заюзай вместо grub, «make install» его вызывает

armbox
()
13 декабря 2015 г.
Ответ на: комментарий от wakuwaku

блоб чего? nvidia? только что проверил - работает нормально для той же версии ядра, что и установлена.

То есть ставим ядро, грузимся с него, потом

cd /usr/src/$(uname -r) && make mrproper && make modules_prepare prepare && emerge @module-rebuild && rmmod nvidia && modprobe nvidia

После этого грузим иксы и проверяем, например, что OpenGL работает.

Update: ошибочка - забыл указать в строке команд zcat /proc/config.gz > .config - make mrproper же грохнет конфиг сборки. Или можно заюзать вместо него make distclean

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

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

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

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

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