ААА! Камрады, я прочитал её! 200 страниц! Как же я заебался! Собсно, сама книжка читается легко, меня добил список опций ядра, который встречается аж два раза - как параметры ядра при загрузке и как опции при компиляции. Пиздец, нудная вещь, но прочитать надо было, кое чо полезное узнал. Правда, не факт, что не забуду завтра же.
Вот бы, бля, мне эта книжка попалась хотя бы перед сборкой ядра LFS - гораздо меньше геморроя я бы поимел. Там как раз всё это описывается - поиск драйверов и всего прочего.
А ещё я узнал о программах ccache & distcc, первая ускоряет компиляцию т.к. держит всякую инфу для компилятора в памяти. Вторая это компилятор С для распределённой компиляции на нескольких машинах (или на нескольких ядрах, хз) опять же для ускорения.
Поток сознания: поиск драйверов в Линукс
Теперь про поиск драйверов. Делается это в sysfs путём поиска символических сцылок device и захода в них, как в каталоги:
Казалось бы, найди все такие файлы через find и дело в шляпе. Но нет. find не ищет по /sys. Точнее, ищет, но не всё. Думаю, причина в её виртуальности. (Update - причина была в виртуальности виртуалки, на которой это всё пробовалось, на реальной машине всё ищется нормально.) Вместо module надо искать modalias.
find /sys -name modalias - и она выведет какую-то хрень. Он предлагает вообще-то распечатать содержимое каждого файлика и скормить modprobe или modinfo с параметром --show-depends, а потом |sort -u
Впрочем, для экономии времени он рекомендует скрипт get-driver.sh, который делает то же самое, только быстро. Наверняка его можно найти на просторах тырнета.
В общем, я сам не до конца понял, как это всё работает, поэтому объяснить не смогу, вам лучше самомим книжку почитать. Но вы ведь не собираетесь компилить своё ядро, а если соберётесь, то один хрен этой моей писульки вам явно не хватит, всё равно придётся читать книжку.
Поток сознания: опции make и ядра и сравнение с ядром FreeBSD
цели команды make, доступные для сборки ядра
help, kernelrelease, kernelversion - инфа
clean, mrproper, distclean - зачистка
gconfig, xconfig - графичекие конфиругилки ядра
menuconfig - псевдографическая конфигурилка
localmodconfig - использовать те же модули, что и в текущем ядре
localyesconfig - тоже, что и выше, только модули вкомпиливаются в ядро
oldconfig, silentoldconfig - пригодятся во время апгрейда ядра - генерят ядро по старому конфигу. Первая спрашивает всё, вторая только новые опции.
defconfig - дефолтное ядро (опции в конфиге по умолчанию)
randconfig - опции в конфиге устанавливаются случайным образом
allmodconfig - компилит все модули, какие возможно
allyesconfig - отвечает да на все вопросы в конфиге
allnoconfig - отвечает нет на все вопросы в конфиге
Сборка:
all - компилять и ядро и модули
vmlinuz - только ядро
modules - только модули
modules_install - установить модули
Пакетирование
rpm rpm-pkg binrpm-pkg deb-pkg tar-pkg targz-pkg tarbz2-pkg
Фига се, это оно всё скомпиляет, ещё и завернёт в пакет!
Документация:
xmldocs, psdocs, pdfdocs, htmldocs, mandocs
Зависимые от архитектуры цели:
bzImage - создаёт сжатый образ ядра в папке arch/i386/boot
install - устанавливает ядро без модулей
bzdisk fdimage isoimage создаёт дискету или iso-образ с ядром
Анализ:
checkstack, namespacecheck
Ух, нихуя себе! FreeBSD остаётся об этом только мечтать! Что я помню из FreeBSD? make buildkernel && make installkernel всё, бля! Ну ваще это было в 2003-2004. А щас посмотрел Makefile последней версии BSD. Цели выглядят так:
beforedepend beforeinstall beforelinking
afterdepend afterinstall
all build build-tools buildfiles buildincludes
checkdpadd
clean cleandepend cleandir cleanobj distclean
configure
depend distribute exe
install installfiles installincludes realinstall
html includes obj objlink objs objwarn
regress tags whereobj
Вроде тоже много всего, но всё равно меньше, чем в Линухе. И хз чо это значит. Kуче вариантов config из Линукса предлагается один-единственный configure.
Опции сборки ядра. Конфиг-файл хранится прямо в ядре. Его можно найти в /proc/config.gz. Во FreeBSD тоже такое есть. Видимо, пользователи заебали терять конфиги, и их вклеили в ядро.
Идём дальше. Уже 11 лет назад у Линукса было 4 планировщика ввода-вывода (IO scheduler) Во FreeBSD в их хвалёном geom'e в 2011 был только один gsched_rr и ничего нового после я не нашёл. В свежем ядре этой опции нет. Подсистема САМ (которая была до Геома, я так понимаю, а мож юзается параллельно, хер разбёрет. Я с ней так и не сталкивался, т.к. в 2003-2004 у меня диски были ещё IDE, а САМ для scsi). Короче, в подсистеме CAM в 2015 они чо-то там праздновали появление нового IO sheduler'a и тишина с тех пор. То есть, в Линухе в 2006м уже было 4, тут один какой-то дрочат. Ну мож там настраивается он как-то хз. А мож на Фри он и не нужен, если её для всяких сетевых штук гонять - так точно. Но вроде веб-сервера на ней тоже ставились, а там шедулер уже нужен, или мож чо другое они юзают. Тайна, покрытая мраком, короче.
Идём дальше. Вытесняющая многозадачность (или как там эта хня называицца) На декабрь 2006 (когда я купил свою Восьмёру) в Линуксе предлагалось 4 варианта. Или пять, если когда все опции выключены считать, как вариант. Во FreeBSD на сегодняшний день, как я понял - два: PREEMPTION & FULL_PREEMPTION. Или три, если когда ничего не выбрано это тоже вариант.
В первом случае Линух 2006 - FreeBSDNow 4:2 - в Линухе в два раза больше выбора. Если же считать, как 5:3, то только на 66% больше выбора.
Вот последние версии стандартного, как я понимаю, ядра ФриБСД
github.com/freebsd/freebsd/blob/master/sys/amd6... - типа стандартное ядро. Есть ещё DEFAULT, хз чем они отличаюцца.
github.com/freebsd/freebsd/blob/master/sys/amd6... - какой-то маленький файл, явно какая-то хуйня, поэтому возьмём другой: github.com/freebsd/freebsd/blob/master/sys/conf...
В NOTES абисняицца что какая опция значит. С этим файлом консультируются БЗДуны, когда собирают ядро. Вытесняющая многозадачность - PREEMPTION и FULL_PREEMPTION. Про модели памяти и отключение CPU ничего нет. Ну, за эти опции линуксоидам, видимо, кто-то заплатил, они их и разработали. Так ли они нужны, особенно во FreeBSD? Хз, мож они по-другому называются, но я вроде просмотрел конфиг, ничего похожего не нашёл. Зато во Фри до хера опций на GEOM, NETGRAPH и всякие IP-фильтры - ALTQ, IPFIREWALL, поддержка нового транспортного протокола SCTP - новая версия TCP? Короче, сразу видно, кто на что задрачивает.
В Линухе 8 опций регулировки частоты процессора - минимальная, максимальная, регулируемая извне и прочее. Во Фри только device cpufreq - видимо, через него регулируется.
В Линухе есть опции для отключения CPU, 3 модели памяти - меньше 1Гб, от 1 до 4 и выше 4х. 3 модели пространства памяти - плоская, с дырами и с горячей заменой. Во Фри ничего этого нет. На горячую замену намекает NUMA, но никаких объяснений там нет. Мож хуёво искал?
Правда, надо сравнивать современное ядро Линуха, раз уж на то пошло. Завтра я этим займусь - на работе у меня есть конфиг. Но, думаю, эти опции там до сих пор есть и никуда не делись.
Поток сознания: чо я пытаюсь доказать?А чо я тут пытаюсь доказать? Эээ, ну не то, чтоб доказать, я пытаюсь разобраться, как ваще дела обстоят на самом деле. Помните - "они всё пиздЯт!" (с) моё. Всякие фанбои-пиздоболы и рекламные пидарасы от Фри скажут вам, что Фря это супер, это оргазм! Причём, скажут в книжке, которые они для этого выпускают и продают вам за ваши же деньги. Как-то бля я привык верить печатному слову. Ты значит, им веришь, бежишь на эту Фри, и вместо оргазма получаешь геморрой. Ты бесишься, но даже ничего не можешь им сделать - у них по книге всё пиздато, а ты в говне. У тебя диссонанс и внутренний конфликт - в книжке серьёзный чувак написал, что всё круто, а у тебя всё некруто. Значит - дело в тебе? Ан нет!
Фанбои от Линукса про Фрю помалкивают, т.к. меньше 1% установок в мире никого не ебёт. И видимо, не зря меньше процента. В основном Линуксоиды тявкают на Винду.
Я попробовал и то, и другое на декстопе и скажу вам, что несмотря на "супер-пупер качественную" документацию во Фре (ещё не факт, что оно будет работать, как там написано), а также "целостность" Фри, "внутреннюю согласованность", "зрелость" кода и прочую абстрактную поеботу, мне (как и рядовому юзеру) важно, чтобы взлетела видеокарта, завёлся вайфайчик или хотя бы проводной интернет, чтобы я смог залезть в фейсбучик и ютубчик. Чтобы без геморроя ставились программы и удалялись тоже. И чтобы это случилось не хер знает когда, а здесь и сейчас. И пока что я вижу, что в Линухе это происходит быстрее и проще.
А как там на серверах? Хер знает. Но на сервера я бы ставил ту систему, которую знаю лучше. По-моему, вполне логично на сервер ставить ту ОC, что у тебя на десктопе, только её серверную версию.
"Ну и пиздуй на свой Линух, раз он те так нра, чо ты до Фри-то доебался?" Нуу, мне до сих пор сложно поверить, что человек в книжке может откровенно врать, выдавая желаемое за действительное. И это не политики, это технические специалисты пишут! Поэтому меня гложет червячок сомнения: что если их выводы имеют под собой основания? Вдруг всё-таки я что-то там не разглядел? Я хочу сам увидеть всё то, об чём они говорят и составить собственное мнение. В кои-то веки человек хочет иметь собственное мнение, основанное на его личном опыте, а не на том, что сказал какой-то хрен с горы. Раздаются же всякие лозунги, что люди должны сами думать и всё такое, ну вот, я пытаюсь. И чо-то это невероятно сложно. Пока что я увидел немного:
- что Фря разрабатывается целиком, а Линукс это ядро отдельно, пакеты отдельно. Ну и чо мне с того?
- что в одном ядре Линукса строк кода столько же, сколько во всей Фре. (И ашыбак в ядре Линукса тоже больше, чем в ядре Фри) Да! Ядро Линукса значительно больше ядра Фри, но в нём и фич всяких гораздо больше. А ядро Фри пиздец аскетичное и поэтому по размеру меньше. Тут тоже всё логично. Что ашыбак больше - эт тоже логично - чем больше размер, тем больше ашыбак.
Хотел аналитику почитать. Дык нету толковой аналитики, хуйня одна. Вследствие этого пока примем рабочую гипотезу: вопрос не так однозначен и в двух словах на него ответить не получится. Вот ответ одного товарища, заслуживающий внимания:
- BSD-kernel are developed with a more conservative point-of_view and more concern about staying consistent with their approach than having fancy features.
- Linux-kernel are more about drivers, features, ... (the more the better).
Потырено отсюда
unix.stackexchange.com/questions/127538/concept...
Также в Приложениях афтар рекомендует книги, которые все у меня есть (да, они тоже тех годов и им щас больше 10 лет) и проги для разработки ядра. diff & patch для мазохистов и quilt & ketchup для продвинутых. quilt позволяет быстро удалять и накладывать свои патчи, ketchup работать с исходниками ядра - сама находит исходники в тырнете, скачивает, апгрейдит, патчит. А зачем это мне, я чо, разработкой ядра решил заняцца? Да не дай Бог! Хотя... Ну, в общем нет, не решил, но хз, мало ли, как сложится. Я ведь ваще никогда не думал, что Линуксом займусь, а вот поди ж ты.Ну чо, камрады, думаю, после прочтения видно, что в сознании начались изменения - речь бессвязная, цели неясны, много непонятных слов - первая стадия Линукса головного мозга. То ли ещё будет! У меня тут ещё много всякой хуйни, которую надо прочитать и вся она про GNU/Linux или FreeBSD.