summaryrefslogtreecommitdiffstats
path: root/make_boot_img
diff options
context:
space:
mode:
Diffstat (limited to 'make_boot_img')
-rwxr-xr-xmake_boot_img286
1 files changed, 29 insertions, 257 deletions
diff --git a/make_boot_img b/make_boot_img
index 2a309d8bb..e4bea7468 100755
--- a/make_boot_img
+++ b/make_boot_img
@@ -1,300 +1,72 @@
#!/usr/bin/perl
-@ARGV >= 2 or die "usage: $0 <image> cdrom|hd|network|blank|pcmcia|live|tftp|tftprd\n";
-
-use Config;
-Config->import;
-my ($arch) = $Config{archname} =~ /(.*)-/;
-my $corporate = $ENV{CORPORATE} && " corporate"; #- use this for building a corporate version.
+@ARGV >= 2 or die "usage: $0 <image> cdrom|hd|network|network_ks\n";
($img, $type) = @ARGV;
-$instdir = "install";
-$mnt = "/tmp/drakx_mnt";
-$mke2fs = "/sbin/mke2fs -q -m 0 -F -s 1";
-
+$ks = "kickstart=floppy" if $type =~ s/_ks//;
+$mnt = "/mnt/disk";
if ($>) {
$sudo = "sudo";
$ENV{PATH} = "/sbin:/usr/sbin:$ENV{PATH}";
}
-sub __ { print @_, "\n"; system(@_); }
-sub _ { __ @_; $? and die; }
-
-_ "$sudo mkdir $mnt" unless -e $mnt;
-_ "$sudo mkdir ${mnt}2" unless -e "${mnt}2";
$install = $ {{
- blank => "full-install",
- live => "full-install",
- tftp => "full-install",
- tftprd => "full-install",
- pcmcia => "full-install",
network => "install",
cdrom => "local-install",
- hd => "local-install",
- live64 => "full-install",
- tftp64 => "full-install",
- tftprd64 => "full-install",
- pcmcia64 => "full-install",
- network64 => "install",
- cdrom64 => "local-install",
- hd64 => "local-install",
+ hd => "local-install"
}}{$type} or die;
-$img =~ /rdz$/ ? initrd($mnt, $img) : $::{"boot_img_$arch"}->($mnt, $img);
+$0 =~ /initrd/ ?
+ initrd($mnt, $img) :
+ boot_img($mnt, $img);
+
+sub __ { print @_, "\n"; system(@_); }
+sub _ { __ @_; $? and die; }
-sub install_s { _ "strip $_[0]"; _ "$sudo install $_[0] $_[1]" }
sub initrd {
my ($mnt, $img) = @_;
- my ($ltype, $I) = $type =~ /(.*?)(64)/; $ltype ||= $type;
my $tmp = "$ENV{HOME}/tmp/initrd";
- my $tar = "$instdir/install1_$type.$arch.tar.bz2";
- -e $tar or $tar = "$instdir/install1.$arch.tar.bz2";
+
+ _ "install -s install/installinit/init install/install1/sbin/init";
+ _ "install -s install/$install install/install1/sbin/install";
__ "$sudo umount $tmp $mnt 2>/dev/null";
_ "dd if=/dev/zero of=$tmp bs=1k count=2000";
- _ "$mke2fs $tmp";
- _ "$sudo mount -t ext2 $tmp $mnt -o loop";
-
- _ "$sudo tar xyC $mnt -f $tar";
- install_s("$instdir/installinit/init", "$mnt/sbin");
- install_s("$instdir/$install", "$mnt/sbin/install");
-
- _ "$sudo cp -f install_${type}_modules/* $mnt/modules/" if -d "install_${type}_modules";
- _ "$sudo cp -f modules$I/${ltype}_modules.cgz $mnt/modules/modules$I.cgz" if $type !~ /blank/;
- _ "$sudo cp -f modules$I/modules.dep $mnt/modules/";
+ _ "echo y | mke2fs $tmp";
+ _ "$sudo mount $tmp $mnt -o loop";
+ _ "$sudo cp -a install/install1/* $mnt";
+ _ "$sudo install -d $mnt/modules";
+ _ "$sudo cp -f modules/${type}_modules.cgz $mnt/modules/modules.cgz";
+ _ "$sudo cp -f modules/modules.dep $mnt/modules/";
_ "$sudo umount $mnt";
-
-# Workaround for vfat-loop bug (quite touchy)
- _ "gzip -9f $tmp";
- _ "cp -f $tmp.gz $img";
- _ "rm -f $tmp.gz";
-# _ "gzip -9 -c $tmp > $img";
-# _ "rm -f $tmp";
+ _ "gzip -9 -c $tmp > $img";
+ _ "rm -f $tmp";
}
-sub boot_img_i386 {
+sub boot_img {
my ($mnt, $img) = @_;
__ "$sudo umount $mnt 2>/dev/null";
- if ($type eq "hd") {
- _ "bunzip2 -c $instdir/installinit/msgboot.img.bz2 > $img";
- } else {
- _ "bunzip2 -c $instdir/installinit/msgboot-graphicallogo.img.bz2 > $img";
- }
- _ "$sudo mount -t msdos -o umask=0 $img $mnt -o loop";
- _ "cat vmlinuz > $mnt/vmlinuz" if $type !~ /blank/;
- -f "$type.rdz" ? _ "cp -f $type.rdz $mnt" : initrd("${mnt}2", "$mnt/$type.rdz");
+ _ "bunzip2 -c install/installinit/emptyboot.img.bz2 > $img";
+ _ "$sudo mount -o umask=0 $img $mnt -o loop";
+ _ "cat vmlinuz > $mnt/vmlinuz";
+ initrd("${mnt}2", "$mnt/initrd.gz");
- my $timeout = 72;
output("$mnt/syslinux.cfg", "
default linux
-prompt 1
-timeout $timeout
-display boot.msg
-F1 help.msg
-F2 boot.msg
+prompt 0
label linux
kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type vga=788
-label vgalo
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type vga=785
-label vgahi
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type vga=791
-label vga16
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type vga16
-label text
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type text
-label patch
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type patch vga=788
-label expert
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type expert vga=788
-label rescue
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type rescue rw
-label oem
- kernel vmlinuz
- append ramdisk_size=32000 initrd=cdrom.rdz cdrom rescue oem rw
-label auto
- kernel vmlinuz
- append ramdisk_size=32000 initrd=$type.rdz $type auto_install=auto_inst.cfg.pl
-");
- _ "sync";
- _ "df $mnt";
-}
-
-sub boot_img_alpha {
- my ($mnt, $img) = @_;
-
- __ "$sudo umount $mnt 2>/dev/null";
- _ "dd if=/dev/zero of=$img bs=1k count=1440";
- _ "$mke2fs $img";
- _ "/sbin/e2writeboot $img /boot/bootlx";
- _ "$sudo mount -t ext2 $img $mnt -o loop";
- _ "cp -f vmlinux.gz $mnt" if $type !~ /blank/;
- -f "$type.rdz" ? _ "cp -f $type.rdz $mnt" : initrd("${mnt}2", "$mnt/$type.rdz");
-
- mkdir "$mnt/etc", 0777;
- output("$mnt/etc/aboot.conf",
-"0:vmlinux.gz initrd=$type.rdz rw ramdisk_size=32000 $type
-1:vmlinux.gz initrd=$type.rdz rw ramdisk_size=32000 text $type
+ append $ks initrd=initrd.gz mdkinst $type
");
+ _ "cp -f install/installinit/ks.cfg $mnt 2>/dev/null" if $ks;
_ "sync";
- _ "df $mnt";
}
-sub boot_img_sparc {
- my ($mnt, $img) = @_;
- if ($type =~ /^live(.*)/) {
- #- hack to produce directly into /export the needed file for cdrom boot.
- my $dir = "/export";
- my $boot = "boot"; #- non-absolute pathname only!
-
- _ "mkdir -p $dir/$boot";
- _ "cp -f /boot/cd.b /boot/second.b $dir/$boot";
- _ "cp -f vmlinux$1 $dir/$boot/vmlinux$1";
- -f "live$1.rdz" ? _ "cp -f live$1.rdz $dir/$boot" : initrd("${mnt}2", "$dir/$boot/live$1.rdz");
-
- output("$dir/$boot/silo.conf", "
-partition=1
-default=linux
-timeout=100
-read-write
-message=/$boot/boot.msg
-image=\"cat /$boot/boot.msg\"
- label=1
- single-key
-image=\"cat /$boot/general.msg\"
- label=2
- single-key
-image=\"cat /$boot/expert.msg\"
- label=3
- single-key
-image=\"cat /$boot/rescue.msg\"
- label=4
- single-key
-image=\"cat /$boot/kickit.msg\"
- label=5
- single-key
-image=\"cat /$boot/param.msg\"
- label=6
- single-key
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=linux
- alias=install
- initrd=/$boot/live.rdz
- append=\"ramdisk_size=32000$corporate\"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=text
- initrd=/$boot/live.rdz
- append=\"ramdisk_size=32000 text$corporate\"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=expert
- initrd=/$boot/live.rdz
- append=\"ramdisk_size=32000 expert$corporate\"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=ks
- initrd=/$boot/live.rdz
- append=\"ramdisk_size=32000 ks$corporate\"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=rescue
- initrd=/$boot/live.rdz
- append=\"ramdisk_size=32000 rescue rw root=/dev/ram3$corporate\"
-image[sun4u]=/$boot/vmlinux64
- label=linux
- alias=install
- initrd=/$boot/live64.rdz
- append=\"ramdisk_size=32000$corporate\"
-image[sun4u]=/$boot/vmlinux64
- label=text
- initrd=/$boot/live64.rdz
- append=\"ramdisk_size=32000 text$corporate\"
-image[sun4u]=/$boot/vmlinux64
- label=expert
- initrd=/$boot/live64.rdz
- append=\"ramdisk_size=32000 expert$corporate\"
-image[sun4u]=/$boot/vmlinux64
- label=ks
- initrd=/$boot/live64.rdz
- append=\"ramdisk_size=32000 ks$corporate\"
-image[sun4u]=/$boot/vmlinux64
- label=rescue
- initrd=/$boot/live64.rdz
- append=\"ramdisk_size=32000 rescue rw root=/dev/ram3$corporate\"
-");
-
- output("$dir/$boot/README", "
-To Build a Bootable CD-ROM, try:
- mkisofs -R -o t.iso -s /$boot/silo.conf /export
-");
- } elsif ($type =~ /^tftprd(.*)/) {
- my $dir = "/export";
- my $boot = "images";
- my $setarch = $1 ? "sparc64" : "sparc32";
- _ "mkdir -p $dir/$boot";
- -f "$type.rdz" or initrd("${mnt}2", "$type.rdz");
- _ "cp -f vmlinux$1.aout $dir/$boot/$type.img";
- _ "$setarch kernel$1/src/arch/sparc$1/boot/piggyback $dir/$boot/$type.img kernel$1/boot/System.map $type.rdz";
- } elsif ($type =~ /^tftp(.*)/) {
- my $dir = "/export";
- my $boot = "images";
-
- _ "mkdir -p $dir/$boot";
- _ "cp -f vmlinux$1.aout $dir/$boot/$type.img";
- } else {
- my $dir = "floppy";
- my ($ltype, $I) = $type =~ /(.*?)(64)/; $ltype ||= $type;
-
- __ "$sudo umount $mnt 2>/dev/null";
- _ "rm -rf $dir";
- _ "mkdir -p $dir";
- _ "cp -f /boot/fd.b /boot/second.b $dir";
- _ "cp -f vmlinuz$I $dir/vmlinux$I.gz" if $type !~ /blank/;
- -f "$type.rdz" ? _ "cp -f $type.rdz $dir" : initrd("${mnt}2", "$dir/$type.rdz");
-
- output("$dir/boot.msg", "
-Welcome to Linux-Mandrake 7.1
-
-Press <Enter> to install or upgrade a system 7mLinux-Mandrake7m
-");
-
- output("$dir/silo.conf", "
-partition=1
-default=linux
-timeout=100
-read-write
-message=/boot.msg
-image=/vmlinux$I.gz
- label=linux
- initrd=/$type.rdz
- append=\"ramdisk_size=32000 $ltype$corporate\"
-");
- _ "genromfs -d $dir -f /dev/ram -A 2048,/.. -a 512 -V \'DrakX boot disk\'";
- _ "$sudo mount -t romfs /dev/ram $mnt";
- _ "silo -r $mnt -F -i /fd.b -b /second.b -C /silo.conf";
- _ "$sudo umount $mnt";
- _ "dd if=/dev/ram of=$type.img bs=1440k count=1";
- _ "sync";
- _ "$sudo mount -t romfs /dev/ram $mnt";
- _ "df $mnt";
- }
-}
-
-sub boot_img_ppc {
- my ($mnt, $img) = @_;
- # Here's a quick hack... just to give the script somethign to do. :)
- # We do not yet have a set way of making bootable images.
- _ "cp $type.rdz $img";
-}
sub output {
my $f = shift;