JustOS/instructions.md

50 lines
2.1 KiB
Markdown
Raw Normal View History

2025-01-24 14:00:19 +00:00
### Разработка своего shell
# Директория - progs
# Компиляция библиотеки на Assembler
as sys.S -o sys
# Компиляция самого shell в .o (без линковки)
gcc -c shell.c
# Линкуем библиотеку к нашей программе
ld -o shell shell.o sys --entry main -z noexecstack
# Обеспечиваем запуск shell в ОС как главного инициализатора
mv shell init
# Добавление файлов, которые нужны в системе (например бинарники)
# Можно добавить своё
echo init >> files
# Добавляем всё в системные архив
cat files | cpio -H newc -o > init.cpio
### Настройка ядра (уже настроено в репо)
# Директория - linux-6.13
# Скопировать репозиторий
1. git clone https://gitea.del.pw/justuser/JustOS.git
# Установить зависимости
2. ./install_requirements.sh
# Настройка ядра
3. cd linux-4.9
4. make tinyconfig
5. make menuconfig
6. Выбрать "64-bit kernel"
7. General setup
8. Включить "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
9. Убрать все галочки с "Support initial ramdisks compressed using..."
10. Выбрать "Configure standard kernel features (expert users)"
11. Включить "Enable support for printk"
12. Выйти на главный уровень до "General setup"
13. "Device Drivers" -> "Character devices"
14. Включить "Enable TTY"
15. Выйти на главный уровень
16. "Executable file formats / Emulations"
17. Включить "Kernel support for ELF binaries"
18. Выйти и сохранить изменения
### Компиляция
# Директория - linux-6.13
# Компиляция ядра с 4 потоками
make -j 4
# Сборка ISO
make isoimage FDARGS="initrd=/init.cpio" FDINITRD="../progs/init.cpio"
# Запуск ISO
2025-01-24 14:13:37 +00:00
# -smp 1 - одно ядро, иначе сбивается время
qemu-system-x86_64 -cdrom arch/x86/boot/image.iso