[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
SPT& &bugreport about ext2
From: |
Vincent Pelletier |
Subject: |
SPT& &bugreport about ext2 |
Date: |
Sun, 12 Dec 2004 20:46:38 +0100 |
User-agent: |
Mozilla Thunderbird 0.9 (X11/20041124) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi.
I'm the main developer of the SPT project, aimed at replacing the
current DOS partition system, and maybe to offer a unified and
open-sourced partitioning system. (more details on http://spt.sysif.net/ )
I've integrated my system to the grub 2 current cvs version (see CVSweb
at cvs.sysif.net, "spt_base" module, "grub2" folder), and I have met
some problems in its integration that I would like to mention here.
1) My test computer wasn't able to boot grub 2 when booting from disk,
but it was ok when booting from a floppy. It was because that piece of
code was removed in boot/i386/pc/boot.S compared to legacy's stage 1 :
(line 111)
/*
* This is a workaround for buggy BIOSes which don't pass boot
* drive correctly. If GRUB is installed into a HDD, do
* "orb $0x80, %dl", otherwise "orb $0x00, %dl" (i.e. nop).
*/
.byte 0x80, 0xca
boot_drive_mask:
.byte 0x00
(the last byte has to be set to 0x80 to make it work)
Why was it removed ?
2) I am now stuck at a memory allocation problem. When I set the dos
partition number to make grub2 read the grub.cfg file, it results in
"alloc magic is broken at 0x1f640".
More details:
- -disk partitioned in SPT format
- -4 partitions (1 swap, 3 ext2 all fsck'ed)
- -/boot/grub exists in 2nd partition (1st ext2), but not the config file
(when the config file is present, the menu is partialy drawn and the
computer freezes)
- -dos partition number : 01 00 00 00 (big endian)
- -bsd partition number : FF FF FF FF (big endian)
- -makes qemu segfaults, bochs works fine
- -works fine with partitions 2 & 3 (prefix variable is correctly set and
I get the prompt)
I found that it cames from a grub_free call in the last lines of
grub_ext2_dir function, and caused by "grub_ext2_iterate_dir (fdiro,
iterate);".
By the way, I noticed that a freed memory area is accessed :
fail:
~ grub_free (data);
~ if (fdiro != &(data->diropen))
~ grub_free (fdiro);
Moreover, the "fail" label is reached when data malloc fails, so it
tries to free an unallocated area in case of problem.
Vincent Pelletier
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFBvKAeFEQoKRQyjtURAlSTAJ9zGiVR/K5LCP1dy1pCqAVD5pMrewCcDFBc
U+TcX3cxQLyvJmlZzqN6yNQ=
=wlrY
-----END PGP SIGNATURE-----
- SPT& &bugreport about ext2,
Vincent Pelletier <=