Comments 84
Чисто навскидку, насколько lfs собирать дольше, чем то, что описано в статье?
В первый раз ушло часов 10-12
Зато удовлетворение от результата больше)
тогда buildroot: там сделать make nconfig && make
На хабре есть хороший материал про buildroot
Собираем бинарные файлы BusyBox и для ядра Linux. Этот процесс займёт достаточно много времени, порядка 10 минут и даже больше, поэтому не пугайтесь.
Вот помню я были времена, когда это было от 2х часов на 2х ядрах +-. Ежика голой жопкой не напугать)
это наверно такой завуалированный намек "это дольше чем видос".
(но все равно - что-то меня фраза "не пугайтесь" для 10 минутной компиляции пугает сильнее, чем все остальное... это же насколько attention-span у ЦА пониженный?)
Весело было включить ПОЛНУЮ отладку ядра, по UART. Тогда зарузка ядра длилась 10+ часов.
Мне пришлось хуже: когда я не знал о волшебном -j8 ядро компилировалось 3 часа. Точнее на этой отметке у меня лопнуло терпение :)
Кстати, на заметку, с современными технологиями ядро может грузить uefi напрямую, никакой загрузчик не требуется.
Это может упростить сборку ещё на пару пунктов. Более того - этот метод работает не только с x86. Uefi есть и в arm.
Linux обычно собирают в Linux
А можно собрать Linux в WSL?
Интересно, может ли считаться линуксоидом чел, не читавший Gentoo Handbook и не пробовавший поставить этот замечательный дистрибутив?
Не дам ответа, но опишу ситуацию. Сейчас нахожусь в поиске работы, и большинство работодателей требует знания Ubuntu. На мои Debian+Gentoo возражают "ну как же мы вас возьмём, если вы с Ubuntu не работали".
А для какой это вакансии такая ситуация?
Системный администратор Linux без узкой специализации.
Так Debian+Gentoo это и не Linux вовсе, а так - узкоспециализированное хобби. Вам же нужно работать, а не развлекаться и вот тут знание Ubuntu просто необходимо, т.к. вся работа происходит исключительно в графическом окружении, как у всех нормальных людей. Ну и как же они вас возьмут, если вы с Ubuntu не работали?
Если это сарказм то я его не понял. 99% работы линуксового админа происходит в терминале в командной строке. 1% это всякие мессенджеры типа слака которые от работы отвлекают.
вся работа происходит исключительно в графическом окружении
Это применимо только к рабочим станциям. Мне бы никогда не пришло в голову ставить на сервер графическое окружение, чтобы подключиться к нему по VNC/RDP и…
Открыть терминал! Потому что у тех, кто с Linux на серверах работает, обычно достаточно навыков, чтобы использовать терминал было эффективнее, чем копаться в десятках менюшек. Ну и ещё потому, что графические инструменты для администрирования не особо развиты.
Боже, да напишите вы убунту там, разве не может в супер классной компании быть просто эйчар, который не оканчивал всех академий, чего-то может не знать? Или вы всерьёз рассчитываете на общение с техническими людьми с первого этапа собеса?
Это в первую очередь фильтр для отсеивания работодателей. Ибо на рынке труда два идиота - один работу ищет (когда мог бы свой бизнес-проект начать), второй работника (готовые работники стоят дороже, а обучать новеньких - некому).
Сначала воспоминания. Помнится, году так в 2007 я устроился приходящим системным администратором в Московскую Страховую Компанию. Windows Server 2000, и все работники филиала - администраторы домена. Естественно, за пару недель в сотрудничестве с администраторами головного офиса весь бардак привели в порядок. Провели миграция на 2003 сервер, навели порядок с правами, поставили зеркало на сервер... И я думал, что подобного не повторится.
Но в 2022 году я прошёл собеседование в "федеральную компанию" с представительствами в Москве, СПБ, Екатеринбурге, Казани и ещё где-то... На собеседовании был упор на информационную безопасность, резервирование всего что можно. В первый же день обнаруживаю в AD, что все пользователи входят в группу Domain Admins И знаете, уже как-то не смешно. И разгребать подобное желания нет совсем.
Был у меня в 2001 году похожий опыт: работал в конторе, которая заправляла картриджи на выезде, я тоже так ездил, а однажды директор отправил меня, как "самого грамотного", к клиентам избавить их от вирусов. И вот сижу я, ковыряюсь, пытаюсь навести вирусам геноцид, а они откуда-то появляются и появляются. Уже только к вечеру понял, что этих долбодятлов диск C: открыт на запись в доступен из Интернета! Если что, это ещё времени Win98. Я себе такую дичь даже представить не мог, поэтому далеко не сразу посмотрел права доступа.
В общем, ученье свет, а неучёных тьма.
диск C: открыт на запись в доступен из Интернета!
это как так?
Вам какая часть непонятна? Организационная или техническая? Если первая, то мне это до сих пор непонятно.
У них внутренняя сеть раздавалась через один из компьютеров и на нём для "Сетей Майкрософт" был открыт доступ на запись на диск C: без разграничения прав. Соответственно, сканер находил этот компьютер, писал ему на диск вирус, который чем-то запускался (кажется, подменялась какая-то системная программа, которую регулярно запускает сама система) и дальше уже распространялся по внутренней сети.
Напоминаю, что это был 2001, то есть стояла на тех компах Win98, которая жила на FAT32, у которой не было и нет никаких средств управления доступом.
Сейчас не вспомню, как именно --- давно было. Что-то вроде двух сетевых карт, чтобы одна смотрела в сторону провайдера, а вторая во внутреннюю сеть. Или через модем наружу, а внутрь --- через сетевую карту.
Что такое "Сети Майкрософт" знаете? Разграничение доступа тогда было доступно только на этом уровне. А они открыли доступ к диску C: для ВСЕХ и без ограничений по сетевым интерфейсам. В итоге, писать на диск C: мог вообще кто угодно, кто додумался постучаться на IP конторы в качестве клиента этих самых "Сетей Майкрософт".
+1 - не надо доказывать что мы самые умные.
Перечислите все популярные дистрибутивы.
В нормальных компаниях это не имеет значения. Максимум: разделение на Debian и RH based distros.
Может стоит поискать что-то ещё?
Или добавить таки Ubuntu в CV?
Рискну предположить, что убунтоспецифические знания - это работа с PPA и Snap. Можно слегка попрактиковаться с ними в виртуалке и нагло заявлять "Я знаю Ubuntu", тем более, что всё остальное в Убунте --- от Дебиана.
Вы уверены, что Торвальдс это делал?
And when it comes to distributions, ease of installation has actually been
one of my main issues - I'm a technical person, but I have a very
specific area of interest, and I don't want to fight the rest. So the
only distributions I have actively avoided are the ones that are known
to be "overly technical" - like the ones that encourage you to compile
your own programs etc.
Может
Вы удивитесь, но минимальный набор, необходимый для получения командной строки Linux содержит всего два файла: файл ядра Linux и файл начального образа корневой файловой системы.
Автор, так можно сказать, что минимальный набор для полноценной Ubuntu или Windows содержит вообще один только файл: образ.img.
"файл начального образа корневой файловой системы" - это и есть образ, который может содержать тысячи файлов.
Ну нельзя же так.
В начале статьи поймал себя на дежавю. Когда-то для запуска системы тоже надо было всего два файла: io.sys и command.com ......
а как же msdos.sys?
Да, согласен. Забыл про него. Прошу простить. Давно это было.
А точно именно для запуска системы не хватило бы одного io.sys?
command.com это, если память не изменяет, командный интерпретатор, шелл другими словами
msdos.sys это расширенные функции. 21 прерывание и тому подобное.
И то и другое не сказать что прямо так уж необходимо для запуска.
Да. Проще в те времена все было. Но если мне не изменяет память, то вроде как три, еще msdos.sys
В статье всё-таки речь идёт об ОС GNU с ядром Linux. Говорить «ОС Linux» некорректно хотя бы по отношению к людям, создавшим GNU.
Как самому за один вечер собрать минимальную ОС Linux из исходного кода
А кто уже пробовал armbian X86_64?
Может проще взять gentoo за основу?
Как-то делал докерфайл для питона, сервитут ml модели, может кому пригодится https://gist.github.com/andreevmipt/595636e22716d8ee154b13eff9e0e086
В общем, статья - это такой наноLFS. Идея хорошая, воспроизвести написанное в ней и не убежать гораздо проще, чем оригинальный LFS.
Разве что... Мне одному показалась странной идея форматировать корневой линукс-раздел в FAT32?
А вы не пробовали компилировать из исходников ваш мини дистрибутив Clang и GCC и потом сравнить результаты ? Я насколько знаю помощью Clang полностью скомпилировать рабочий дистрибутив Linux невозможно
Не подскажете как собрать минимальный докер образ FROM scratch только с JVM?
А чем не устраивают официальные образы openjdk из Docker Hub?
Если нужна только JRE, можно в Alpine Linux поставить пакет вроде openjdk17-jre.
Если хочется, можно и вручную установить JRE.
Помню старые добрые времена, когда при выходе нового ядра все дружно качали сырцы и собирали ядро под свою машинку. Без этого совесть не позволяла считаться линуксоидом. А стандартный бенчмарк для компа - это естественно была сборка ядра. Да, было время...
Какой смысл собирать что-то из исходных кодов без того, чтобы прочитать исходные коды? Настаиваю на включении пункта "Читаем исходные коды" сразу после "Скачиваем и распаковываем". Здоровую параною и исследовательский интерес нужно воспитывать с самого начала
Это интересно, но было бы интереснее почитать о сборке и модификации самого ядра(Kernel).
Всё это интересно для.. саморазвития. А для реального проекта потребуется установить (из исходников, разумеется) несколько десятков пакетов, накатить исправления безопасноти (которые ещё нужно найти), настроить всякие udev rules, настроить systemd. Потом запустить и столкнуться с какой-нибудь проблемой, которая даже не гуглится (например: postgresql не может сделать bind на IPv6 виртуальной сети, а на ::1 может, а другие сервисы спокойно слушают обе сети). Если речь не идёт об embedded, то минимальный работающий дистрибудтив можно собрать одной лишь командой `debootstrap --variant=minbase`, взяв за основу Ubuntu или Debian. C embedded чуть посложнее, можно взять buildroot или yocto.
из статьи не понял, ткните - вот собираю положим ядро на интеле для запуска на amd . Надо что то указывать? А вообще другой архитектуры?
Если вы имеете в виду Amd64, то я думаю ядро должно запуститься. А вот если для других архитектур, то там кроме системы команд процессора другие загрузчики. Кросскомпиляцию я не затрагивал в этой статье, чтобы она была краткой и удобной для восприятия.
Про должно запустится понятно, а какой то настройки оптимизации нет при компиляции если я знаю на чем выполняется?
А как это запихнуть в iso?
Вместо редактора vim (команда vi)
Я конечно извиняюсь за своё занудство, но Vi и Vim это разные редаткоры!
http://xgu.ru/wiki/Vim
Я не понял. В статье написано как загружается Linux:
Ядро ищет файл init в начальной файловой системе и запускает самый первый процесс пользователя на его основе.
Процесс init монтирует уже постоянную файловую систему, продолжает инициализацию операционной системы и переносит корень файловой системы Linux на смонтированную файловую систему и запускает другие процессы, которые необходимы для инициализации.
Так вот, похоже что пункта 8 в статье нет. Или есть?
make LDFLAGS=-static
После этой команды идут ошибки в сборке busybox
В файле .config поменял
CONFIG_TC=y
на
CONFIG_TC=n
И все собралось.
Взял отсюда: https://www.reddit.com/r/linuxquestions/comments/1cizfpo/id_like_some_help_with_this_youtube_guide/?rdt=53748
Как самому за один вечер собрать минимальную ОС Linux из исходного кода