Pisanie systemu pod GRUB

0

Witam. Obecnie piszę swój system operacyjny. Ten system ma swojego bootloadera. Ale ten bootloader ma zbyt mało bajtów.
Chciałbym przejść z swojego bootloadera na bootloadera GRUB. Napisałem testowy fragment kodu i skompilowałem go do pliku .BIN, wszedłem w konsolę linuxa (W moim przypadku Debiana) i zalogowałem się jako root, przeniosłem plik Boot.BIN do katalogu / (W Debianie i chyba linuxie zamiast C:\ jest /) wszedłem w plik /boot/grub/grub.cfg i dodałem opcję wyboru mojego systemu. Podałem ścieżkę do tego pliku (/Boot.bin) uruchomiłem ponownie komputer (W moim przypadku był to Virtualbox), Pokazało mi się menu wyboru systemu, wybieram swój system, wszystko ładnie ładuje, ale pojawia się takie coś:

błąd: przedwczesny koniec pliku /Boot.bin

Nie wiem jak ten błąd naprawić. Czy trzeba dopisać jakiś fragment kodu? Czy za mało bajtów użyłem?
Proszę o odpowiedź, jak ten błąd naprawić.

0

GRUB nie oczekuje pliku elf or sth zamiast czystej binarki?

0

Jaki assembler?

1

Mało informacji… Jak wygląda konfiguracja? Jak kompilujesz i linkujesz? Jak masz rozłożone partycje? Może powinieneś trzymać to w /boot (zwykle odrębna mała partycja FAT)? W GRUBie podajesz ścieżkę na partycji, która jest podana w poleceniu set root=(...), to zwykle nie pokrywa się ze ścieżką dostępu w twoim linuksowym systemie plików. polecenie df powinno rozwiać wszelkie wątpliwości co do układu partycji.

0
elwis napisał(a):

Mało informacji… Jak wygląda konfiguracja? Jak kompilujesz i linkujesz? Jak masz rozłożone partycje? Może powinieneś trzymać to w /boot (zwykle odrębna mała partycja FAT)? W GRUBie podajesz ścieżkę na partycji, która jest podana w poleceniu set root=(...), to zwykle nie pokrywa się ze ścieżką dostępu w twoim linuksowym systemie plików. polecenie df powinno rozwiać wszelkie wątpliwości co do układu partycji.

Quarry038 odpowiedział:

Polecenie z moim systemem w pliku grub.cfg wgląda tak (Zmieniłem nazwę systemu):

menuentry "Nazwa systemu" {
set root=(hd0,1)
echo 'Napis1'
echo 'Napis2'

linux16 /Boot.bin

Kompiluję plik asm do pliku bin za pomocą nasm.
nasm -f bin -o Boot.bin Boot.asm

Plik mam na partycji /dev/sda5 (Według komendy którą mi podałeś.df)
Od razu mówię, że set root=(hd0,1) skopiowałem z pliku grub.cfg pobranego z internetu.

0
Quarry038 napisał(a):

Plik mam na partycji /dev/sda5 (Według komendy którą mi podałeś.df)
Od razu mówię, że set root=(hd0,1) skopiowałem z pliku grub.cfg pobranego z internetu.

No to jest na pewno źle. Strzelam, że powinno być set root=(hd0,4) albo set root=(hd0,5). Najpewniej byłoby to sprawdzić z GRUB shella. Tu masz wątek na ten temat: https://superuser.com/questions/182161/grub-how-find-partition-number-hd0-x

Też nie wiem czy to linux16 jest dobrze, ale jeśli tak znalazłeś… W każdym razie nie wyprzedzajmy faktów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1