summaryrefslogtreecommitdiffstats
path: root/tools/update_images
blob: cb75aebe882d826755850a864c0b8fc549d3cd9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/perl

@ARGV == 2 or die "Usage: $0 filename.img imagetype\n  ex. $0 cdrom-changedisk.img cdrom\n\nPut the old images (*.img), new vmlinuz, new modules.dep and new *.mar files in a fresh directory, and update each image file one by one.";

$file = $ARGV[0];
$img = $ARGV[1];

sub __ { print @_, "\n"; system(@_); }
sub _ { __ @_; $? and die; }

$topdir = '/tmp/updimg';

print "Updating boot image file $file of type $img\n";

_ "rm -rf $topdir";
_ "mkdir $topdir";

_ "mkdir $topdir/img";
_ "mount -o loop $file $topdir/img";

$rdz = glob("$topdir/img/*.rdz");
$rdz or die "Could not glob rdz file in $topdir/img/*.rdz\n";

_ "zcat $rdz > /tmp/meuh";
_ "mkdir $topdir/initrd";
_ "mount -o loop /tmp/meuh $topdir/initrd";

print "\n\tOld sizes:\n";
print `ls -l $topdir/img/vmlinuz`;
print `ls -l $topdir/initrd/modules/modules.mar`;
system("df $topdir/img");
print "\n";

_ "cp -f vmlinuz $topdir/img/vmlinuz";
_ "cp -f ${img}_modules.mar $topdir/initrd/modules/modules.mar";
_ "cp -f modules.dep $topdir/initrd/modules/modules.dep";

_ "umount $topdir/initrd";
_ "gzip -c /tmp/meuh > $rdz";

print "\n\tNew sizes:\n";
print `ls -l vmlinuz`;
print `ls -l ${img}_modules.mar`;
system("df $topdir/img");
print "\n";

_ "umount $topdir/img";