Hi Bernd,

> On Feb 27, 2023, at 12:57 PM, Bernd Boeckmann via Freedos-devel 
> <freedos-devel@lists.sourceforge.net> wrote:
> 
> 
>> Am 27.02.2023 um 17:28 schrieb jer...@shidel.net:
>> 
>> I think I will go with a max partition of 2GB (FAT16) on real hardware and 
>> the entire disk (FAT32) inside Virtual Machines. 
> 
> If you want it to be FAT-16 I would suggest not doing /PRIO:2048 but instead 
> /PRIO:2047 or even less, because for the common CHS geometry .../254/63, 2048 
> MB gets rounded up to 2055 MB. And that is beyond the maximum size of 
> „compatible“, 64 sectors per cluster, FAT-16 partitions.

Just going to use 2000. 

After all, based on how hard drive manufacturers calculate sizes a 2GB hard 
disk would only be about 1907mb. 

> 
> FDISK always rounds the user specified size up to the next cylinder boundary. 
> It does not restrict the partition size but unconditionally sets the 
> partition type to FAT-16 if you specify /PRIO. So depending on the behaviour 
> of the format utility, it would either create a FAT-16 with a cluster size of 
> 128 sectors or waste space at the end of the partition.
> 
> Greetings, Bernd

After a little more testing, here is an interesting wrinkle found while 
experimenting on a 500mb VM hard drive.

fdisk 1 /clear /prio:2000               ; no problem, creates a 500mb FAT16
fdisk 1 /clear /pri:100,100             ; no problem, creates a 500mb FAT32

However, when the disk already has a partition and is full…

fdisk 1 /prio:2000                      ; no error, no partition created, exit 
errorlevel 0
fdisk 1 /pri:100,100                    ; divide error, no partition created, 
exit errorlevel 3

Since the installer first tests for partitions and only auto-partitions an 
empty drive, this is probably not a big problem. Unless for some reason, FDISK 
cannot create the partition for some unknown reason. 

Anyhow, I’ve implemented the partitioning changes in both installers. 
Basically, their new logic is something like this:

if  AnyPartitions(drive) = true  then begin
        FDISK drive
end else begin
        If IsVirtualMachine = true then begin
                FDISK drive /PRI:100,100
        end else begin
                FDISK drive /PRIO:2000
        end
        if ErrorOccured = true then begin
                FDISK drive
        end
end
REBOOT

Should be good. Guess we will find out on Wednesday. 

:-)

Jerome

_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to