FreaxLoader (присоединяйтесь к разработке!)

Модератор: Модераторы разделов

Аватара пользователя
UTeHok
Сообщения: 354
Статус: Антиглобалист
ОС: Debian GNU/Linux

FreaxLoader

Сообщение UTeHok »

Привет всем.

Есть желание серьезно взяться за Assembler. В качестве практики предлагаю попробовать написать загрузчик ОС. Да, слишком круто для начала, но все же хочу попробовать. Есть единомышленники?
Предлагаю сюда выкладывать ссылки на материалы, которые могут помочь в написании загрузчика, а так же исходники.
Синтаксис думаю выбрать все же Intelовский, т.к. документации по нему явно побольше.

В общем жду ваших идей и предложений.

Вот тут несколько ссылок на материалы по ассемблеру:

http://www.drpaulcarter.com/pcasm/
http://www.freeprogrammingresources.com/assembly.html
http://en.wikibooks.org/wiki/X86_Assembly
http://www.fizik.itu.edu.tr/turhan/asm/mnasm.html
http://webster.cs.ucr.edu/AoA/DOS/AoADosIndex.html
http://www.azillionmonkeys.com/qed/asm.html

на немецом:
http://www.robsite.de/tutorials.php?tut=assembly
http://www.joachimrohde.com/cms/xoops/modu...ex.php?cat_id=2


З.Ы. Еще хотел бы попросить сюда не писать просто так. Достаточно частое явление: зайдет кто-то, прочитает тему и запостит что-то типа "Да че вы паритесь, есть же lilo и grub и другие загрузчики. Зачем еще-то писать?". Вот для таких я сразу отвечаю: это просто хобби и развлечение. Мы не хотим создать что-то такое, что должно вытеснить уже существующие загрузчики. Это обмен опытом, практика и образ жизни, если хотите :)
«Make love, not war!»
Спасибо сказали:
Аватара пользователя
UTeHok
Сообщения: 354
Статус: Антиглобалист
ОС: Debian GNU/Linux

Re: FreaxLoader

Сообщение UTeHok »

Первый шаг (полшага :rolleyes: )

Компиляция:

Код: Выделить всё

nasm -fbin FreaxLoader_v0.01.asm -o FreaxLoader_v0.01.bin

Запуск:

Код: Выделить всё

cp FreaxLoader_v0.01.bin /dev/sdb

В данном случае /dev/sdb - флешка. Опыты проводятся на eeepc. Вставляем флешку и перезагружаем подопытный комп.
Программа просто рисует строку "FreaxLoader_v0.01", но работаем мы уже на уровне BIOS.
Прерывания отключены, так что Alt-Ctrl-Del не спасет (уберите второй cli, и все заработет).

З.Ы. материсал по теме
http://nedopc.org/forum/viewtopic.php?t=8651
http://forum.sources.ru/index.php?showforum=38
У вас нет необходимых прав для просмотра вложений в этом сообщении.
«Make love, not war!»
Спасибо сказали:
Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: FreaxLoader

Сообщение MUTOgen »

С удовольствием поучаствовал бы, но боюсь сразу за все хвататься ;) Поковыряю еще сканер :drinks:
Спасибо сказали:
Аватара пользователя
amaora
Сообщения: 95
ОС: Slackware

Re: FreaxLoader

Сообщение amaora »

тоже попробую, пока есть время, вариант с as/ld

У вас нет необходимых прав для просмотра вложений в этом сообщении.
кто здесь?
Спасибо сказали:
Аватара пользователя
amaora
Сообщения: 95
ОС: Slackware

Re: FreaxLoader

Сообщение amaora »

реализовал линейную адресацию, ну и чтение. пока можно почитать текст GPL ;).
исходник с комментариями,



