
Как создать ядро Linux с помощью Nasm, Go Binary, Mini Linux
23 апреля 2022 г.Ссылка на Github для проекта: https://github.com/creotiv/howto-bootable-golang-binary
Предустановить
Некоторые вещи, необходимые для создания и запуска вещей
apt-get install bison flex nasm qemu-system-x86_64 libelf-dev bc
Nasm простой пример
Стандартный загрузочный сектор имеет размер 512 байт, который должен заканчиваться на 0xaa55 байт. Я создал простой скрипт Nasm, который печатает «Hello Wolrd!» при загрузке.
[орг 0x7c00]
мов ах, 0x0e
мов бх, привет
Распечатать:
мов ал, [bx]
смп ал, 0
конец
интервал 0x10
вкл бх
jmp печать
конец:
jmp $
привет:
дб 'Привет, мир!', 0
раз 510-($-$$) дб 0
дв 0xaa55 ; эти байты должны заканчиваться загрузочным сектором
Скомпилируйте загрузочный двоичный файл:
nasm -f bin boot.nasm -o boot.bin
Запустите его с помощью эмулятора
qemu-system-x86_64 boot.bin
Запустите двоичный файл go в ядре Linux
Во-первых, нам нужно загрузить последнюю стабильную версию ядра Linux.
curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.4.tar.xz | смола Jx
Затем нам нужно настроить его и выбрать все, что нам нужно. Это довольно сложно, потому что есть куча настроек. Я сделал некоторую конфигурацию по умолчанию в root/.config, которую вы можете скопировать в папку linux-5.17.4 для использования.
Если вы хотите создать свою собственную конфигурацию, используйте: make menuconfig
Скомпилируйте ядро (это займет некоторое время)
cd linux-5.17.4 && сделать -j4
Теперь давайте запустим образ с нашим ядром, чтобы посмотреть, работает ли он.
qemu-system-x86_64-serial stdio-kernel linux-5.17.4/arch/x86/boot/bzImage
Мы получили ошибку о том, что мы не смонтировали диск — все в порядке, потому что мы действительно этого не делали.
Теперь нам нужно смонтировать диск и добавить на него наш бинарник, библиотеки и т.д. Для этого мы будем использовать initramfs, в основном помещая все в оперативную память.
Для этого нам нужно собрать наш двоичный файл go со статической привязкой и создать gzip-архив с нашим креплением на оперативную память (в основном только наш двоичный файл).
Очень простой скрипт:
```javascript
основной пакет
импорт (
"ФМТ"
основная функция () {
строка данных переменной
fmt.Println("Привет с вашего образа Go!")
за {
fmt.Println("Введите что-нибудь:")
fmt.Scanln(&данные)
fmt.Printf("Эхо: %s
", данные)
```javascript
!/бин/баш
SPATH=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd $SPATH/гобинарный
go build -ldflags="-extldflags=-static" -o инициализация
компакт диск ../
mkdir -p горам
МВ $SPATH/gobinary/инит $SPATH/горам/инит
cd $SPATH/горам
найти . -print0 | cpio --null -ov --format=newc | gzip -9 > ../goram.cpio.gz
./build-ramfs.sh
Теперь мы можем запустить его, как и раньше, просто добавим крепление для оперативной памяти.
qemu-system-x86_64 -serial stdio -kernel linux-5.17.4/arch/x86/boot/bzImage -initrd go-ram.cpio.gz
Создание образа mini-linux
Конечно, мы можем создать свой собственный Linux. Например, мы можем использовать изображение Buxybox для этого
```javascript
завиток https://busybox.net/downloads/busybox-1.34.1.tar.bz2 | смола JZ
CD Busybox-1.33.2
сделать менюконфигурации
сделать -j4
сделать установку
компакт диск ..
Теперь давайте заполним наше изображение
```javascript
mkdir -p bbram/{bin,sbin,etc,proc,sys,usr/bin,usr/sbin}
cp -a busybox-1.34.1/_install/* bbram/
Давайте создадим приветственный скрипт инициализации
```javascript
!/бин/ш
/bin/mount -t devtmpfs devtmpfs /dev
/bin/mount -t proc нет /proc
/bin/mount -t sysfs нет /sys
dmesg -n 1
кошка << EOF
Загрузка заняла $(cut -d' ' -f1 /proc/uptime) секунд
| \/ () () | | (_)
| \ / | _ __ _ | | _ _ ___
| |\/| | | ' \| | | | | | ' \| | | \ \/ /
| | | | | | | | | | |____| | | | | |_| |> <
|| |||| ||| |_||| ||_,/_/_\
EOF
exec setsid cttyhack sh #https://busybox.net/FAQ.html#job_control
исполняемый файл /bin/sh
Сохрани это
```javascript
cp init bbram/bin/init
chmod +x bbram/bin/инит
Создать оперативный архив
```javascript
компакт-диск
найти . -print0 | cpio --null -ov --format=newc | gzip -9 > ../bbram.cpio.gz
компакт диск ../
Запустить его
qemu-system-x86_64 -kernel linux-5.17.4/arch/x86/boot/bzImage -initrd bbram.cpio.gz -m1024
Оригинал
Recent Post
-
Воспроизводимые инструменты GO: что вам нужно знать
4 августа 2025 г. -
Lambda не сделана для параллелизма - но Go все еще выполняет работу
4 августа 2025 г. -
Известные проблемы с параллелизмом и то, как GO обрабатывает их
28 июля 2025 г. -
Zuse - это то, что происходит, когда IRC встречает Go, Bubble Tea и Lipgloss
28 июля 2025 г. -
По мере того, как экосистема GO продолжает расти, Gopls продолжает масштабироваться
26 июля 2025 г.
Categories
- Python
- blockchain
- web
- hackernoon
- вычисления
- вычислительные компоненты
- цифровой дом
- игры
- аудио
- домашний кинотеатр
- Интернет
- Мобильные вычисления
- сеть
- фотосъемка видео
- портативные устройства
- программного обеспечения
- телефон и связь
- телевидение
- видео
- мир технологий
- умные гиды
- облако
- искусственный интеллект
- се
- Samsung
- умные города
- digitaltrends
- отели
- Startups
- Venture
- Crypto
- Apps
- безопасность
- техника и работа
- cxo
- мобильность
- разработчик
- 5г
- майкрософт
- инновации
- Права и свободы
- Законодательство и право
- Политика и общество
- Космическая промышленность
- Информационные технологии
- Технологии
- Образование
- Научные исследования
- Автомобильная промышленность
- Программная инженерия
- IT и технологии
- Веб-разработка
- Программирование
- Автоматизация
- Карьерный рост
- Программирование и анализ данных
- Трудоустройство
- Политика
- Искусственный интеллект
- ИТ-технологии
- Программное обеспечение
- Экологическая политика
- Образование и рынок труда
- Политика и право
- Microsoft Teams и SharePoint
- Информационная безопасность
- Кибербезопасность
- Налоги
- Образование и карьера
- Интернет и технологии
- Технологии, Государственные услуги
- Политика и технологии
- Разработка программного обеспечения
- Разработка ПО
- Машинное обучение
- Налогообложение, технологии, открытый исходный код
- Финансы и налоги
- Технологии, Интернет, Экология
- Интернет, безопасность
- Технологии и политика
- Операционные системы
- Профессиональная разработка
- Технологии, Безопасность
- Интернет и общество
- Финансовая индустрия
- Налоговый учёт
- Общественное здравоохранение
- Технологическая отрасль
- Юриспруденция
- Технологии и государство
- Здоровье и фитнес
- IT-инфраструктура
- Технологии и ИИ
- Здравоохранение
- IT
- Технологии, Экономика
- Музыка и технологии
- Здоровье и питание
- IT и безопасность
- Бизнес и предпринимательство
- Технологии, Программное обеспечение
- Технологии и инновации
- Технологии, данные, этика
- Технологии и Интернет
- Технологии и SaaS
- Медицина и здравоохранение
- Онлайн-видеосервисы
- Финансы и технологии
- Чтение и саморазвитие
- Экономика и бизнес
- Безопасность данных
- Удаленная работа
- Авиация и технологии
- Технологии, Игры
- Энергетика
- Социальные сети, безопасность, технологии
- Саморазвитие
- Безопасность информации
- Бизнес и карьера
- Технологии и отношения
- Игровая индустрия
- Компьютерная индустрия
- Математика, Искусственный интеллект
- Наука и технологии
- Технологии и безопасность
- Технологии, Удаленная работа, Бизнес
- Видеоигры
- Технологии, Искусственный интеллект, Этика
- Технологии, социальные сети, 6G
- Технологии, Программирование, AI, Разработка ПО
- Программирование, Разработка ПО, Технологии
- Животные
- Технологии, Искусственный интеллект
- Программирование, карьера, технологии, обучение
- Бизнес и технологии
- Технологии, Безопасность данных
- Астрономия и физика
- Продуктивность, личное развитие
- Медиа и Технологии
- Программирование и Искусственный Интеллект
- Социальные сети
- Политика и экономика
- Технологии, Медицина, Искусственный интеллект
- Технологии и управление
- Космос и астрономия
- Общество и политика
- Космические исследования
- Веб-дизайн
- Искусственный интеллект и безопасность данных
- Технологии, Безопасность, Конфиденциальность
- Экологическая проблема
- Технологии, Погода
- Авиация
- Транспортная сфера
- Технологии и бизнес
- Игровая промышленность
- Телевидение и реклама
- Аналитика данных
- Технологии и кибербезопасность
- Маркетинг
- Технологии и гаджеты
- Технологии, Авиация, Инновации
- Финансы и инвестиции
- Технологии и общество
- Рыночный анализ
- Космология
- Данные и бизнес
- IT и программирование
- Технологии и право
- Программирование и разработка
- Медицинские технологии
- Авиационная промышленность
- Технологии и искусственный интеллект
- Генетическая инженерия
- Бизнес и инвестиции
- Компьютерная промышленность
- Психология и социология
- Образование и технологии
- Рынок труда
- Технологии, Стартапы
- Технологии, Приватность, Чтение
- Маркетинг и продажи
- Виртуальная реальность
- Технологии, Смартфоны, Маркетинг
- Технологии, Бизнес, Личностный рост
- Экологические проблемы
- Экономика и технологии
- IT и карьера
- Интернет и безопасность
- Разработка и технологии
- Биотехнологии
- Интернет-магазины, кибербезопасность
- Финансы
- Безопасность и технологии
- Экономика
- Защита данных
- Data Science
- Карьера и работа
- Финансовый успех, мошенничество, маркетинг
- Безопасность
- Экология
- Космическая индустрия
- Программирование, Python, Обучение
- Технологии искусственного интеллекта
- Технологии, Дизайн, iOS
- Программирование, DevOps, Kubernetes
- Социальные сети и пропаганда
- Корпоративная этика
- Управление IT-инфраструктурой
- Здоровье и медицина
- Медицина
- Медицинская промышленность
- Разработка и дизайн
- Искусственный интеллект, Диагностика систем
- Образование и психология
- Технологии, Автомобильная промышленность
- Автомобили и путешествия
- Астрономия и космология
- Программирование и технологии
- IT, работа в офисе, эмоциональный интеллект
- Компьютерная техника
- Здоровье и благополучие
- Управление персоналом
- Политика и управление
- Бизнес и экономика
- Социальные сети, Пропаганда, Информационная безопасность
- Технологии и автоматизация
- Геймдизайн
- Экология и технологии
- CRM-системы, IT-инфраструктура
- Права человека
- Цифровая цензура, свобода слова, технологии
- Технологии, Искусственный интеллект, Работа
- Наука о данных
- Астрономия, Наука
- Интернет и цифровые технологии
- Технологии, управление
- Интернет и связь
- Технологии и конфиденциальность
- Интернет и свобода слова
- Психология и социальные науки
- Книги и литература
- Работа и карьера
- Финансовые технологии
- Психология и саморазвитие
- IT, программирование, сети
- Технологии, Видеоигры
- Экология и энергетика
- Космонавтика
- Медицина и технологии
- Игры и развлечения
- Музыкальная индустрия
- Логистика и складирование
- Бизнес и финансы
- Экология и окружающая среда
- Правозащита
- Социальные сети и дезинформация
- Технологии и рынок труда
- Технологии, Искусственный интеллект, Рынок труда
- Технологии и будущее
- Медицина и здоровье
- Социальные медиа
- Экология, политика, общество
- Экономика и Финансы
- Разработка игр
- Пропаганда и дезинформация
- Медицинские исследования
- Онлайн-знакомства
- Политика и СМИ
- Энергетика и электромобили
- Климатические изменения
- Технологии, Рынок труда
- IT и управление данными
- Безопасность и кибербезопасность
- Интернет-технологии
- Психология и личностное развитие
- Технологии, Мессенджеры
- Цифровые технологии
- Здоровье и самосовершенствование
- Технологии и AI
- Технологии и спорт
- IT, Разработка программного обеспечения
- Экология и климат
- Космос и технологии
- Юридическая сфера
- Безопасность в интернете
- Программирование, Искусственный Интеллект, Качество ПО
- Технологии и мессенджеры
- Социальная справедливость
- Технологическая индустрия
- Личностное развитие, Time-менеджмент, Психология
- Бизнес и менеджмент
- Технологии, Микросхемы, Автономные системы
- Фриланс и предпринимательство
- Социальные сети и искусственный интеллект
- Криминальные дела
- Социальные сети, Маркетинг
- Энергетика и экология
- Технологии, Искусственный Интеллект, Полиция
- Программирование, Искусственный интеллект, Рынок труда
- Социальные сети, дезинформация, анализ данных
- Потребительские права
- Образование и наука
- Технологии и правосудие
- Технологии, Безопасность, Автомобили
- Энергетика и окружающая среда
- Личностное развитие
- Технологии и экономика
- Медиа и коммуникации
- Миграция и иммиграция
- Личностный рост
- Налоговая система
- Медиа и телевидение
- Интернет и телекоммуникации
- Технологии, Кибербезопасность
- Здоровье
- Социальные сети и карьера
- Политика и инфраструктура
- Предпринимательство
- Промышленность программного обеспечения
- СМИ и коммуникации
- Медиа и Общество
- Медицина и генетика
- Веб-разработка и дизайн
- Технологии, процессоры
- IT-индустрия
- Кинопроизводство и технологии
- Транспорт
- Текстовый анализ
- Технологии, дизайн интерфейсов
- Офисные приложения
- Технологии, Онлайн-сервисы
- Медицина и биотехнологии
- Общество и технологии
- Экономика и рынок труда
- Искусственный интеллект, программирование, аналитика
- Технологии, следствие
- Сетевые технологии
- Технологии и веб-разработка
- Программирование, Обучение, Практика
- Коммуникации и ИТ
- Технологии, Карьера, Экономика
- Технологии и транспорт
- Здравоохранение и медицина
- Технологии, Государственное управление
- IT-безопасность
- IT и разработка
- Финансы и экономика
- Социальные сети, Общество, Сообщества
- IT-разработка
- СМИ и политика
- Конфиденциальность и безопасность
- Экономика и политика
- Технологии и общественная жизнь
- Бизнес и этика
- Безопасность и защита информации
- Технологии, бизнес
- Интернет и цензура
- Государственное регулирование
- Игры, Технологии
- Технологии и оптимизация
- Технологии ИИ и машинного обучения
- Технологии, IT, карьера
- IT и программное обеспечение
- Право и преступность
- Криминал и Правоохранительные Органы
- Технологии и энергетика
- Нефтяная промышленность
- Социальные конфликты
- Преступность и безопасность
- Таможенная очистка
- Медиа и журналистика
- Технологии и разработка приложений
- Телекоммуникации
- Консалтинг и управление
- Управление человеческими ресурсами