LINUX.ORG.RU

Выжимка из ядра для ARM64

 , ,


0

1

Может кому-то будет интересно. Вынул из ядра 47k строк кода, для того чтобы запустить ls (из состава BusyBox). Т.е. в текущем виде код стартует, распаковывает корневую файловую систему и ее можно увидеть с помощью единственных реализованных системных вызовов. Интересно было реализовать механизм инициализации памяти, прерываний и т.д.

GitHub

one file linux

Simple OS for ARM64 (aarch64) architecture.

* Follow standard guide to prepare build and test environment (for ordinary ARM64 Kernel)

* Run ./build_it.sh

* Run qemu

qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 512 -kernel ./arch/arm64/boot/Image --append "console=ttyAMA0"

* Only couple syscall now working: for testing enter ls

* Close qemu by CTRL-A and X after that

С английским у меня не очень, если где-то в приведенном описании написал ерунду, прошу сообщить. Планирую опубликовать посты на буржуйских ресурсах, чтобы найти единомышленников. Может получится довести до ума систему в учебных целях.

P.S. Код ужасен. При компиляции, сыпется куча ворнингов.

★★★★★

Ответ на: комментарий от tlx

Круто!

Я к чему спросил? На одном ресурсе был разговор про переделку малины в некое подобие игровой приставки с флешками-картриджами, но всё уперлось в скорость загрузки системы. А с таким подходом от включения до запуска игры по идее должно пройти не больше 10 секунд.

Radjah ★★★★★
()
Ответ на: комментарий от tlx

Мне просто подход понравился.

Не вычищать из ядра ненужное, а собирать ядро из кусков нужного.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

но всё уперлось в скорость загрузки системы. А с таким подходом от включения до запуска игры по идее должно пройти не больше 10 секунд

При правильной сборке загрузка существенно быстрее.
Например у меня:

$ dmesg
.....
[    3.304660] TCP: cubic registered
[    3.309508] registered taskstats version 1
[    3.324969] Warning: unable to open an initial console.
[    3.341210] mmc0: host does not support reading read-only switch, assuming write-enable
[    3.365120] Freeing unused kernel memory: 4016K (c04e6000 - c08d2000)
...........
[    6.797105] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[    6.943551] random: rangfinderd urandom read with 79 bits of entropy available
[    8.401722] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Т.е. если сеть не нужна, то можно существенно сократить время ожидания

imb ★★
()

Radjah, ты один проявил интерес. Как думаешь может новость написать, а то как-то обсуждение не пошло?

tlx ★★★★★
() автор топика
Ответ на: комментарий от imb

Ненене, Девид Блейн, не надо мне этой черной магии. :)

У меня Pi 2 вот так стартует http://vpaste.net/ELN8w

Pi B наверное минуту раскачивается.

Radjah ★★★★★
()
Ответ на: комментарий от mix_mix

практическая ценность для сообщества

Весь осдев обычно крутится вокруг x86, а здесь новая архитектура - ARMv8. К тому же 50 тысяч строк кода, способных загрузиться и выполнить пару системных вызовов, это чего-то да стоит. Все инклюды и функции собраны в один файл. Можно отслеживать выполнение. Остается рефакторинг на предмет удобного чтения. Если найду единомышленников буду продолжать.

tlx ★★★★★
() автор топика
Ответ на: комментарий от tlx

Я тебя разочарую. Каждый энный программист писал в детстве свою операционную систему, в моём случае на асме и лиспе, и строк там было куда меньше 50 тысяч, несмотря на многозадачность и поддержку FAT. Увы, практической пользы для сообщества подобные поделки как правило не несут.

mix_mix ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.