добавил:
http://hdpt.page.by/int13.html
http://www.wasm.ru/article.php?article=unusualboot
http://www.codenet.ru/progr/dos/int_0012.php
У вас нет необходимых прав для просмотра вложений в этом сообщении.
кто здесь?
Спасибо сказали:
Аватара пользователя
UTeHok
Сообщения: 354
Статус: Антиглобалист
ОС: Debian GNU/Linux

Re: FreaxLoader

Сообщение UTeHok »

amaora писал(а):
08.08.2008 06:34
реализовал линейную адресацию, ну и чтение. пока можно почитать текст GPL ;).
исходник с комментариями

Очень интересный код! Жаль только, что AT&T-синтаксис, не сразу понимаю что к чему...
Если в группе есть программист, который знает assembler, может остальным стоит взяться за графическую оболочку и конфигурацию загрузчика на ЯВУ?
Сейчас разбираюсь в коде...

Кстати, а программа, насколько я понял, заточена под дисковод и подразумевает работу именно с дискетами 1,44?
Может все-таки сразу ориентироваться именно на флешки?
И еще вопрос: Как ты определяешь место на на носителе, где начинается файл, с которым мы работаем?
«Make love, not war!»
Спасибо сказали:
Аватара пользователя
amaora
Сообщения: 95
ОС: Slackware

Re: FreaxLoader

Сообщение amaora »

UTeHok писал(а):
08.08.2008 12:08
amaora писал(а):
08.08.2008 06:34
...

Очень интересный код! Жаль только, что AT&T-синтаксис, не сразу понимаю что к чему...
Если в группе есть программист, который знает assembler, может остальным стоит взяться за графическую оболочку и конфигурацию загрузчика на ЯВУ?
Сейчас разбираюсь в коде...

Кстати, а программа, насколько я понял, заточена под дисковод и подразумевает работу именно с дискетами 1,44?
Может все-таки сразу ориентироваться именно на флешки?
И еще вопрос: Как ты определяешь место на на носителе, где начинается файл, с которым мы работаем?


для чего граф-оболочка? конфигурировать пока нечего, да и текстовый конфиг проще

а вот насколько понял я, через int 13 можно читать все с чего позволяет загружаться bios (у меня вот с usb-storage не может)
и других подходящих средств загрузки я не знаю, не через in/out же напрямую делать .

данные начинаются со следующего (после загрузочного) сектора, файловой системы нет.

http://heim.ifi.uio.no/~stanisls/helppc/int_13.html
http://bioscentral.com/misc/biosservices.htm
кто здесь?
Спасибо сказали:
Аватара пользователя
amaora
Сообщения: 95
ОС: Slackware

Re: FreaxLoader

Сообщение amaora »

добавил функции работы с ext2, в 512 байт уместилось лишь чтение корневого каталога.
код получается не читаемый, и он не будет правильно работать с дисками больших размеров (больше дискет).

http://av5.com/journals-magazines-online/1/35/300

а после прочтения http://mail.nl.linux.org/kernelnewbies/2004-09/msg00192.html
пропадает желание связываться с загрузкой ядра на x86.

(образ ext2 дискеты с файлами, исходник внутри)

.. продолжать это не буду, и тема похоже стала неинтересна.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
кто здесь?
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: FreaxLoader

Сообщение Nymin »

интересна, просто UTeHok в бане
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: FreaxLoader

Сообщение diesel »

Nymin писал(а):
13.08.2008 11:52
интересна, просто UTeHok в бане

дабы расставить все точки над йо: Утенок был вчера вечером разбанен. категорически прошу не эксплуатировать эту тему в этом разделе.
Спасибо сказали:
Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: FreaxLoader

Сообщение MUTOgen »

diesel писал(а):
14.08.2008 10:40
Nymin писал(а):
13.08.2008 11:52
интересна, просто UTeHok в бане

дабы расставить все точки над йо: Утенок был вчера вечером разбанен. категорически прошу не эксплуатировать эту тему в этом разделе.

