niewidoczny customowy bootloader

niewidoczny customowy bootloader
EM
  • Rejestracja:około rok
  • Ostatnio:około rok
  • Postów:7
1

Dzien dobry ostatnio korzystajac z nasm asm postanowilem pobawic sie w tworzenie malego bootloadera, korzystajac z qemu proces testowania bootladera przechodzil bez problemu , rowniez po konwersji pliku .bin na .img podajac floppy disk jako owy plik .img na VirtualBoxie bootloader dziala bez problemu.Jednak chcialem na fizycznym sprzecie potestowac moj bootloader w tym celu przy pomocy dd nadpisywalem boot sector w moim pendrive.
$sudo dd if=bootloader.bin of=/dev/sda1
podrzucam wiecej info o dysku

Kopiuj
Disk /dev/sda: 29.3 GiB, 31457280000 bytes, 61440000 sectors
Disk model: ProductCode     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1  *     2048 61439999 61437952 29.3G 86 NTFS volume set

Sam kod nie jest niczym specjalnym

Kopiuj
jmp $
times 510 - ($ - $$) db 0
dw 0xAA55

Po ustawieniu w biosie dysku z ktorego powinnien on wystartowac na pendrive z bootloaderem po restarcie dostaje imformacje
This is not a bootable disk. Please insert a bootable floppy

Nadpisanie sektora w pendrive powiodlo sie
screenshot-20231231153855.pngscreenshot-20231231153912.png
Jak przetestowac moj bootloader na fizycznym sprzecie? Na nowszym biosie boot manager nawet nie widzi dysku a na starszym zwraca blad o ktorym wspomnialem wczesniej.

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:11 dni
1

A jaki komputer? Jeśli ma mniej niż 10 lat, na pewno ma już UEFI, a nie BIOS. Poszukaj w konfiguracji UEFI opcji "Legacy boot" czy czegoś takiego. Jeśli nie ma, to musiałbyś nadpisać firmware, a z tym już więcej zabawy (oczywiście zakładając że np coreboot wspiera twój sprzęt).

W dzisiejszych czasach pisze się takie rzeczy w C używając UEFI/Tianocore. Nie ma już czegoś takiego jak kod wykonwyalny MBR tylko jest osobna partycja z programami ładującymi. Jak chcesz się nauczyć czegoś praktycznego, pisz to pod UEFI.

EDK2:
https://github.com/tianocore/edk2

UEFI dla QEMU na ubuntu:
https://wiki.ubuntu.com/UEFI/OVMF


edytowany 6x, ostatnio: elwis
EM
  • Rejestracja:około rok
  • Ostatnio:około rok
  • Postów:7
0
elwis napisał(a):

A jaki komputer? Jeśli ma mniej niż 10 lat, na pewno ma już UEFI, a nie BIOS. Poszukaj w konfiguracji UEFI opcji "Legacy boot" czy czegoś takiego. W dzisiejszych czasach pisze się takie rzeczy w C używając UEFI/Tianocore. Nie ma już czegoś takiego jak kod wykonwyalny MBR tylko jest osobna partycja z programami ładującymi.

Bralem sie juz za poszukiwanie legacy boota na moim starym lapku ktorego uzywam Biosu InsydeH20 Rev 3.5 gdzie w zakladce boot pozostaje mi Boot priority order do przydzialu.

AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 dni
  • Postów:3561
1

W kwestii formalnej.
Jak robisz "bootloader" (nie neguję tego słowa) w stosunku do komputera, to już nie bardzo "embedded", przynajmniej nie tak, jak ja rozumiem to słowo

Bootloader w sensie embedded (to samo słowo, ale mocno inna rzeczywistość) to jakby Arduino

Tak czytam co napisałem ... chyba odrózniłbym to, co wywołuje ładowanie loadER, a to co jest ładowane (przedmiot ładowania, bootsector, bootimage, bootpartition)
Fakt, w systemach operacyjnych (inaczej niż bare metal embedde) to rzeczywistość warstwowa / wielopoziomowa


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)