Загрузчик ЯОС
Загрузчик ЯОС
Всем привет! Можете подсказать, где находится загрузчик ЯОС в исходном коде?
Re: Загрузчик ЯОС
Спасибо за хороший вопрос, но у него нет хорошего ответа. Я не занимался загрузкой x86 уже несколько месяцев, всё позабыл. Ключи для того, чтобы восстановить знания:
* Нужно изучать порядок сборки (см. https://tvoygit.ru/budden/ja-o-s/src/br ... -запуск.md). Рекомендую USB версию, а не CD.
Скрипт сборки для USB - тут: https://tvoygit.ru/budden/ja-o-s/src/br ... 32USB.Tool
В частности, вот эти строчки
Собирают и задают начальный загрузчик (он находится в https://tvoygit.ru/budden/ja-o-s/src/br ... Unreal.Asm, написан на ассемблере).
Дальше загружается собственно ядро, которое линкуется вот этой командой:
* Когда чинил загрузку с CD, писал "поток сознания" - вот он.
https://вече.программирование-по-русски ... ?f=5&t=499
* Нужно изучать порядок сборки (см. https://tvoygit.ru/budden/ja-o-s/src/br ... -запуск.md). Рекомендую USB версию, а не CD.
Скрипт сборки для USB - тут: https://tvoygit.ru/budden/ja-o-s/src/br ... 32USB.Tool
В частности, вот эти строчки
Код: Выделить всё
PCAAMD64.Assemble OBLUnreal.Asm ~
PartitionsLib.SetBootLoaderFile OBLUnreal.Bin ~
PCAAMD64.Assemble BootManager.Asm ~
BootManager.Split BootManager.Bin ~
Дальше загружается собственно ядро, которое линкуется вот этой командой:
Код: Выделить всё
Linker.Link --path=../NewBios32USB/ --displacement=100000H --fileName=../NewBios32USB/USB.Bin
Kernel Traps
UsbHubDriver UsbEhci UsbEhciPCI UsbStorageBoot
DiskVolumes DiskFS Loader BootConsole ~
* Когда чинил загрузку с CD, писал "поток сознания" - вот он.
https://вече.программирование-по-русски ... ?f=5&t=499
Re: Загрузчик ЯОС
В частности, тут есть команды для отладки в связке gdb+qemu
https://вече.программирование-по-русски ... t=10#p3496
Там ещё есть какой-то волшебный скрипт для gdb из интернета, чтобы можно было отлаживаться в real mode или в unreal mode.
Я брал его либо отсюда, https://github.com/mhugo/gdb_init_real_mode, либо из каких-то форков. Вряд ли он уцелел после аварии у меня.
Есть также видео с аналогичным процессом для Raspberry Pi - там сразу загружается ядро (kernel7.img)
https://zen.yandex.ru/video/watch/62a79 ... 692a14250c
Никакого загрузчика в этом варианте нет. Для Zybo всё гораздо сложнее, там есть 2-3 загрузчка, но здесь я некомпетентен.
Это делал Алексей Морозов, он и знает, как там что устроено. Я всего лишь выпросил у него, чтобы он адаптировал сборку, чтобы она работала на моей Zybo Z7-10. Процесс там гораздо сложнее и не думаю, что с него стоит начинать.
https://вече.программирование-по-русски ... t=10#p3496
Там ещё есть какой-то волшебный скрипт для gdb из интернета, чтобы можно было отлаживаться в real mode или в unreal mode.
Я брал его либо отсюда, https://github.com/mhugo/gdb_init_real_mode, либо из каких-то форков. Вряд ли он уцелел после аварии у меня.
Есть также видео с аналогичным процессом для Raspberry Pi - там сразу загружается ядро (kernel7.img)
https://zen.yandex.ru/video/watch/62a79 ... 692a14250c
Никакого загрузчика в этом варианте нет. Для Zybo всё гораздо сложнее, там есть 2-3 загрузчка, но здесь я некомпетентен.
Это делал Алексей Морозов, он и знает, как там что устроено. Я всего лишь выпросил у него, чтобы он адаптировал сборку, чтобы она работала на моей Zybo Z7-10. Процесс там гораздо сложнее и не думаю, что с него стоит начинать.
Re: Загрузчик ЯОС
Если останутся какие-то вопросы - задавайте, попробуем вместе разобраться.
Re: Загрузчик ЯОС
Спасибо, буду разбираться!
Re: Загрузчик ЯОС
Если интересно, есть пара задач:
* запустить обычную ARM версию для Raspberry Pi - этому посвящена ветка https://tvoygit.ru/budden/ja-o-s/commits/branch/RPi2-3 и здесь рядом тема на форуме. У нас есть работающая "кооперативная" версия для Raspberry Pi и работающая "обычная" версия для Zybo Z7-10, вот из них и пытаюсь скомбинировать работающую под RPi. Есть определённое продвижение, но до успеха пока далеко. В эти дни продолжил этим заниматься после большого перерыва. Кооперативная версия - это отдельный вариант A2 с кооперативным планировщиком, но, как говорят знатоки, она не вполне доделана. Для сокращения фронта работ нужно иметь одну версию, а не две, пооэтому берём "обычную" (на вытесняющей многозадачности) как более доведённую до ума. Разные ARM железки могут сильно отличаться друг от друга, Zynq сильно отличается от RPi (но RPi проще). Стратегия состоит в упрощении версии Zynq до уровня RPi, подглядывая и забирая куски из работающей кооперативной версии. Сейчас есть эмулятор, но потом понадобится физическая Raspberry Pi 2 Model B, коло 3 тыр на авито.
* запустить обычную x86 версию на Эльбрусе. Почему она не запустилась - я не знаю. Нужен доступ к физической машине и квалификация. Доступ к физической машине можно оформить только на юрлицо, но её можно взять в аренду, порядка 10 тыр в месяц ЕМНИП.
* запустить обычную ARM версию для Raspberry Pi - этому посвящена ветка https://tvoygit.ru/budden/ja-o-s/commits/branch/RPi2-3 и здесь рядом тема на форуме. У нас есть работающая "кооперативная" версия для Raspberry Pi и работающая "обычная" версия для Zybo Z7-10, вот из них и пытаюсь скомбинировать работающую под RPi. Есть определённое продвижение, но до успеха пока далеко. В эти дни продолжил этим заниматься после большого перерыва. Кооперативная версия - это отдельный вариант A2 с кооперативным планировщиком, но, как говорят знатоки, она не вполне доделана. Для сокращения фронта работ нужно иметь одну версию, а не две, пооэтому берём "обычную" (на вытесняющей многозадачности) как более доведённую до ума. Разные ARM железки могут сильно отличаться друг от друга, Zynq сильно отличается от RPi (но RPi проще). Стратегия состоит в упрощении версии Zynq до уровня RPi, подглядывая и забирая куски из работающей кооперативной версии. Сейчас есть эмулятор, но потом понадобится физическая Raspberry Pi 2 Model B, коло 3 тыр на авито.
* запустить обычную x86 версию на Эльбрусе. Почему она не запустилась - я не знаю. Нужен доступ к физической машине и квалификация. Доступ к физической машине можно оформить только на юрлицо, но её можно взять в аренду, порядка 10 тыр в месяц ЕМНИП.