вот и славно :) дальнейших успехов этому проекту!
Спасибо сказали:
Аватара пользователя
UTeHok
Сообщения: 354
Статус: Антиглобалист
ОС: Debian GNU/Linux

Re: FreaxLoader

Сообщение UTeHok »

MUTOgen писал(а):
14.08.2008 12:29
дальнейших успехов этому проекту!

Спасибо! Тебе тоже успехов в освоении сетевых технологий и методах их программирования.
Проект будет жить. Во всяком случае пока я на этом форуме. Просто сейчас очень большая нагрузка на работе, но потонувшая тема будет воскрешена.
«Make love, not war!»
Спасибо сказали:
Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: FreaxLoader

Сообщение MUTOgen »

UTeHok писал(а):
19.08.2008 00:22
Тебе тоже успехов в освоении сетевых технологий и методах их программирования.

да, успехи будут кстати :) спасибо :)
Спасибо сказали:
Аватара пользователя
AT8T
Сообщения: 3
ОС: GNU/Linux

Re: FreaxLoader

Сообщение AT8T »

UTeHok писал(а):
19.08.2008 00:22
потонувшая тема будет воскрешена

Прошло уже больше года, как в этой теме было оставленно последнее сообщение.

Я не знаю, будет ли кто-то продолжать этот проект или нет. Мне так же интересна тема загрузки ядра Linux, и я хотел бы оттолкнуться от начатого, переписать код на AT&T Assembler и продолжить проект.

Если есть желающие, буду рад писать загрузчик в команде.
Спасибо сказали:
yaleks
Сообщения: 2121
Статус: вне статуса
ОС: Gentoo ~

Re: FreaxLoader

Сообщение yaleks »

AT8T писал(а):
06.09.2009 23:16
Если есть желающие, буду рад писать загрузчик в команде.

IMHO это интересный проект для студенческой курсовой.
upstream думает иначе, и в ядре linux даже для низкоуровневой инициализации уже asm практически не используется, переписали на C.

Так для чего проект и не лучше ли попилить grub2?
Спасибо сказали:
Аватара пользователя
AT8T
Сообщения: 3
ОС: GNU/Linux

Re: FreaxLoader

Сообщение AT8T »

yaleks писал(а):
06.09.2009 23:45
AT8T писал(а):
06.09.2009 23:16
Если есть желающие, буду рад писать загрузчик в команде.
Так для чего проект и не лучше ли попилить grub2?


Я не на столько хорошо знаю тему, чтобы допиливать grub2, хотя исходники было бы любопытно посмотреть.

Ну и в догонку:
UTeHok писал(а):
07.08.2008 15:29
это просто хобби и развлечение. Мы не хотим создать что-то такое, что должно вытеснить уже существующие загрузчики. Это обмен опытом, практика и образ жизни, если хотите :)

:happy:
Спасибо сказали:
Аватара пользователя
AT8T
Сообщения: 3
ОС: GNU/Linux

Re: FreaxLoader

Сообщение AT8T »

yaleks писал(а):
06.09.2009 23:45
в ядре linux даже для низкоуровневой инициализации уже asm практически не используется, переписали на C


Код:

