fix: boot sur disque dur par GRUB en multiboot2 64 bits UEFI - correction multiboot2 à faire sur system.sys
This commit is contained in:
parent
47e779ea1a
commit
48778a7ef6
Binary file not shown.
|
@ -1,4 +1,17 @@
|
||||||
all: harddisk.img.final floppy.img.final
|
all: harddisk.img.final floppy.img.final harddiskuefi.img.final
|
||||||
|
|
||||||
|
harddiskuefi.img.before:
|
||||||
|
(xz -d -k harddiskuefi.img.xz)
|
||||||
|
(dd if=harddiskuefi.img of=harddiskuefi.img.part1 skip=13672 bs=512)
|
||||||
|
(dd if=harddiskuefi.img of=harddiskuefi.img.before count=13672 bs=512;sync)
|
||||||
|
(mkdir ./mnt -p)
|
||||||
|
|
||||||
|
harddiskuefi.img.final: harddiskuefi.img.before
|
||||||
|
(mount.fuse-ext2 -o rw+ harddiskuefi.img.part1 ./mnt)
|
||||||
|
(cp ../system/system.sys ./mnt/boot/;sync)
|
||||||
|
(fusermount ./mnt -u)
|
||||||
|
(cat harddiskuefi.img.before > harddiskuefi.img.final)
|
||||||
|
(cat harddiskuefi.img.part1 >> harddiskuefi.img.final;sync)
|
||||||
|
|
||||||
harddisk.img.before:
|
harddisk.img.before:
|
||||||
(xz -d -k harddisk.img.xz)
|
(xz -d -k harddisk.img.xz)
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
dd if=/dev/zero of=cos2000.img count=10 bs=1048576
|
dd if=/dev/zero of=harddisk.img count=10 bs=1048576
|
||||||
parted -s -a cylinder cos2000.img mklabel msdos
|
parted -s -a cylinder harddisk.img mklabel msdos
|
||||||
parted -s -a cylinder cos2000.img mkpart primary ext2 63s 10M
|
parted -s -a cylinder harddisk.img mkpart primary ext2 63s 10M
|
||||||
parted -s -a cylinder cos2000.img toggle 1 boot
|
parted -s -a cylinder harddisk.img toggle 1 boot
|
||||||
lo=`losetup -f`
|
lo=`losetup -f`
|
||||||
echo ${lo}
|
echo ${lo}
|
||||||
losetup -P ${lo} cos2000.img
|
losetup -P ${lo} harddisk.img
|
||||||
mkfs.ext2 ${lo}p1
|
mkfs.ext2 ${lo}p1
|
||||||
mount ${lo}p1 /mnt
|
mount ${lo}p1 /mnt
|
||||||
grub-install --no-floppy --install-modules="biosdisk part_msdos ext2 configfile normal multiboot2" --boot-directory=/mnt/boot ${lo} --target=i386-pc
|
grub-install --no-floppy --install-modules="biosdisk part_msdos ext2 configfile normal multiboot2" --boot-directory=/mnt/boot ${lo} --target=i386-pc
|
||||||
echo -en "set timeout=4\nset default=0\nmenuentry "cos2000" {\nset root=(hd0,1)\nmultiboot2 /boot/system.sys\nboot\n}" > /mnt/boot/grub/grub.cfg
|
echo -en "set timeout=4\nset default=0\nmenuentry "cos2000" {\nset root=(hd0,1)\nmultiboot2 /boot/system.sys\nboot\n}" > /mnt/boot/grub/grub.cfg
|
||||||
umount /mnt
|
umount /mnt
|
||||||
losetup -d ${lo}
|
losetup -d ${lo}
|
||||||
xz -c cos2000.img > cos2000.img.xz
|
xz -c harddisk.img > harddisk.img.xz
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/bash
|
||||||
|
dd if=/dev/zero of=harddiskuefi.img count=10 bs=1048576
|
||||||
|
parted -s harddiskuefi.img mklabel gpt
|
||||||
|
parted -s -a cylinder harddiskuefi.img mkpart ESP fat16 63s 7M
|
||||||
|
parted -s -a cylinder harddiskuefi.img mkpart linux ext2 7M 10M
|
||||||
|
parted -s -a cylinder harddiskuefi.img toggle 1 boot
|
||||||
|
lo=`losetup -f`
|
||||||
|
echo ${lo}
|
||||||
|
losetup -P ${lo} harddiskuefi.img
|
||||||
|
mkfs.fat -F16 -s1 ${lo}p1
|
||||||
|
mkfs.ext2 ${lo}p2
|
||||||
|
mount ${lo}p1 /mnt
|
||||||
|
mkdir /mnt/grub
|
||||||
|
echo -en "(hd0) ${lo}\n(hd0,1) ${lo}p1\n(hd0,2) ${lo}p2" > /mnt/grub/device.map
|
||||||
|
grub-install --no-floppy --boot-directory=/mnt/ --efi-directory=/mnt/ ${lo} --install-modules="part_gpt ext2 configfile normal multiboot2" --locales=fr --target=x86_64-efi --no-nvram
|
||||||
|
mkdir /mnt/EFI/BOOT
|
||||||
|
grub-mkimage -d /usr/lib/grub/x86_64-efi -o /mnt/EFI/BOOT/bootx64.efi -p "(hd0,1)/grub/" -O x86_64-efi fat part_gpt ext2 configfile normal multiboot2
|
||||||
|
echo -en "set timeout=4\nset default=0\n\nmenuentry "cos2000" {\nmultiboot2 (hd0,2)/boot/system.sys\nboot\n}" > /mnt/grub/grub.cfg
|
||||||
|
umount /mnt
|
||||||
|
mount ${lo}p2 /mnt
|
||||||
|
mkdir /mnt/boot/
|
||||||
|
umount /mnt
|
||||||
|
losetup -d ${lo}
|
||||||
|
#xz -c harddiskuefi.img > harddiskuefi.img.xz
|
22
makefile
22
makefile
|
@ -7,6 +7,8 @@ floppy: boot/boot12.bin final/floppy.img.final
|
||||||
|
|
||||||
harddisk: final/harddisk.img.final
|
harddisk: final/harddisk.img.final
|
||||||
|
|
||||||
|
uefi: final/harddiskuefi.img.final
|
||||||
|
|
||||||
install:
|
install:
|
||||||
(sudo apt-get install nasm gcc qemu fusefat fuseext2 cgdb)
|
(sudo apt-get install nasm gcc qemu fusefat fuseext2 cgdb)
|
||||||
|
|
||||||
|
@ -29,8 +31,12 @@ backup: clean
|
||||||
|
|
||||||
test: all harddisk qemu
|
test: all harddisk qemu
|
||||||
|
|
||||||
|
test64: all uefi qemu64
|
||||||
|
|
||||||
retest: littleclean test
|
retest: littleclean test
|
||||||
|
|
||||||
|
retest64: all uefi qemu64
|
||||||
|
|
||||||
floppytest: floppy qemu-floppy
|
floppytest: floppy qemu-floppy
|
||||||
|
|
||||||
view:
|
view:
|
||||||
|
@ -38,6 +44,8 @@ view:
|
||||||
|
|
||||||
debug: debug-system
|
debug: debug-system
|
||||||
|
|
||||||
|
debug64: debug-system64
|
||||||
|
|
||||||
debug-boot: all harddisk qemu-debug
|
debug-boot: all harddisk qemu-debug
|
||||||
(sleep 2;cgdb -x ./debug/boot.txt)
|
(sleep 2;cgdb -x ./debug/boot.txt)
|
||||||
|
|
||||||
|
@ -47,12 +55,21 @@ debug-loader: all harddisk qemu-debug
|
||||||
debug-system: all harddisk qemu-debug
|
debug-system: all harddisk qemu-debug
|
||||||
(sleep 2;cgdb -x ./debug/system.txt)
|
(sleep 2;cgdb -x ./debug/system.txt)
|
||||||
|
|
||||||
|
debug-system64: all uefi qemu-debug64
|
||||||
|
(sleep 2;cgdb -x ./debug/system.txt)
|
||||||
|
|
||||||
qemu-debug:
|
qemu-debug:
|
||||||
(killall qemu-system-i386;qemu-system-i386 -m 1G -drive format=raw,file=./final/harddisk.img.final -s -S &)
|
(killall qemu-system-i386;qemu-system-i386 -m 1G -drive format=raw,file=./final/harddisk.img.final -s -S &)
|
||||||
|
|
||||||
|
qemu-debug64:
|
||||||
|
(killall qemu-system-x86_64;qemu-system-x86_64 -m 1G -drive format=raw,file=./final/harddiskuefi.img.final --bios /usr/share/qemu/OVMF.fd -s -S &)
|
||||||
|
|
||||||
qemu:
|
qemu:
|
||||||
(killall qemu-system-i386;qemu-system-i386 -m 1G -drive format=raw,file=./final/harddisk.img.final --enable-kvm -cpu host -s &)
|
(killall qemu-system-i386;qemu-system-i386 -m 1G -drive format=raw,file=./final/harddisk.img.final --enable-kvm -cpu host -s &)
|
||||||
|
|
||||||
|
qemu64:
|
||||||
|
(killall qemu-system-x86_64;qemu-system-x86_64 -m 1G -drive format=raw,file=./final/harddiskuefi.img.final --bios /usr/share/qemu/OVMF.fd --enable-kvm -cpu host -s &)
|
||||||
|
|
||||||
qemu-floppy:
|
qemu-floppy:
|
||||||
(killall qemu-system-i386;qemu-system-i386 -m 1G -fda ./final/floppy.img.final --enable-kvm -cpu host -s &)
|
(killall qemu-system-i386;qemu-system-i386 -m 1G -fda ./final/floppy.img.final --enable-kvm -cpu host -s &)
|
||||||
|
|
||||||
|
@ -66,7 +83,10 @@ final/floppy.img.final:
|
||||||
(cd final; make floppy.img.final)
|
(cd final; make floppy.img.final)
|
||||||
|
|
||||||
final/harddisk.img.final:
|
final/harddisk.img.final:
|
||||||
(cd final; make harddisk.img.final)
|
(cd final; make harddisk.img.final)
|
||||||
|
|
||||||
|
final/harddiskuefi.img.final:
|
||||||
|
(cd final; make harddiskuefi.img.final)
|
||||||
|
|
||||||
lib/libs.o:
|
lib/libs.o:
|
||||||
(cd lib; make)
|
(cd lib; make)
|
||||||
|
|
Loading…
Reference in New Issue