Скорее всего ядро, которое запускал автор, можно просто взять и запустить из UEFI Shell, или даже просто его может загрузить UEFI, если прописать в NVRAM, где лежит ядро и initramfs, так как большинство современных ядер для x86_64 собирается с CONFIG_EFI_STUB.
Статья дает лишь поверхностное представление о ядре Linux с явными упрощениями и неточностями. У новичка она убирает страх перед неизвестным, а у более опытных - неточности и упрощения сразу бросаются в глаза.
Я думаю, в статье желательно было бы указать целевую аудиторию и честно сказать, что в реальности не так все просто.
Р.S. Указывать на недостатки и ошибки всегда проще, чем их не допускать и исправлять.
Смотря что вы понимаете под обычной программой Linux и как запустить. Если консольные приложения и команды Linux, то можно воспользоваться эмулятором терминала Termux
Я своих одноплатников не разрабатывал и могу ошибаться.
Но насколько понимаю, сначала нужно определиться на каком SoC ты будешь делать.
Информацию, необходимую для разработки часто ты получишь только подписав NDA. Потом тебе нужны знания в схемотехнике, в проектировании и разводке печатных плат.
Далее тебе нужно разработать Device Tree для твоего одноплатника, скорее всего адаптировать для него загрузчик, часто это u-boot.
Весь процесс трудозатратный и не делается в одиночку.
Но, думаю, собрать что-то типа своего Raspberry Pi Pico можно и самому. Но это немного другой уровень и там уже Linux не будет.
Исходя из аннотации, в книге изложено, как собрать Linux для уже существующего одноплатника, используя, Yocto и Buildroot, добавить переферию и пропатчить Device Tree для поддержки этой переферии.
Согласен, что можно поступить как вы предлагаете. В продакшене никто не будет делать, как описано в статье, лучше использовать решение, которое разрабатывается годами несколькими разрабочиками, проверенное временем. Но я просто хотел показать, что именно делается, и получить ощущение контроля над тем, что происходит.
Я посчитал, что рассказывать про оверлейные файловые системы и squashfs в статье, где создается минимальный Linux, усложнит восприятие. Но забыл про них упомянуть в выводах, исправлю
Мне самому больше нравится dd, но я считаю, что balenaEtcher удобней для новичка тем, что меньше вероятности угробить систему, да и в Windows я им пользуюсь. Но сам удивлен его размером)
Основная цель статьи - показать какие основные компоненты должны быть в сборке Linux для встраиваемых систем, и чем такой Linux отличается от варианта для PC.
В моем понимании шофер - это профессиональный водитель. Именно лушее знание автомобиля и умение выполнить мелкий ремонт отличает его от просто водителя.
Под "работать" я подразумевал - выполнять основные команды Linux в образовательных целях. Собранный в статье Linux можно использовать в качестве основы для более сложных сборок. Я намеренно это не делал в статье, чтобы статья получилась проще для восприятия основных концепций.
Вы имеете ввиду Linux, который собирается в статье? В нем используется mdev (легковесный аналог udev, который входит в состав BusyBox). Но я в ядре вообще не включал поддержку USB. Я проверял работу Linux на ноутбуках, на всех тех, которые у меня были - PS/2 клавиатура. Сейчас проверил как работает с USB-клавиатурой на стационарном компьютере, сканкоды приходят от клавиатуры, но трактуются неверно, есть в чем ещё разобраться. Спасибо за внимательное чтение и подсказанную идею.
Полностью с вами согласен и думаю над продолжением. Это просто учебный пример. Но с сетью, как я понимаю, так универсально и минимально не получится, так как нужны еще драйвера и firmware для сетевых карт. А в случае WiFi еще и USB, а также программы для userspace. Может даже лучше сделать для какого-нибудь одноплатника.
Это точно тема отдельной статьи и дополнительного исследования. Вы не привели название для слабого железа, которое слабее Raspberry, поэтому сложно ответить на этот вопрос, но думаю на большинстве существующих одноплатников такой подход работать будет, так как несжатое ядро вместе с initramfs занимает до 6 мегабайт. Похожее минимальное ядро для Raspberry Pi 3 или Raspberry Pi 4 занимало больше, но не критично.
Для сборки или для запуска Linux? Я специально не стал освещать кросскомпиляцию и особенность запуска Linux на встраиваемых системах, так это тема отдельной статьи.
У меня точно грузится лицензионная Windows 10 с отключенным Secure Boot. В моем понимании Secure Boot - это когда UEFI проверяет на то, что запускаемое приложение (загрузчик) подписан ключом, которому доверяет UEFI. Если ключ неверный, дальнейшая загрузка прекращается. Отключение Secure Boot это отключение этой проверки.
Цель статьи была образовательная и я хотел показать, как собрать Linux для ноутбука или стационарного компьтера. Для роутера немного сложнее будет и менее универсально.
Я не могу точно сказать почему именно здесь я использовал double. Скорее всего это осталось от старого кода, где я пытался с помощью библиотеки math считать sin и cos. Палитра вычисляется один раз при старте, поэтому на производительность это практически не должно влиять. Еще я по привычке использую double для вещественных типов, чтобы меньше думать о преобразованиях типов. Да и переменных немного, они не сильно влияют на обьем используемой памяти.
Возможно я ошибаюсь, но скорость перемещения луча по вертикали постоянная при отрисовке поля. Поэтому за время отрисовки одной строки при прямом ходе луч сдвинется по вертикали больше, чем при обратном ходе.
Если быть более точными, луч будет сдвигаться по вертикали и при прямом ходе и при обратном, только при прямом это более заметно. Если присмотреться к рисунку, что привел @sappience, то там как раз это и видно.
ping, nmap работают даже без рутования. Для ip, ifconfig - я думаю, просто нужно рутануть андроид
Скорее всего ядро, которое запускал автор, можно просто взять и запустить из UEFI Shell, или даже просто его может загрузить UEFI, если прописать в NVRAM, где лежит ядро и initramfs, так как большинство современных ядер для x86_64 собирается с CONFIG_EFI_STUB.
Статья дает лишь поверхностное представление о ядре Linux с явными упрощениями и неточностями. У новичка она убирает страх перед неизвестным, а у более опытных - неточности и упрощения сразу бросаются в глаза.
Я думаю, в статье желательно было бы указать целевую аудиторию и честно сказать, что в реальности не так все просто.
Р.S. Указывать на недостатки и ошибки всегда проще, чем их не допускать и исправлять.
Смотря что вы понимаете под обычной программой Linux и как запустить. Если консольные приложения и команды Linux, то можно воспользоваться эмулятором терминала Termux
Я своих одноплатников не разрабатывал и могу ошибаться.
Но насколько понимаю, сначала нужно определиться на каком SoC ты будешь делать.
Информацию, необходимую для разработки часто ты получишь только подписав NDA. Потом тебе нужны знания в схемотехнике, в проектировании и разводке печатных плат.
Далее тебе нужно разработать Device Tree для твоего одноплатника, скорее всего адаптировать для него загрузчик, часто это u-boot.
Весь процесс трудозатратный и не делается в одиночку.
Но, думаю, собрать что-то типа своего Raspberry Pi Pico можно и самому. Но это немного другой уровень и там уже Linux не будет.
Исходя из аннотации, в книге изложено, как собрать Linux для уже существующего одноплатника, используя, Yocto и Buildroot, добавить переферию и пропатчить Device Tree для поддержки этой переферии.
Согласен, что можно поступить как вы предлагаете. В продакшене никто не будет делать, как описано в статье, лучше использовать решение, которое разрабатывается годами несколькими разрабочиками, проверенное временем. Но я просто хотел показать, что именно делается, и получить ощущение контроля над тем, что происходит.
Я сделал скрипты и makefile для сборки моего линукса и у помянул про него в статье: https://github.com/artyomsoft/robinson-linux
Я посчитал, что рассказывать про оверлейные файловые системы и squashfs в статье, где создается минимальный Linux, усложнит восприятие. Но забыл про них упомянуть в выводах, исправлю
Мне самому больше нравится dd, но я считаю, что balenaEtcher удобней для новичка тем, что меньше вероятности угробить систему, да и в Windows я им пользуюсь. Но сам удивлен его размером)
Основная цель статьи - показать какие основные компоненты должны быть в сборке Linux для встраиваемых систем, и чем такой Linux отличается от варианта для PC.
В моем понимании шофер - это профессиональный водитель. Именно лушее знание автомобиля и умение выполнить мелкий ремонт отличает его от просто водителя.
Под "работать" я подразумевал - выполнять основные команды Linux в образовательных целях. Собранный в статье Linux можно использовать в качестве основы для более сложных сборок. Я намеренно это не делал в статье, чтобы статья получилась проще для восприятия основных концепций.
Вы имеете ввиду Linux, который собирается в статье? В нем используется mdev (легковесный аналог udev, который входит в состав BusyBox). Но я в ядре вообще не включал поддержку USB. Я проверял работу Linux на ноутбуках, на всех тех, которые у меня были - PS/2 клавиатура. Сейчас проверил как работает с USB-клавиатурой на стационарном компьютере, сканкоды приходят от клавиатуры, но трактуются неверно, есть в чем ещё разобраться. Спасибо за внимательное чтение и подсказанную идею.
Полностью с вами согласен и думаю над продолжением. Это просто учебный пример. Но с сетью, как я понимаю, так универсально и минимально не получится, так как нужны еще драйвера и firmware для сетевых карт. А в случае WiFi еще и USB, а также программы для userspace. Может даже лучше сделать для какого-нибудь одноплатника.
Это точно тема отдельной статьи и дополнительного исследования. Вы не привели название для слабого железа, которое слабее Raspberry, поэтому сложно ответить на этот вопрос, но думаю на большинстве существующих одноплатников такой подход работать будет, так как несжатое ядро вместе с initramfs занимает до 6 мегабайт. Похожее минимальное ядро для Raspberry Pi 3 или Raspberry Pi 4 занимало больше, но не критично.
Для сборки или для запуска Linux? Я специально не стал освещать кросскомпиляцию и особенность запуска Linux на встраиваемых системах, так это тема отдельной статьи.
У меня точно грузится лицензионная Windows 10 с отключенным Secure Boot. В моем понимании Secure Boot - это когда UEFI проверяет на то, что запускаемое приложение (загрузчик) подписан ключом, которому доверяет UEFI. Если ключ неверный, дальнейшая загрузка прекращается. Отключение Secure Boot это отключение этой проверки.
Цель статьи была образовательная и я хотел показать, как собрать Linux для ноутбука или стационарного компьтера. Для роутера немного сложнее будет и менее универсально.
Я не могу точно сказать почему именно здесь я использовал double. Скорее всего это осталось от старого кода, где я пытался с помощью библиотеки math считать sin и cos. Палитра вычисляется один раз при старте, поэтому на производительность это практически не должно влиять. Еще я по привычке использую double для вещественных типов, чтобы меньше думать о преобразованиях типов. Да и переменных немного, они не сильно влияют на обьем используемой памяти.
Спасибо, за подробное дополнение.
С первым утверждением согласен, но нужно перепроверить источники. А со вторым и третьим - нет.
Кадр - это прохождение луча по всем строкам, количество строк в кадре одинаковое и при прогрессивной и при чересстрочной развертке.
Количество кадров в секунду одинаковое при прогрессивной и чересстрочной развертке.
При чересстрочной развертке количество полукадров в секунду в два раза больше, чем количество кадров в секунду.
Возможно я ошибаюсь, но скорость перемещения луча по вертикали постоянная при отрисовке поля. Поэтому за время отрисовки одной строки при прямом ходе луч сдвинется по вертикали больше, чем при обратном ходе.
Если быть более точными, луч будет сдвигаться по вертикали и при прямом ходе и при обратном, только при прямом это более заметно. Если присмотреться к рисунку, что привел @sappience, то там как раз это и видно.
Поправьте, если я неправ.