$ pwd /usr/src/linux $ find . -name *.S | grep x86 ./arch/um/sys-x86_64/stub.S ./arch/um/sys-x86_64/setjmp.S ./arch/x86/power/hibernate_asm_32.S ./arch/x86/power/hibernate_asm_64.S ./arch/x86/xen/xen-asm_32.S ./arch/x86/xen/xen-head.S ./arch/x86/xen/xen-asm_64.S ./arch/x86/boot/header.S ./arch/x86/boot/pmjump.S ./arch/x86/boot/compressed/head_32.S ./arch/x86/boot/compressed/head_64.S ./arch/x86/boot/copy.S ./arch/x86/lguest/i386_head.S ./arch/x86/math-emu/mul_Xsig.S ./arch/x86/math-emu/reg_u_div.S ./arch/x86/math-emu/div_small.S ./arch/x86/math-emu/reg_u_mul.S ./arch/x86/math-emu/polynom_Xsig.S ./arch/x86/math-emu/reg_u_add.S ./arch/x86/math-emu/wm_shrx.S ./arch/x86/math-emu/wm_sqrt.S ./arch/x86/math-emu/reg_round.S ./arch/x86/math-emu/div_Xsig.S ./arch/x86/math-emu/reg_u_sub.S ./arch/x86/math-emu/round_Xsig.S ./arch/x86/math-emu/reg_norm.S ./arch/x86/math-emu/shr_Xsig.S ./arch/x86/lib/memcpy_64.S ./arch/x86/lib/copy_page_64.S ./arch/x86/lib/putuser.S ./arch/x86/lib/csum-copy_64.S ./arch/x86/lib/thunk_32.S ./arch/x86/lib/semaphore_32.S ./arch/x86/lib/clear_page_64.S ./arch/x86/lib/memset_64.S ./arch/x86/lib/checksum_32.S ./arch/x86/lib/copy_user_64.S ./arch/x86/lib/iomap_copy_64.S ./arch/x86/lib/thunk_64.S ./arch/x86/lib/getuser.S ./arch/x86/lib/rwlock_64.S ./arch/x86/lib/copy_user_nocache_64.S ./arch/x86/kernel/efi_stub_32.S ./arch/x86/kernel/acpi/wakeup_64.S ./arch/x86/kernel/acpi/realmode/wakeup.lds.S ./arch/x86/kernel/acpi/realmode/wakeup.S ./arch/x86/kernel/acpi/realmode/copy.S ./arch/x86/kernel/acpi/wakeup_rm.S ./arch/x86/kernel/acpi/wakeup_32.S ./arch/x86/kernel/head_64-xen.S ./arch/x86/kernel/entry_32-xen.S ./arch/x86/kernel/head_32.S ./arch/x86/kernel/vmlinux_32.lds.S ./arch/x86/kernel/entry_64.S ./arch/x86/kernel/vmlinux.lds.S ./arch/x86/kernel/relocate_kernel_32.S ./arch/x86/kernel/entry_32.S ./arch/x86/kernel/head_32-xen.S ./arch/x86/kernel/entry_64-xen.S ./arch/x86/kernel/head_64.S ./arch/x86/kernel/relocate_kernel_64.S ./arch/x86/kernel/trampoline_32.S ./arch/x86/kernel/syscall_table_32.S ./arch/x86/kernel/verify_cpu_64.S ./arch/x86/kernel/trampoline_64.S ./arch/x86/kernel/efi_stub_64.S ./arch/x86/kernel/vmlinux_64.lds.S ./arch/x86/ia32/ia32entry-xen.S ./arch/x86/ia32/ia32entry.S ./arch/x86/vdso/vdso32.S ./arch/x86/vdso/vdso-layout.lds.S ./arch/x86/vdso/vdso-note.S ./arch/x86/vdso/vdso.S ./arch/x86/vdso/vdso32/vdso32.lds.S ./arch/x86/vdso/vdso32/sigreturn.S ./arch/x86/vdso/vdso32/note.S ./arch/x86/vdso/vdso32/int80.S ./arch/x86/vdso/vdso32/syscall.S ./arch/x86/vdso/vdso32/sysenter.S ./arch/x86/vdso/vdso.lds.S ./arch/x86/crypto/salsa20-i586-asm_32.S ./arch/x86/crypto/twofish-x86_64-asm_64.S ./arch/x86/crypto/aes-x86_64-asm_64.S ./arch/x86/crypto/aes-i586-asm_32.S ./arch/x86/crypto/salsa20-x86_64-asm_64.S ./arch/x86/crypto/twofish-i586-asm_32.S ./drivers/lguest/x86/switcher_32.S
Спасибо сказали: