OSDev http://osdev.su/ |
|
Версия 1 http://osdev.su/viewtopic.php?f=26&t=592 |
Страница 2 из 5 |
Автор: | Yoda [ 04 июл 2012, 10:26 ] |
Заголовок сообщения: | Re: Версия 1 |
Да уж поприличней QEMU будет... Не хочешь - как хочешь. Твои проблемы. Есть у меня (неоднократно проверенная практикой) теория Моськи-слона. Суть её заключается в следующем. Вот есть у нас, к примеру, ОС Windows. Её создатель - слон (MS), его все видят. Если эта ОС не заработает в Боксе, все будут говорить: "Говно ваш Бокс". Это потому что Бокс - Моська. Также эта ОС может не заработать на некоторых реальных компах. Скажем, на извращённых ноутбуках. Будут говорить: "Говно ваш комп". Хотя на самом деле, ни Бокс, ни комп вполне могут быть не говном, а нормальными продуктами и конкретная ошибка в самой ОС. Но вероятность ошибок в Боксе и компе больше, чем вероятность ошибок в винде, т.к. количество пользователей этой ОС на порядки превышает пользователей Бокса или компа какой-то там модели. С другой стороны, если сравнивать Бокс и Малинку, то Бокс - слон, а Малинка - Моська. В Боксе сейчас идут большинство операционок и если в нём не работает Малинка, то я могу конечно предположить, что ОС крутая и работает на всех реальных компах, и только в Боксе не работает из-за его ошибки, но вероятность этого мала и, скорей всего, или ОС содержит ошибки, или мало что поддерживает, так что не будет работать не только в Боксе, но и на куче реального железа. Т.к. у меня нет практического стимула насиловать свою флешку мутными процедурами, самое лучшее, что я могу сделать - это посмотреть ОС в Боксе. Поэтому пока она в Боксе не заработает, смотреть не на что. Вариант "ошибка на самом деле в Боксе" лечится багрепортом в поддержку Бокса. |
Автор: | Станислав [ 04 июл 2012, 13:16 ] |
Заголовок сообщения: | Re: Версия 1 |
Ну это всё понятно, но о конкретном, в версии 2.5 которую я смог найти при загрузке окно с параметрами очень странными после Qemu Manager и неудобными, бинарник не грузит так как видимо требователен к образу диска, чем Qemu, причё в Qemu есть много устройств. Сам код он либо грузится либо ни где не грузится, так как там ошибка, или третий вариант - это несовместимость(т.е. он грузится не везде). Мне достаточно загрузки на компах и в QEMU, а в других эмуляторах пока нету времяни разбираться, тем более оно мне ничего не даст и не просто там разобраться, особенно в создании самого образа диска, что является основным. Желание есть, т.к. Qemu мне реально помогло и возможно другие будут полезны. |
Автор: | Yoda [ 04 июл 2012, 17:17 ] |
Заголовок сообщения: | Re: Версия 1 |
Станислав писал(а): бинарник не грузит так как видимо требователен к образу диска, чем Qemu Ничего подобного! Образ диска - любой файл. В конфигурации указываешь параметры диска, больше, чем твой файл, например: ata0-master: type=disk, path=Malina.bin, cylinders=8, heads=16, spt=63 При старте Бокс конечно скажет, что твой образ вообще не кратен размеру сектора, и потом ещё ругнётся, что размер файла не соответствует указанному в геометрии диска, но работать будет. При старте в Боксе видно, что устанавливается соответствующий видео режим, но всё остаётся на уровне чёрного экрана. Станислав писал(а): и не просто там разобраться, особенно в создании самого образа диска, что является основным. У тебя УЖЕ есть образ диска. Это твой бинарный файл. В чём там разбираться-то??? |
Автор: | Станислав [ 04 июл 2012, 19:26 ] |
Заголовок сообщения: | Re: Версия 1 |
Понятно, а почему там нет тогда стандартного видео режима, он же самый стандартный, и где тогда его менять, в Qemu выбор из нескольких вариантов видео и сетевых и звуковых, что вполне логично. Теперь кратен размеру сектора мой бинарник, добавил. |
Автор: | stlw [ 04 июл 2012, 21:17 ] |
Заголовок сообщения: | Re: Версия 1 |
Дело не в видеорежиме. Графическая карточка в Bochs и QEMU одинаковая эмулируется, даже Video BIOS в QEMU из Bochs взят. Проблема в имидже диска, то есть в самом бинарнике. Вот так выглядит в логах Bochs нормльная загрузка с нормального имиджа (WinXP): Код: 00003183277i[BIOS ] ata0-0: PCHS=3120/16/63 translation=large LCHS=780/64/63 00007063412i[BIOS ] IDE time out 00020000005i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8 00307613255i[BIOS ] Booting from 0000:7c00 00319357171i[BIOS ] int13_harddisk: function 15, unmapped device for ELDL=81 00319703796i[BIOS ] *** int 15h function AX=e980, BX=007d not yet supported! А вот так malina.bin: Код: 00000000000p[IMG ] >>PANIC<< size of disk image must be multiple of 512 bytes 00000000000i[HD ] ata0-0: autodetect geometry: CHS=7/16/63 00000000000i[HD ] ata0-0: extra data outside of CHS address range ... 00004000000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8 00311891862e[HD ] calc_log_addr: out of bounds (7778/7778) 00311891862e[HD ] ide_read_sector() reached invalid sector 0, aborting вот собственно и все. после последнего "reached invalid sector 0, aborting" загрузка уже не продолжается. Ты когда бинарник делал, что имел в виду ? Что это диск ? Если да - то с какой геометрией ? Если нет - то что это тогда ? Станислав ЗЫ: Кстати, Qemu Manager никакого отношения к QEMU не имеет. Это стороннее приложение, которое делает конфиг для запуска QEMU. Никто не мешает тем же авторам сделать такое же приложение, которое будет делать .bocshrc - конфиг файл для Bochs. К сожалению пока никто не сделал Да, кстати, настроить .bocshrc с нуля ничуть не сложенее чем пройти Wizard в Qemu Manager, там все очень подробно в примерах расписано. Сразу видно, что ты FIDO софт в детстве не настраивал. Вспомнил бы конфиги T-mail и Golded с ностальгией Сообщения про образы дисков в Bochs отделены сюда. |
Автор: | Станислав [ 05 июл 2012, 04:17 ] |
Заголовок сообщения: | Re: Версия 1 |
Перед стартом Bosh тоже открывается какойто менеджер в 2.5. В MBR после 440 байта переписывал разметку флешки Код: times 440 - ($-$$) db 1
dd 0 dw 0 db 00h ;Признак активности раздела db 31 ;Начало раздела - головка db 16 ;Начало раздела - сектор db 2 ;Начало раздела - дорожка db 06h ;Код типа раздела fat 16 db 63 ;Конец раздела - головка db 255 ;Конец раздела - сектор db 202 ;Конец раздела - дорожка dd 6000 ;Смещение первого сектора dd 2005968 ;Количество секторов раздела db 48 dup(0) db 0x55, 0xAA |
Автор: | phantom-84 [ 06 июл 2012, 23:05 ] |
Заголовок сообщения: | Re: Версия 1 |
У меня ничего не открывается. Это видимо зависит от настроек. Структура образа с MBR-разметкой и одним разделом: Код: PART_STATE = 80h
PART_TYPE = 0Eh HEADS = 16 SPT = 63 file "../bootcode/disk/mbr/jumbo-3/jumbo-3.bin",440 dd ? db 0,0 db PART_STATE,1,1,0 db PART_TYPE,HEADS-1,(CYLINDERS-1) and 300h shr 2 + SPT,(CYLINDERS-1) and 0FFh dd SPT,(CYLINDERS*HEADS-1)*SPT db 3*16 dup 0 dw 0AA55h rb SPT*512-$ ; резерв до конца нулевой дорожки ; том (может быть меньше раздела) db HEADS*SPT*512-1 - ($+HEADS*SPT*512-1) mod (HEADS*SPT*512) dup 0 CYLINDERS = $/(HEADS*SPT*512) |
Автор: | Станислав [ 08 июл 2012, 07:17 ] |
Заголовок сообщения: | Re: Версия 1 |
Начинаю создавать кодеки для jpg png в этих форматах блоки с данными по которым можно прыгать и брать нужные, для начала просто сделаю перебор блоков. Задача графического кодка перевести данные из своего формата в обычный для системы н*м с цветом пикселя, это может быть и векторный формат в котором храняться точки и системными функциями нарисовать линии соединяющие эти точки, линии есть и обычные и бизье с сглаженными краями. Несколько лет назад на дельфи читал уже блоки для jpeg. Если ктонибудь знает какой нить формат файла и желает написать кодек, то пишите в лс дам ссылку на доку с объектами и вообще если ктото хочет стать разработчиком ОС Малинка и есть что добавить, то такая возможность есть. Разработчик ОС Малинка должен будет писать либо кодеки либо дрова, либо ещё чтонибудь и заниматься её продвижением в массы. Чем больше полезного кода разработчик напишет тем больше будет у него и прав и прибыли. |
Автор: | Станислав [ 10 июл 2012, 04:19 ] |
Заголовок сообщения: | Re: Версия 1 |
При запуске файла jpg, png теперь у меня список блоков с их размером, правда в jpg не полный, после блока SOS они прерываются, ктонить вкурсе, или все на пляж пошли? В моей ОСи теперь есть возможность запускать проги без переделки адресов, а просто передавать адрес загрузки в ebp, причём это будет адрес на первый объект - главную форму, в её обработчик с номером вызываемой команды 7 в dl - запуск формы. Из ОС я вызываю после загрузки файла модуя с диска как jmp dword[ebp+12]. В ebp адрес загрузки модуля, сам модуль соответственно начинается с данных объекта Код: frm_dev dd cur1 db 255 ;синий db 0 ;зелёный db 0 ;красный db 1 ;тип dd 0 ;адрес отрисовки 8 dd device_events ;адрес сообшений 12 dd 0 ;адрес формы 16 db 220 ;синий 20 db 220 ;зелёный db 220 ;красный db 0 ;флаг dw 390 ;w для формы 24 dw 430 ;h для формы 26 dw 50 ;x для формы 28 dw 50 ;y для формы 30 dd sys_0 ;вверх к хозяину 32 dd frm_tx1 ;вниз 36 dd 0 ;след 40 dd 0 ;пред 44 dd 0 ; 48 dd 0 ; 52 dd 0 ; 56 dd 0 ; 60 dd 0 ; 64 dd 0 ; 68 device_events:cmp dl,0 jnz @f ret @@: cmp dl,1 jnz @f cmp byte[def0],1 jnz .1 jmp dword[ebp+52] .1: jmp dword[sys_0+60] @@: cmp dl,2 jnz @f ; mov ebp,sys_0 ;вверх ; jmp dword[ebp+8] ;нарисовать @@: cmp dl,3 jnz @f jmp dword[ebp+60] @@: cmp dl,4 jnz @f jmp dword[ebp+64] @@: cmp dl,5 jnz @f ret @@: cmp dl,7 ;откроем форму jnz @f Кстати у меня много кода которого я перевёл в бинарник и он нормально работает, так как это функции которые просто считают а данные берут только из ebp. Те же функции рисования шрифтов линий у меня цепляются как бинарники linea file '8\line1.bin' и вызываются как call linea. Можно сделать как jmp dword[ebp+80] если в объекте на память 80-83 записать linea. В самом ebp как вы догадались данные для этой функции все есть. |
Автор: | Freeman [ 10 июл 2012, 22:14 ] |
Заголовок сообщения: | Re: Версия 1 |
Станислав писал(а): В самом ebp как вы догадались данные для этой функции все есть. Странное соглашение о вызовах. |
Страница 2 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |