Автор Тема: компилиране на ядро  (Прочетена 6388 пъти)

Nik123

  • Напреднали
  • *****
  • Публикации: 3088
  • Distribution: Mageia, Q4OS
    • Профил
компилиране на ядро
« -: Jan 11, 2020, 20:07 »
Здравейте и честита Нова година на всички!  Не бях влизал в този форум отдавна, всъщност дори си бях забравил и паролата, с малко зор си я припомних. Ползвам вкъщи и в работата си дистрибуцията Mageia, версията е 6. От години просто ползвам тая диструбиция, или предходните- Mandriva, openMandriva, без да ми се налага да "човъркам" системата. Проблемът ми е следния- реших да компилирам ядро от kernel.org. Преди години съм го правил, поне 6-7 г. назад във времето, но са ми излезли от паметта някои детайли. Доколкото се сещам, make xconfig и make се правеха като юзър, make modules_install, make install, /sbin/ldconfig и update-grub  като root. Само че, някои пакети (като този на нвидия например) търсят сорса на ядрото в /usr/src/linux-(версия), а като юзър в тая директория няма да ми се получат нито конфига, нито мейк. Като юзър мога например в /home/user/src/linux-(версия) да направя конфига и мейк, а после като руут make modules_install и т.н., но тогава сорса на ядрото ще остане в /home/user/src/linux-(версия) и може да направи проблем, например ако инсталирам драйвъра за нвидията. Единият вариант, за който се сетих, е да направя конфига и мейк като юзър в /home/user/src/linux-(версия) и после да копирам цялата директория в /usr/src/linux-(версия) и оттам вече като root маке modules_install, make install и т.н. - ще се получи ли? Другият вариант е сорса в /usr/src/linux-(версия) и там всичко като руут- от конфига до край - проблем ли ще бъде, ако всичко съм направил като root ? Ползвах търсачката на форума, не намерих отговор на тези въпроси, поразтърсих се и в нета, освен това, което знам отпреди- че не е добре конфига и мейк да се правят от руута, поради съображения за сигурност, друго не намерих. Третото, което евентуално би причинило неприятности- ще има ли проблем с ъпдейта на GRUB, при положение, че при мен не е в MBR, а в /dev/sda6 (/boot партишъна), там съм го преместил, заради друг буутлоудър, който си иска непременно да е в MBR?
Благодаря предварително!

П.п. дистрибуцията е Mageia 6, x86_64, графичната среда Plasma, ядрото 4.14.119-desktop-1.mga6 #1 SMP, 8 GB РАМ, процесора Intel, двуядрен
Активен

Nik123

  • Напреднали
  • *****
  • Публикации: 3088
  • Distribution: Mageia, Q4OS
    • Профил
Re: компилиране на ядро
« Отговор #1 -: Jan 11, 2020, 23:16 »
С много ровене в търсачката тук, намерих стара своя тема отпреди няколко години-
https://www.linux-bg.org/forum/index.php?topic=44353.msg259198#msg259198

И проблемът си намери решението-  "Единият вариант, за който се сетих, е да направя конфига и мейк като юзър в /home/user/src/linux-(версия) и после да копирам цялата директория в /usr/src/linux-(версия) и оттам вече като root маке modules_install, make install и т.н."

Поздрави!  [_]3

Едит: Ще пиша като приключа с ядрото, дали се е получило всичко нормално и с GRUB, който не е на дефолт мястото си в MBR.
« Последна редакция: Jan 11, 2020, 23:20 от Nik123 »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Re: компилиране на ядро
« Отговор #2 -: Jan 12, 2020, 13:09 »
Едит: Ще пиша като приключа с ядрото, дали се е получило всичко нормално и с GRUB, който не е на дефолт мястото си в MBR.

То така или иначе кодът който е в MBR 512байта (че и по малко) е не достатъчен да прочете файловаta система т.е. да се обърне към /boot.

Обаче този код зарежда еще един код който се намира в секторите след MBR-то и то преди първият дял. Наричат го stage2 (или stage1.5 според груб). Е та този код вече е достаъчно голям за да прочете файлова система /boot.
В онази тема, дето пуснах - как е направил инсталацията центос7
https://www.linux-bg.org/forum/index.php?topic=48679.msg312709#msg312709
/boot дяла започва от 2048 LBA сектор. Това са 2048x512=1Мb свободни сектори. Какво се намира между МБР-то началото на първата партиция?


Та по тази логика ако /dev/sda6 ти е някаква extended parttition би трябвало вторият код да има достатъчно 'капацитет' и да може да се обърне към /dev/sda6 и да бутне.
Какво ти е разделението на диска - MSDOS partition table или GPT? Аз щото винаги си правя MSDOS partition table (с максимум 4 дяла).
И на мен ми е интересно.

https://en.wikipedia.org/wiki/GNU_GRUB#/media/File:GNU_GRUB_components.svg
« Последна редакция: Jan 12, 2020, 13:23 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

Nik123

  • Напреднали
  • *****
  • Публикации: 3088
  • Distribution: Mageia, Q4OS
    • Профил
Re: компилиране на ядро
« Отговор #3 -: Jan 12, 2020, 17:36 »
Здравей! Харддискът е един, sda. С две операционни системи- уин 7 (заради игрите и някои други неща) и Mageia 6.

Device: sda2 (Ц-то на уина)
DOS drive letter: C (just a guess)
Type: NTFS-3G (0x7)
Start: sector 206848
Size: 50GB (5% of disk), 106291200 sectors
Cylinder 12 to 6629

Device: sda3 (Д-то на уина)
DOS drive letter: D (just a guess)
Type: NTFS-3G (0x7)
Start: sector 106498048
Size: 683GB (73% of disk), 1433600000 sectors
Cylinder 6629 to 95866

Mount point: swap (Суапа на магеята)
Device: sda5
UUID: 8ba5b8bc-b241-46fd-adc2-ab51160c5bb5
Type: Linux swap (0x82)
Start: sector 1540100096
Size: 11GB (1% of disk), 25128919 sectors
Cylinder 95866 to 97430

Mount point: /boot (Тук е преместен и GRUB2 след доста четене в нета)
Device: sda6
UUID: f15af457-6db9-48f8-9543-f85be4ec8827
Type: Journalised FS: ext3 (0x83)
Start: sector 1565231104
Size: 5.4GB (0% of disk), 11364352 sectors
Cylinder 97431 to 98138

Device: mapper/luks-bd9be322-f0af-4a6e-b585-34cc369fe9ff
UUID: cd7aef9b-2e08-4ed7-8b19-ceb781b55c10
Type: Journalised FS: ext3 (0x83)
Start: sector
Size: 179GB (19% of disk), 376918465 sectors
Cylinder 0 to 23462
Formatted
Mounted
Encrypted- Това е / на магеята, криптирана е (sda7).

/boot не е криптирана

Двата уински дяла са криптирани с Truecrypt и заради буутлоудъра на Truecrypt, който иска непременно да е в MBR и затрива всичко друго там, се наложи да изчета доста и да преместя GRUB2 в /boot преди 2 години някъде, как точно го направих, не си спомням, май във форума на Suse намерих инфо, но беше голям зор - това го запомних.

sda1 са някакви 100 мб system reserved на уина.

При инсталация на по-ново ядро от хранилищата на магеята GRUB си се ъпдейтва. Ще видя как ще се получи с ванила ядрото, на теория не би трябвало да има проблем. Но първо да пачна сорса с някои неща и да го прекомпилирам на служебния комп, че той е с процесор i5, а лаптопа, за който ще е ядрото, е обикновен двуядрен интел и не ми се чака на него девет дена, осем часа make. Като го инсталирам на лаптопа, ще напиша резултата.


Едит: При старта на лаптопа зарежда буутлоудъра на Truecrypt и си иска ключа- ако го въведа, стартира уина. Ако му чукна искейп, ми вади меню коя от всичките партишъни да избера, избирам тая, дето е /boot и стартира GRUB2. Оттам буутвам магеята и иска ключа за нейната криптировка и тръгва.
« Последна редакция: Jan 12, 2020, 17:41 от Nik123 »
Активен

Nik123

  • Напреднали
  • *****
  • Публикации: 3088
  • Distribution: Mageia, Q4OS
    • Профил
Re: компилиране на ядро
« Отговор #4 -: Jan 12, 2020, 18:20 »
Освен това, се сещам, след като прегледах стари публикации тук, че преди (поне 6-7 години), ванила ядрата, преди да се прекомпилират, за мандрива, още преди да стане магея, трябваше да се пачват със Supermount - http://supermount-ng.sourceforge.net/ - за да се маунтват автоматично сидиромите и флопитата, и netfilter (за да върви и манди демона)- http://ipset.netfilter.org/install.html

Само че, в страницата на Supermaunt пише в момента "Availability

Current version for kernel 2.4  is 1.2.11a. Patches are available for the following kernel versions (not all of them have been tested by me)
 Current version for kernel 2.6 is 2.0.4. Patches are available for the following kernel versions:

    kernel 2.6.1 gzipped and md5sum

    kernel 2.6.2 gzipped and md5sum

А ядрата отдавна прехвърлиха версия 2.6 - аз го разбирам, че супермаунта не е бил развиван след ядро 2.6, а за нетфилтър-

