Форум программистов, компьютерный форум, киберфорум
ОС на Assembler
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
16 / 1 / 0
Регистрация: 24.07.2018
Сообщений: 22
1

Создание загрузочной флешки

12.09.2018, 19:15. Просмотров 2088. Ответов 14
Метки нет (Все метки)


Здравствуйте, я написал подобие ОС. Скомпилировал через emu8086, получил iso файл через PowerISO. Образ с QEMU грузится и полноценно работает. Но вот вопрос: Как создать загрузочную флешку, чтобы она загрузилась на любом пк, не используя программу Rufus (выдаёт ошибку типа образ не поддерживается), UNetBootin (не загружается ОС) и без UltraISO (при загрузке с флешке там на экране мелькает сообщение о том, что флешка смонтирована собственно в программе UltraISO, а моего "хеллоу ворлда" нет)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2018, 19:15
Ответы с готовыми решениями:

Создание загрузочной флешки
Какие существуют программы под линукс для создания загрузочной флешки с Win10 например? Спасибо.

Создание загрузочной флешки
нужно создать загрузочную флешку на мс-дос с файловым менеджером и возможностью доступа к дискам...

Создание загрузочной флешки
Добрый день. Скачал у друга файлы Win8 с загрузочной флешки. Во всех инструкциях по созданию...

Создание загрузочной флешки
подскажите как установить винду со флешки? пробовал качать всякие утилиты типа WinSetupFromUSB, но...

