четверг, 1 ноября 2007 г.

Взгляд ушастого ламера на компиляцию ядра из исходников... Монолит или модули?

я таки подозревал, что придётся "ответ держать". извольте.

спрашивали?
Attila комментирует...

А вот почему бы не вкомпилить модули, необходимые для работы жёсткого диска, сетевой карты, корневой файловой системы и т.п монолитно? Ядро Linux'a всё-таки относится к монолитным ядрам, пусть и с некоторой поддержкой модульнотсти.
Всё в ядре и вообще никакой мороки с модулЯми?

отвечаем...

любое подобное "включение" приводит к снижению уровня "гибкости" системы. начиная от банальной потери возможности передать модулю какие-то параметры при загрузке и заканчивая тупой аксиомой - "а яго ужо не выгрузишь". примерно процитирую высказывания с LDP о преимуществах использования модулей:

1) нет нужды пересобирать каждый раз ядро;
2) любой баг в ядре гораздо труднее отследить, чем баг в модуле;
3) любой баг в модуле менее критичен, чем баг в самом ядре и отслеживается в разы быстрее (спорно, но это правда);
3) более оптимальное использование памяти компьютера;
4) нет прироста в производительности при жёстком включении.

с учётом вышесказанного никакого смысла нет в ядро пихать даже драйвер корневой файловой системы - Initial Ramdisk придумали явно не зря, не так ли?

морока именно имеет место быть, когда люди от большого ума пытаются засунуть в ядро абсолютно лишние компоненты. история из реальной жизни. один знакомый молодой человек, начитавшись статей многоуважаемого г-на Федорчука, решил поставить себе на ноут Zenwalk. да только не обратил, сердешный, внимания в пылу энтузиазма на фразу: "В Zenwalk функции управления тактовой частотой ноутбучных процессоров вкомпилированы в ядро, а не собраны с виде модуля, как это делается обычно. Поэтому, если обладателя двухгигарецового процессора раздражает работа на тактовой частоте 800 Mhz (а меня, например, это раздражает весьма сильно), то придется пересобирать ядро, чем я намерен заняться в ближайшее время." очень интересная фраза... я буду весьма признателен, если кто-нибудь мне объяснит необходимость пересборки ядра в данном случае. необходимо и достаточно поставить пакет "cpufrequtils" и ознакомиться с man-страницей или просто разобраться в схеме управления параметрами ядра через /proc, /sys. в нашем же случае всё было с точностью до наоборот. ядро Zenwalk-а раскочегарило "Кору-дуру" так, что вентиляторы были готовы "рвануть в небо", а на клавиатуре можно было еду разогревать. пакета "cpufrequtils" знакомый не нашёл (что не повод делать выводы, хотя...), посему тупенько через /sys выставили дефолтный cpu governor на ondemand. и всё. "сковородочка стала остывать".

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

отдельно выделим фразу: "Ядро Linux'a всё-таки относится к монолитным ядрам, пусть и с некоторой поддержкой модульнотсти". а вот в компании Red Hat в "Red Hat Enterprise Linux 4: Руководство по системному администрированию" считают иначе:

"Ядро Linux имеет модульную структуру. При загрузке в память загружается только минимальное резидентное ядро. После этого, если пользователь вызывает функцию, отсутствующую в резидентном ядре, нужный модуль ядра, иногда называемый драйвером, динамически загружается в память."

правда на правду? или всё же RTFM? что и находит подтверждение в LDP: "LKMs did not exist in Linux in the beginning. Anything we use an LKM for today was built into the base kernel at kernel build time instead. LKMs have been around at least since Linux 1.2 (1995)." то бишь с 1995-го года ядро имеет "модульную структуру", а мы всё заикаемся о "некоторой поддержкой модульнотсти" и рвёмся "придется пересобирать ядро, чем я намерен заняться в ближайшее время". вот это и называется "Пиздец", господа, и именно с большой буквы "П".

8 комментариев:

Ihar Hrachyshka комментирует...

Звание системы с реальным модульным ядром требует не только и не столько того, чтобы монолит был физически разделён на части, но чтобы при этом осуществлялось разделение прав доступа к определённым ресурсам для каждого из модулей, как это делается в userspace с помощью учётных записей или Access Control Lists. Поэтому ядро Linux можно называть только монолитным, с поддержкой подгружаемых привилегированных, работающих в режиме ядра и имеющих полный доступ к компьютерным ресурсам модулей.

sda комментирует...

я пока не столь компетентен в подобных тонкостях, но смысл сей заметки совсем не о том (надеюсь, что фраза Юрия Шевчука что "в песне не понял ты, дружок, ни...чего") к Вам не относится. смысл - о общем подходе к построению Linux ядер.

спасибо за комментарии.

Анонимный комментирует...

"я пока не столь компетентен"
Мой тебе бесплатный совет - поимей сначала компетентность, а потом пытайся что то писать. Не вводи людей в заблуждение. Выглядит некрасиво.
Без обид.

sda комментирует...

А теперь моё всем предупреждение: все последующие посты с голословными высказываниями, не подкреплёнными аргументацией буде то логика, ссылка на первоисточник/стандарт и т.п., а также явно оскорбительного характера (в том числе и мои собственные, где идёт не критика, но оскорбление) будут удалены. Как образец прекрасных постов "ниочём", не несущих абсолютно никакой смысловой нагрузки - пост BooXteR-а и анонима, бо на суть рассматриваемого вопроса они никак не влияют и абсолютно ничем не подкреплены (аргументация=0). Уважаемый BooXteR, если Вас не устраивает определение Linux ядра именно как ядра модульного LDP и компанией Red Hat, и Вы уверены в своей непогрешимости и их заблуждениях - удачи Вам и всяческих успехов в отстаивании своей точки зрения перед ними (а то как мы видим там сплошные неучи документацию пишут, не так ли? а Вы тут весь на коне и в белом...).

Спасибо за внимание.

Анонимный комментирует...

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

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

sda комментирует...

очень интересно... я не публикую свои статьи нигде, кроме как в своём блоге либо на своём сайте rootshell.be/~sda00. я не занимаюсь рекламой своих статей нигде, кроме одного (именно для этой цели и созданного) трэда форума unixinfo.ru. я не допускаю в своих статьях неаргументированных голословных высказываний. единственный линк, что я публиковал на opennet.ru - это на статью-дополнение по конфигурации mutt:

http://www.opennet.ru/base/sys/linux_user_mail.txt.html

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

забавно.

Ihar Hrachyshka комментирует...
Этот комментарий был удален администратором блога.
sda комментирует...

BooXteR,

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