"In order to use IP sets, you need the following sources

    For the new branch
        linux kernel source code (version >= 2.6.32)
        source of ipset: ipset-7.5.tar.bz2 (md5sum)
    For the old branch
        linux kernel source code (version >= 2.6.16 or >= 2.4.36)
        source of ipset: ipset-4.5.tar.bz2 (md5sum) "

- пак доста стари версии ядра.

 Та, преди да почна компилацията на current version kernel-a от сорс- 5.4.10, имам две неизяснени въпросчета- това в сайтовете на супермаунта и нетфилтъра означава ли, че вече тези "неща" не се поддържат/развиват и дали са вкарани вече в сорса на самото ядро и няма нужда от пачване?
« Последна редакция: Jan 12, 2020, 18:24 от Nik123 »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Re: компилиране на ядро
« Отговор #5 -: Jan 12, 2020, 18:59 »
Ти с тоя супермаунт ме хвърли в джаза. :o Това нещо не съм го виждал от времето на Мандрейк. След това преминах на редхат и федорите, а там нямаше такова нещо а сд - ромите се монтираха авоматично и от тогава престанах да си задавам въпроса как аджеба става това нещо.  [_]3

Сега xfce то много услужливо ги монтира и се появават на иконки и пак не си задавам въпроса как става. Вероятно има някакъв друг механизъм.
« Последна редакция: Jan 12, 2020, 19:05 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

Nik123

  • Напреднали
  • *****
  • Публикации: 3088
  • Distribution: Mageia, Q4OS
    • Профил
Re: компилиране на ядро
« Отговор #6 -: Jan 12, 2020, 19:18 »
Ами аз с прекомпилиране на ядро от бая години не съм се бъзикал  ;D Сега си припомням някои неща. Ще пиша какво е станало, като приключа и инсталирам 5.4.10 на магеята.
Активен

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Re: компилиране на ядро
« Отговор #7 -: Jan 12, 2020, 19:41 »
Последно компилирах ядро преди 4-5 години, но си беше и баш custom-kernel.
Повечето неща бяха вградени в ядрото (не като модули) и се поддържаше само хардуера на машината (по-малко по обем ядро).
Плюс оптимизации за процесора (не че има особена полза, дават около 5-10 процента ускорение).
Но можеш да пачваш с много неща, за какво ли не (тогава например ползвах reiser4 и разни ядра с повишена сигурност, RSBAC etc.)

В този период (6-7 години) ползвах основно Gentoo, там нямаше бинарни ядра, само от сорс (сега не знам как е).

Може да погледнеш в документацията на Gentoo (според мен е доста добра) как се компилира там ядро.
Успех !
Активен

jet

  • Напреднали
  • *****
  • Публикации: 3472
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: компилиране на ядро
« Отговор #8 -: Jan 12, 2020, 20:06 »
Ако дистрото което ползваш вече не се поддържа, по-добре помисли да минеш на нещо по-съвременно. Проблемите със сигурността нама да ти се решат само с по-ново ядро- системните библиотеки също трябва да се обновяват, както и графичната среда.
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

Nik123

  • Напреднали
  • *****
  • Публикации: 3088
  • Distribution: Mageia, Q4OS
    • Профил
Re: компилиране на ядро
« Отговор #9 -: Jan 14, 2020, 00:18 »
Омаза се всичко. Прекомпилирах ядрото, инсталирах го, при make install ми каза, че не открива GRUB и само initrd щяло да оправи (нещо тако ва, на инглиш). След инстала му дадох update-grub, намери си го и направи, каквото трябва. И почнаха проблемите- след старт в новото ядро, dkms започна да компилира модулите за нвидия и broadcom-wl за безжичния адаптер и умря. Чаках го три часа и нещо. Рестарт в recovery mode, махнах дкмс-броадкома и дкмс-нвидията. В инит 3, като руут, инсталирах директно драйвъра от сайта на нвидия. Пита ме искам ли с дкмс, при инстала, направих грешката да чукна Y и всичко заби. Писна ми, накрая се върнах в старото ядро на магеята, в recovery mode- root - init 3 - сложих пак dkms-broadcom-wl и dkms-nvidia304 и зависимостите им, уж всичко окей, startx- и плазмата ми извади съобщение, че не може да зареди, защото нямало proprietary GL, да съм си преконфигурирал X-a. Добре, FXdrake като руут в инит 3- лаптопа е с две карти, задавам му нвидията- не му харесва при тест, нещо да съм променял. ОК, пак FXdrake, задавам му интелската карта- драйвъра- уж всичко ок, тест- ок, казва ми да рестартна- рестартвам. И пак плазмата не зарежда заради нещо си GL и ми казва да си променя конфигурацията на X-a. И се отказах, сега пиша от уина. Всичко работи под линукса, без графичната среда. Има нет, маунтва, декриптира. Ама Х няма. Някакви идеи как да "зануля" Х-а и да го подкарам пак? В старото ядро на магеята? Благодаря предварително!
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Re: компилиране на ядро
« Отговор #10 -: Jan 14, 2020, 01:08 »
Цитат
Някакви идеи как да "зануля" Х-а и да го подкарам пак? В старото ядро на магеята?