__________________
Помогаю в написании студенческих работ здесь.
14
1347 / 508 / 68
Регистрация: 21.07.2015
Сообщений: 1,266
13.09.2018, 00:04 2
Загрузочный сектор. Не загружается InsydeH20
1
Эксперт Hardware
5175 / 1835 / 344
Регистрация: 29.07.2014
Сообщений: 2,786
Записей в блоге: 5
13.09.2018, 01:47 3
Цитата Сообщение от A1lpy Посмотреть сообщение
Как создать загрузочную флешку, чтобы она загрузилась на любом пк, не используя программу Rufus
нужны драва юсби AHCI/OHCI, иначе ты в жопе
1
1347 / 508 / 68
Регистрация: 21.07.2015
Сообщений: 1,266
13.09.2018, 02:11 4
Цитата Сообщение от R71MT Посмотреть сообщение
нужны драва юсби AHCI/OHCI, иначе ты в жопе
1. дрова для первичной загрузки не нужны (они есть в BIOS'е)
2. AHCI вообще к USB отношения не имеет.
2
Эксперт Hardware
5175 / 1835 / 344
Регистрация: 29.07.2014
Сообщений: 2,786
Записей в блоге: 5
13.09.2018, 02:42 5
1. хорошо.. если есть, то нужно знать, как с ними общаться
2. OHCI дров вообще нет в системе, их все поддерживает AHCI по убыванию.
хотя биос-биосу рознь.. не буду утверждать..

Добавлено через 6 минут
Цитата Сообщение от R71MT Посмотреть сообщение
их все поддерживает AHCI по убыванию.
сорян.. не AHCI, а EHCI точно..
развелось их как кур не резаных

Добавлено через 5 минут
хотя третьему юсби уже маловато будет ehci,
но фри не поддерживает биос не в каком поколении. только юсби2, ито по желанию
1
1347 / 508 / 68
Регистрация: 21.07.2015
Сообщений: 1,266
13.09.2018, 13:17 6
Цитата Сообщение от R71MT Посмотреть сообщение
хотя третьему юсби уже маловато будет ehci,
xhci

Добавлено через 19 секунд
Цитата Сообщение от R71MT Посмотреть сообщение
но фри не поддерживает биос не в каком поколении. только юсби2, ито по желанию
ничего не понял
0
16 / 1 / 0
Регистрация: 24.07.2018
Сообщений: 22
13.09.2018, 19:31  [ТС] 7
Цитата Сообщение от R71MT Посмотреть сообщение
нужны драва юсби AHCI/OHCI, иначе ты в жопе
где их найти и как загрузить на флешку?
0
Модератор
1213 / 649 / 121
Регистрация: 23.07.2018
Сообщений: 2,102
Записей в блоге: 3
14.09.2018, 16:03 8
Если что-то там мелькает при попытке загрузки, возможно, всё заработает и без драйверов.
Как я понимаю, у подобия ОС 16-битный код?
Тогда нужно, чтобы в первых секторах флешки были загрузчики, готовые или самодельные, которые загрузят остальной код. То, что обсуждается в теме, упомянутой в первом ответе.
0
3176 / 1752 / 468
Регистрация: 28.02.2015
Сообщений: 3,561
14.09.2018, 18:30 9
Цитата Сообщение от politoto Посмотреть сообщение
Тогда нужно, чтобы в первых секторах флешки были загрузчики, готовые или самодельные, которые загрузят остальной код. То, что обсуждается в теме, упомянутой в первом ответе.

В MBR=512-ть байт, полноценный загрузчик не загнать.
Грузятся первые 512-ть байт, которые подгружают (где остальные байты, на диске не важно, главное, чтобы MBR знал), нужный софт загрузчика, и только после это саму ОСЬ
0
16 / 1 / 0
Регистрация: 24.07.2018
Сообщений: 22
14.09.2018, 20:37  [ТС] 10
Цитата Сообщение от politoto Посмотреть сообщение
Как я понимаю, у подобия ОС 16-битный код?
Да. Именно 16-битная ОС.

Добавлено через 2 минуты
Цитата Сообщение от politoto Посмотреть сообщение
Тогда нужно, чтобы в первых секторах флешки были загрузчики, готовые или самодельные, которые загрузят остальной код. То, что обсуждается в теме, упомянутой в первом ответе.
Т.е. в коде ничего менять не нужно?
0
516 / 318 / 60
Регистрация: 29.03.2013
Сообщений: 657
15.09.2018, 08:12 11
Цитата Сообщение от Constantin Cat Посмотреть сообщение
В MBR=512-ть байт, полноценный загрузчик не загнать.
Для такого утверждения необходимо для начала определить термин "полноценный загрузчик", а то сколько людей, столько и мнений будет о том, что считать "полноценным загрузчиком".
Ну а если отбросить сигнатуру и таблицу разделов, то останется 446 байт (при наличии винды на компе - она отожрёт ещё несколько байт на некий ID).
0
6557 / 2652 / 365
Регистрация: 17.02.2013
Сообщений: 3,884
15.09.2018, 11:46 12
Цитата Сообщение от Constantin Cat Посмотреть сообщение
В MBR=512-ть байт, полноценный загрузчик не загнать.
Загрузочный сектор MS-DOS, который грузил IO.SYS он полноценный загрузчик или нет ? Просто договорились, что IO.SYS первый файл в файловой системе и не фрагментирован и все грузилось. Также и со своей осью можно сделать. Чтобы лежала первой в файловой системе и непрерывно и тогда можно подсосать ее в память кодом в 512 байт целиком.
0
3 / 2 / 4
Регистрация: 10.05.2008
Сообщений: 146
28.10.2018, 23:15 13
Можно написать свой очень простенький загрузчик.
Я давно такой писал для дискетки (сегмен - 512 байт, сектор, цилидр, головка), но как оказалось этот загрузчик можно применить и для флешки ничего не меняя. Вместо сегментов, цилиндров и т.д. будут грузиться по 512 байт по порядку.
Вот информация о такой загрузке:
http://www.codenet.ru/progr/dos/int_0012.php

Вот сам код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;-------------------------------Текст программы.--------------------------------
 
PROG segment
assume cs:PROG, ss:PROG, ds:PROG, es:PROG
 
 
org 7c00h
 
 
Start:
 
 
cli
mov ax,cs
mov ss,ax
mov ds,ax
 
xor ax,ax
mov es,ax
mov ch,0h
mov ah,2h
mov al,17d
mov cl,2h
mov dh,0h
mov dl,80h
mov bx,7e00h
int 13h
sti
jmp dword ptr perex
 
metzagr1:
jmp metzagr1
 
;------------------------------------Данные.------------------------------------
 
perex dw 7e00h,0h
 
      db 510-($-Start) dup(0)
      db 55h,0aah
 
;-------------------------------------------------------------------------------
 
 
PROG ends
end Start
 
;-------------------------------------------------------------------------------
Скомпиленный образ пишем в первые 512 байт флешки, в линуксе можно записать командой:

Bash
1
dd if=/путь к файлу/zagr.img of=/dev/файл устройства флешки bs=512 count=1
Почему org 7c00h

По этому адресу (в CS я так подозреваю ноль) биос будет грузить этот код, так как в начале памяти идут вектора прерываний.

mov bx,7e00h
это следующий адрес в памяти за нашими 512 байтами - загрузчик, собственно наша ОС.

db 510-($-Start) dup(0)
оставшееся место в 512 байтах нашего загрузчика, заполняем нулями.

db 55h,0aah
предпоследний и последний байты нашего загрузчика,
55AA - признак загрузочного сектора, без него биос его не загрузить в память.

Вместо:
Assembler
1
2
xor ax,ax
mov es,ax
Можно написать:
Assembler
1
mov es,ax


Assembler
1
2
metzagr1:
jmp metzagr1
Можно не писать, до этого бесконечного цикла дело не дойдёт.

Есть конечно способ более правильный, у меня он почему то не заработал, сейчас его код не наёду, в интернете надо искать.
0
6557 / 2652 / 365
Регистрация: 17.02.2013
Сообщений: 3,884
29.10.2018, 02:54 14
Цитата Сообщение от v4567 Посмотреть сообщение
Почему org 7c00h
По этому адресу (в CS я так подозреваю ноль)
В большинстве случаев ноль. Но не всегда. У некоторых BIOS от компов Compaq при загрузке CS=7C0h. Так-что начинать код MBR лучше так :
Assembler
1
2
3
4
5
xor ax,ax
mov ss,ax
mov sp,7C00h
mov ds,ax
;mov es,ax
1
3 / 2 / 4
Регистрация: 10.05.2008
Сообщений: 146
31.10.2018, 21:50 15
Если биос запишет в cs - 7C00h, тогда org 7C00h не нужен, если же org 7C00h оставить, то работать не будет.
Но как запись 7C00h в указатель стека - sp может дать универсальности я не знаю, может быть чего то недопонимаю....
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2018, 21:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Создание загрузочной флешки
Я создал загрузочную флешку. Поместил iso образы некоторых программ и ОС. В частности MHDD видит...

Создание загрузочной флешки
Всем привет! Заархивировал файловую систему ОС. Нужно сделать загрузочную флешку. Примерно...

Создание загрузочной флешки
Доброго времени суток. Я тут недавно взялась сделать загрузочную флешку, рьяно всем заявив, что...

Создание загрузочной флешки
Всем любителям Windows7 - Здравствуйте! Возможно задам здесь вопрос, который когда-нибудь здесь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.