Pull to refresh

Comments 30

И по традиции добавлю: "а потом мы ставим хром".

PS: статья понравилась

Есть же множество линуксов для роутеров по типу openwrt, которые занимают в минималке по несколько мегабайт. А там полноценный сетевой стек.

Цель статьи была образовательная и я хотел показать, как собрать Linux для ноутбука или стационарного компьтера. Для роутера немного сложнее будет и менее универсально.

Убедиться, что у вас в UEFI отключён Secure Boot.

Не, тогда Винда загружаться перестанет.

У меня точно грузится лицензионная Windows 10 с отключенным Secure Boot. В моем понимании Secure Boot - это когда UEFI проверяет на то, что запускаемое приложение (загрузчик) подписан ключом, которому доверяет UEFI. Если ключ неверный, дальнейшая загрузка прекращается. Отключение Secure Boot это отключение этой проверки.

Очевидно выше была шутка

А я вот специально купил SSD под SWAP. Они в какой-то момент были около 1,5к за объем около 100 гигабайт. Вот и решил, что будет хорошо эту задачу с основного диска снять и весь диск под 1 swap-раздел отдать.

@artyomsoft в конце статьи Вы пишете "Linux размером около 2,5 МБ, в котором можно работать" и ниже пишете чего там нет. А что подразумевалось под "можно работать"? У меня сложилось впечатление, возможно ошибочное, что практических задач на этой системе не решить никаких. Только образовательные в процессе самой сборки. И не критики ради, а только с целью успокоения внутреннего душнилы: были системы на дискетах с драйверами позволяющими и сеть пользовать и с какими-то простенькими форматами документов работать и даже мышку (зачем?) задействовать...

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

Занимательное... Пошел пилить ядра...

Пилите, Евгений, пилите – они золотые!

Ядра – чистый изумруд!)

Какой абсолютный минимум объем RAM нужен для такого учебного проекта? И как насчёт сборки под ARM с запуском на QEMU и на физическом железе типа Raspberry?

Для сборки или для запуска Linux? Я специально не стал освещать кросскомпиляцию и особенность запуска Linux на встраиваемых системах, так это тема отдельной статьи.

Запуск на ARM со слабым железом, даже слабее Raspberry.

Это точно тема отдельной статьи и дополнительного исследования. Вы не привели название для слабого железа, которое слабее Raspberry, поэтому сложно ответить на этот вопрос, но думаю на большинстве существующих одноплатников такой подход работать будет, так как несжатое ядро вместе с initramfs занимает до 6 мегабайт. Похожее минимальное ядро для Raspberry Pi 3 или Raspberry Pi 4 занимало больше, но не критично.

Вроде на esp32 запускали и готовые решения есть...

Думаю, Linux размером около 2,5 МБ, в котором можно работать, когда современные системы занимают гигабайты, сам по себе впечатляет

А какое количество оперативной памяти занимает система после загрузки? Интересно было бы еще затащить какой-нибудь ультра легчайший tcp стек (наподобие того что есть в pico sdk для микроконтроллеров raspberry pi), тогда бы на таком линуксе можно было строить полноценные веб сервисы (понятно что без персистентного хранения данных и с дополнительными ограничениями)

Лет 15-20 назад мы собирали OpenWRT под каноничный Linksys WRT54G, чтобы в нём был OpenVPN - вот это была задача непростая, учитывая что флеша в нём было 4МБ.

А кроме OpenVPN там ещё и всё остальное должно быть нормально - и TCP/IP стек и iptables и прочая.

Влезло, но впритык.

Думаю необходимо продолжение в том же стиле где вы добавите TCP + sshd + lighthttpd + поддержку хотя бы fat + пакетный менеджер чтобы можно было работать. Консоль которая не может подключится к локальному диску или сети не интересна.

Полностью с вами согласен и думаю над продолжением. Это просто учебный пример. Но с сетью, как я понимаю, так универсально и минимально не получится, так как нужны еще драйвера и firmware для сетевых карт. А в случае WiFi еще и USB, а также программы для userspace. Может даже лучше сделать для какого-нибудь одноплатника.

А USB-клавиатуры и мыши на таком ядре без udev будут работать? Или без PS/2 получится только загрузиться, посмотреть вывод на экран и выключить по питанию?

Вы имеете ввиду Linux, который собирается в статье? В нем используется mdev (легковесный аналог udev, который входит в состав BusyBox). Но я в ядре вообще не включал поддержку USB. Я проверял работу Linux на ноутбуках, на всех тех, которые у меня были - PS/2 клавиатура. Сейчас проверил как работает с USB-клавиатурой на стационарном компьютере, сканкоды приходят от клавиатуры, но трактуются неверно, есть в чем ещё разобраться. Спасибо за внимательное чтение и подсказанную идею.

4 года назад я экспериментировал с минимальным ядром: https://habr.com/ru/articles/540214/ Для того, чтобы система стала реально полезной, надо добавить еще достаточно много.

За последние годы это стало сильно проще. Ожидал в статье на порядок более пространных объяснений по железу)

Шофёр знает устройство автомобиля и может его починить.

увы, но это не так, особенно в текущих реалиях: многие просто сдали на права, купили транспорт и просто ездят, а в случае поломки - эвакуатор/буксир, и им просто нет надобности разбираться в устройстве и ремонте транспорта и проще заплатить тем кто разбирается.

В моем понимании шофер - это профессиональный водитель. Именно лушее знание автомобиля и умение выполнить мелкий ремонт отличает его от просто водителя.

на первых шагах, при скачке busybox, получил ошибку:

GnuTLS: Error in the pull function.

Unable to establish SSL connection.

что вылечилось установкой gnutls-bin. надо добавить, наверное, в первоначальный apt install. новички пугаются :)

приношу извинения, ошибка не воспроизводится. наверное был временно недоступен сайт busybox.net

Sign up to leave a comment.

Information

Website
ruvds.com
Registered
Founded
Employees
11–30 employees
Location
Россия
Representative
ruvds