Аз винаги саъм слагал драйверите на nvida от сайта н nvidia и винаги е ставало. Това е един много добре напрвен скрипт който се опитва да компилира кърнелският модул и качва GL библиотеките. Изобщо всичко пачосва и оправя по системата. Оправя и xorg.conf Навсякъде се съгласяваш.

Трабват ти обаче dev пакетите за кърнела с който ще работиш и dev-a на X-а. Ама ти сигурно ги имаш.

Преди много пъти съм се отзовавал в тази ситуация да нямам X. Омотват се нещо кърнелския модул на nvidia и Gl библиотеките. Пуска се скрипта от init 3 а след това след инит 5 всичко заработва.


Също алтернатива, но за по-нататък, ако всичко мине успешно е с опцията --add-this-kernel да си направиш собствен бинарен пакет за кърнела  и ако нещо пак замаже само го стартираш вече готовия пакет и (без да компилираш) инсталира.
https://www.linux-bg.org/forum/index.php?topic=48202.msg306259#msg306259
« Последна редакция: Jan 14, 2020, 12:45 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

jet

  • Напреднали
  • *****
  • Публикации: 3472
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: компилиране на ядро
« Отговор #11 -: Jan 14, 2020, 02:15 »
Или пробваш скрипта от smxi.org

wget -Nc smxi.org/sgfxi && chmod +x sgfxi && sgfxi

И той е като Панасоник - натискаш копчето и прави всичко.
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

Nik123

  • Напреднали
  • *****
  • Публикации: 3088
  • Distribution: Mageia, Q4OS
    • Профил
Re: компилиране на ядро
« Отговор #12 -: Jan 14, 2020, 14:00 »
Благодаря за инфото! Предполагам, преди да инсталирам (или да опитам отново, по-скоро) драйвъра на нвидия от сайта им, трябва пак да премахна dkms-nvidia304 (моя драйвър в момента)? И още нещо, не ми е ясно как Х-а включва някоя от двете карти (лаптопа има и вградената интелска, и нвидия 705м)? На интелската уж след FXdrake всичко ок, ама.. GL.

Едит: Да, девел пакетите на Х-а и кернела ги имам, тоя на магеята.
« Последна редакция: Jan 14, 2020, 14:01 от Nik123 »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Re: компилиране на ядро
« Отговор #13 -: Jan 14, 2020, 15:31 »
Предполагам, преди да инсталирам (или да опитам отново, по-скоро) драйвъра на нвидия от сайта им, трябва пак да премахна dkms-nvidia304 (моя драйвър в момента)?
Вероятно.
Но инсталиращият скрипт на nvidia някъде по средата усеща, че има друг кърнелси модул и услужливо те пита дали да го blacklist-ва. поне това го прави за свободният драйвер nouveau.
в  /etc/modprobe.d/ имам файл nvidia-installer-disable-nouveau.conf
със следното съдържание:

# generated by nvidia-installer
blacklist nouveau
options nouveau modeset=0



Цитат
И още нещо, не ми е ясно как Х-а включва някоя от двете карти (лаптопа има и вградената интелска, и нвидия 705м)? На интелската уж след FXdrake всичко ок, ама.. GL.
ами инстал скрипта също те пита дали да направи xorg.conf
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 440.44

...

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection

....


А как се оправят с GL билиотеките, MESA и т.н. не ми е ясно. най-вероятно интел-ползва свободната mesa а nvidia-та качва собствени затворени библиотеки - ама тя затова и е по-бърза.

Просто пробвай. Само да не си с Nvidia Optimus..Че там с превключването ми е пълна мъгла.

« Последна редакция: Jan 14, 2020, 15:51 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: компилиране на ядро
« Отговор #14 -: Jan 14, 2020, 16:01 »

Просто пробвай. Само да не си с Nvidia Optimus..Че там с превключването ми е пълна мъгла.

До колкото разбрах покрай тая тема, нвидия драйвера не поддържа автоматично превключване под линукс. Така че или ползваш нвидията, или интела. Не става като под уиндоуса. Също така, както написах и там бъмбъла при мен само скапа нещата :) Даже не знам дали въобще работи с нвидия драйвера, или е направен само за свободния.
В темата съм дал и картинка от gui-то на нвидията за превключване, ма иска рестарт.
« Последна редакция: Jan 14, 2020, 16:03 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...