mirror of
https://github.com/ipxe/ipxe
synced 2026-01-05 11:21:28 +03:00
Initial revision
This commit is contained in:
40
src/util/makelilo.pl
Executable file
40
src/util/makelilo.pl
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use constant SYSSIZE_LOC => 500; # bytes from beginning of boot block
|
||||
use constant MINSIZE => 32768;
|
||||
|
||||
use strict;
|
||||
|
||||
use bytes;
|
||||
|
||||
$#ARGV >= 1 or die "Usage: $0 liloprefix file ...\n";
|
||||
open(L, "$ARGV[0]") or die "$ARGV[0]: $!\n";
|
||||
undef($/);
|
||||
my $liloprefix = <L>;
|
||||
close(L);
|
||||
length($liloprefix) >= 512 or die "LILO prefix too short\n";
|
||||
shift(@ARGV);
|
||||
my $totalsize = 0;
|
||||
for my $file (@ARGV) {
|
||||
next if (! -f $file or ! -r $file);
|
||||
$totalsize += -s $file;
|
||||
}
|
||||
my $pad = 0;
|
||||
if ($totalsize < MINSIZE) {
|
||||
$pad = MINSIZE - $totalsize;
|
||||
$totalsize = MINSIZE;
|
||||
}
|
||||
print STDERR "LILO payload is $totalsize bytes\n";
|
||||
$totalsize += 16;
|
||||
$totalsize >>= 4;
|
||||
substr($liloprefix, SYSSIZE_LOC, 2) = pack('v', $totalsize);
|
||||
print $liloprefix;
|
||||
for my $file (@ARGV) {
|
||||
next unless open(I, "$file");
|
||||
undef($/);
|
||||
my $data = <I>;
|
||||
print $data;
|
||||
close(I);
|
||||
}
|
||||
print "\x0" x $pad;
|
||||
exit(0);
|
||||
Reference in New Issue
Block a user