123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- --- syslinux-5.00-orig/utils/isohybrid.pl 2012-12-06 21:51:22.000000000 +0200
- +++ syslinux-5.00/utils/isohybrid.pl 2013-02-07 18:55:28.423760149 +0200
- @@ -44,6 +44,7 @@
- 'id' => [0, 0xffffffff],
- 'hd0' => [0, 2],
- 'partok' => [0, 1],
- + 'fat' => [0, 1],
- );
-
- # Boolean options just set other options
- @@ -53,6 +54,7 @@
- 'ctrlhd0' => ['hd0', 2],
- 'nopartok' => ['partok', 0],
- 'partok' => ['partok', 1],
- + 'fatfirst' => ['fat', 1],
- );
-
- sub usage() {
- @@ -66,7 +68,8 @@
- " -id Specify MBR ID (default random)\n",
- " -forcehd0 Always assume we are loaded as disk ID 0\n",
- " -ctrlhd0 Assume disk ID 0 if the Ctrl key is pressed\n",
- - " -partok Allow booting from within a partition\n";
- + " -partok Allow booting from within a partition\n",
- + " -fatfirst Create a small fat partition first\n";
- exit 1;
- }
-
- @@ -221,9 +224,9 @@
-
- # Print partition table
- $offset = $opt{'offset'};
- -$psize = $c*$h*$s - $offset;
- +$psize = $c*$h*$s - $offset - 1;
- $bhead = int($offset/$s) % $h;
- -$bsect = ($offset % $s) + 1;
- +$bsect = ($offset % $s) + 1 + 1;
- $bcyl = int($offset/($h*$s));
- $bsect += ($bcyl & 0x300) >> 2;
- $bcyl &= 0xff;
- @@ -233,10 +236,29 @@
- $fstype = $opt{'type'}; # Partition type
- $pentry = $opt{'entry'}; # Partition slot
-
- +$offset += $psize;
- +$psize1 = $cylsize/512;
- +$bhead1 = int(($offset+1)/$s) % $h;
- +$bsect1 = (($offset+1) % $s) + 1;
- +$bcyl1 = int(($offset+1)/($h*$s));
- +$bsect1 += ($bcyl1 & 0x300) >> 2;
- +$bcyl1 &= 0xff;
- +$ehead1 = $h-1;
- +$esect1 = $s;
- +$ecyl1 = $bcyl1;
- +print "ehead1=$ehead1 esect1=$esect1 ecyl1=$ecyl1\n";
- +
- +if ( $opt{'fat'} == 1 ) {
- + $pentry = 2;
- +}
- +
- for ( $i = 1 ; $i <= 4 ; $i++ ) {
- - if ( $i == $pentry ) {
- + if ( $opt{'fat'} == 1 && $i == 1 ) {
- + $mbr .= pack("CCCCCCCCVV", 0x00, $bhead1, $bsect1, $bcyl1, 0xc,
- + $ehead1, $esect1, $ecyl1, $offset+1, $psize1);
- + } elsif ( $i == $pentry ) {
- $mbr .= pack("CCCCCCCCVV", 0x80, $bhead, $bsect, $bcyl, $fstype,
- - $ehead, $esect, $ecyl, $offset, $psize);
- + $ehead, $esect, $ecyl, $offset + 1, $psize);
- } else {
- $mbr .= "\0" x 16;
- }
- @@ -251,6 +273,18 @@
- print FILE "\0" x $padding;
- }
-
- +# Create fat image and put it into the file
- +if($opt{'fat'}) {
- + open(FATFILE, "> $file.fat") or die "$0: cannot open $file.fat: $!\n";
- + print FATFILE "\0" x ($psize1*512);
- + close(FATFILE);
- + system("/usr/sbin/mkfs.vfat -n RESIZE_ME $file.fat") and die "$0: cannot format fat\n";
- + open(FATFILE, "< $file.fat");
- + print FILE <FATFILE>;
- + close(FATFILE);
- + unlink("$file.fat");
- +}
- +
- # Done...
- close(FILE);
-
- --- syslinux-5.00-orig/utils/isohybrid.in 2012-12-06 21:51:22.000000000 +0200
- +++ syslinux-5.00/utils/isohybrid.in 2013-02-07 18:55:28.423760149 +0200
- @@ -44,6 +44,7 @@
- 'id' => [0, 0xffffffff],
- 'hd0' => [0, 2],
- 'partok' => [0, 1],
- + 'fat' => [0, 1],
- );
-
- # Boolean options just set other options
- @@ -53,6 +54,7 @@
- 'ctrlhd0' => ['hd0', 2],
- 'nopartok' => ['partok', 0],
- 'partok' => ['partok', 1],
- + 'fatfirst' => ['fat', 1],
- );
-
- sub usage() {
- @@ -66,7 +68,8 @@
- " -id Specify MBR ID (default random)\n",
- " -forcehd0 Always assume we are loaded as disk ID 0\n",
- " -ctrlhd0 Assume disk ID 0 if the Ctrl key is pressed\n",
- - " -partok Allow booting from within a partition\n";
- + " -partok Allow booting from within a partition\n",
- + " -fatfirst Create a small fat partition first\n";
- exit 1;
- }
-
- @@ -221,9 +224,9 @@
-
- # Print partition table
- $offset = $opt{'offset'};
- -$psize = $c*$h*$s - $offset;
- +$psize = $c*$h*$s - $offset - 1;
- $bhead = int($offset/$s) % $h;
- -$bsect = ($offset % $s) + 1;
- +$bsect = ($offset % $s) + 1 + 1;
- $bcyl = int($offset/($h*$s));
- $bsect += ($bcyl & 0x300) >> 2;
- $bcyl &= 0xff;
- @@ -233,10 +236,29 @@
- $fstype = $opt{'type'}; # Partition type
- $pentry = $opt{'entry'}; # Partition slot
-
- +$offset += $psize;
- +$psize1 = $cylsize/512;
- +$bhead1 = int(($offset+1)/$s) % $h;
- +$bsect1 = (($offset+1) % $s) + 1;
- +$bcyl1 = int(($offset+1)/($h*$s));
- +$bsect1 += ($bcyl1 & 0x300) >> 2;
- +$bcyl1 &= 0xff;
- +$ehead1 = $h-1;
- +$esect1 = $s;
- +$ecyl1 = $bcyl1;
- +print "ehead1=$ehead1 esect1=$esect1 ecyl1=$ecyl1\n";
- +
- +if ( $opt{'fat'} == 1 ) {
- + $pentry = 2;
- +}
- +
- for ( $i = 1 ; $i <= 4 ; $i++ ) {
- - if ( $i == $pentry ) {
- + if ( $opt{'fat'} == 1 && $i == 1 ) {
- + $mbr .= pack("CCCCCCCCVV", 0x00, $bhead1, $bsect1, $bcyl1, 0xc,
- + $ehead1, $esect1, $ecyl1, $offset+1, $psize1);
- + } elsif ( $i == $pentry ) {
- $mbr .= pack("CCCCCCCCVV", 0x80, $bhead, $bsect, $bcyl, $fstype,
- - $ehead, $esect, $ecyl, $offset, $psize);
- + $ehead, $esect, $ecyl, $offset + 1, $psize);
- } else {
- $mbr .= "\0" x 16;
- }
- @@ -251,6 +273,18 @@
- print FILE "\0" x $padding;
- }
-
- +# Create fat image and put it into the file
- +if($opt{'fat'}) {
- + open(FATFILE, "> $file.fat") or die "$0: cannot open $file.fat: $!\n";
- + print FATFILE "\0" x ($psize1*512);
- + close(FATFILE);
- + system("/usr/sbin/mkfs.vfat -n RESIZE_ME $file.fat") and die "$0: cannot format fat\n";
- + open(FATFILE, "< $file.fat");
- + print FILE <FATFILE>;
- + close(FATFILE);
- + unlink("$file.fat");
- +}
- +
- # Done...
- close(FILE);
-
|