summaryrefslogtreecommitdiffstats
path: root/images
diff options
context:
space:
mode:
Diffstat (limited to 'images')
-rw-r--r--images/Makefile15
-rw-r--r--images/NEWS35
-rw-r--r--images/dracut.conf4
-rwxr-xr-ximages/make_boot_img140
-rwxr-xr-ximages/update_kernel38
5 files changed, 110 insertions, 122 deletions
diff --git a/images/Makefile b/images/Makefile
index 18956e2cf..142cfd577 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -1,6 +1,6 @@
include ../Makefile.config
-VERSION=1.93
+VERSION=2.4
PRODUCT=drakx-installer-images
KERNELS=$(shell rpm -qf /lib/modules/3.*)
@@ -8,7 +8,12 @@ IMAGES_DEST = $(ROOTDEST)/install/images
all: images
-images: all.kernels
+boot.iso: images/boot.iso
+
+images/boot.iso: all.kernels/.list make_boot_img
+ DISTRIB_DESCR=$(DISTRIB_DESCR) DISTRIB_VERSION=$(DISTRIB_VERSION) ./make_boot_img images/boot.iso
+
+images: all.kernels/.list
DISTRIB_DESCR=$(DISTRIB_DESCR) DISTRIB_VERSION=$(DISTRIB_VERSION) ./make_boot_img
rm -rf images/alternatives
if [ `ls images/*.img-* 2>/dev/null | wc -l` -gt 0 ]; then \
@@ -16,7 +21,7 @@ images: all.kernels
fi
cd images ; md5sum *.{img,iso}* > MD5SUM
-all.kernels: update_kernel ../kernel/list_modules.pm
+all.kernels/.list: update_kernel
./update_kernel $(KERNELS)
dist: tar
@@ -26,7 +31,7 @@ tar:
$(info $(PRODUCT)-$(VERSION).tar.xz is ready)
clean:
- rm -rf images isolinux all.kernels modules.description
+ rm -rf images isolinux all.kernels modules.description build
find . -name "*~" -o -name ".#*" | xargs rm -f
install:
@@ -37,3 +42,5 @@ install:
rm -rf $(ROOTDEST)/isolinux
cp -af isolinux $(ROOTDEST)
endif
+
+.PHONY: boot.iso install clean dist tar images
diff --git a/images/NEWS b/images/NEWS
index c82f1e4c9..1ec90f9b7 100644
--- a/images/NEWS
+++ b/images/NEWS
@@ -1,3 +1,38 @@
+Version 2.4 - 15 December 2013 by Anne Nicolas
+
+- remove buggy control caracters (#11602)
+- use audit=0 in rescue isolinux config to allow systemd-nspawn to work smoothly
+
+Version 2.3 - 2 December 2013 by Thierry Vignaud
+
+- include "sdhci-acpi" for eMMC (mga#11812)
+
+Version 2.2 - 13 November 2013 by Colin Guthrie
+
+- pass the modules we want in modules.alias, but not in the initrd through to
+ dracut via an environment variable
+- add BOOT_AUTOMATIC_METHOD to inject command line params into boot.iso syslinux
+
+Version 2.1 - 5 November 2013 by Colin Guthrie
+
+- revert back to static per-arch isolinux.cfg files
+
+Version 2.00 - 2 November 2013 by Thomas Backlund
+
+- ensure initrd is created with 644 perms (normally 600 for security reasons)
+- fix 32-bit isolinux wrapper (s/i586/i386)
+
+Version 1.95 - 2 November 2013 by Colin Guthrie
+
+- omit the dracut network module now that we include our own networking kernel modules
+- add a dracut.conf rather than adding lots of command line options
+- ensure initrd is xz compressed
+- include network modules as specified by kernel/list_modules.pm
+
+Version 1.94 - 29 October 2013 by Colin Guthrie
+
+- adapt to a dracut based stage1
+
Version 1.93 - 14 October 2013 by Thierry Vignaud
- sync with kernel-3.12
diff --git a/images/dracut.conf b/images/dracut.conf
new file mode 100644
index 000000000..a1fd05e18
--- /dev/null
+++ b/images/dracut.conf
@@ -0,0 +1,4 @@
+hostonly=no
+nofscks=yes
+omit_dracutmodules+=" dash modsign systemd plymouth btrfs crypt lvm cifs resume rootfs-block biosdevname usrmount shutdown network "
+compress=xz
diff --git a/images/make_boot_img b/images/make_boot_img
index 35a00cc30..613affd9a 100755
--- a/images/make_boot_img
+++ b/images/make_boot_img
@@ -62,10 +62,10 @@ foreach my $img (@images) {
} elsif ($img =~ /boot.iso/) {
boot_iso($img, \@kernels);
} elsif ($extension eq 'rdz') {
- initrd($type, $I, "$img-$_") foreach @kernels;
+ initrd($type, $I, "$img-$_", $_) foreach @kernels;
} elsif ($extension eq 'img') {
print STDERR "calling boot_img_$arch for $img\n";
- $::{"boot_img_$arch"}->($type, $I, "$img-$_", "all.kernels/$_/vmlinuz") foreach @kernels;
+ $::{"boot_img_$arch"}->($type, $I, "$img-$_", $_, "all.kernels/$_/vmlinuz") foreach @kernels;
rename("$img-$kernels[0]", $img);
} else {
die "unknown image $img";
@@ -106,7 +106,7 @@ sub syslinux_msg {
$tree->[0] eq 'document' or die "bad file $msg_xml_file\n";
my $text = xml_tree2syslinux('default', $tree->[1]);
- pack("C*", 0x0E, 0x80, 0x03, 0x00) . " "
+ " "
. $text . join('', @more_text)
. "\n" . syslinux_color('red') . "[F1-Help] [F2-Advanced Help]" . syslinux_color('default') . "\n";
}
@@ -143,71 +143,31 @@ EOF
$header . ($b_gfxboot ? $header_gfxboot : $header_non_gfxboot) . join('', @l);
}
+sub trim {
+ return $_[0] =~ s/^\s+|\s+$//rg;
+}
+
sub initrd {
- my ($type, $I, $img) = @_;
- my $stage1_root = $ENV{USE_LOCAL_STAGE1} ? "../mdk-stage1" : "/usr/$lib/drakx-installer-binaries";
+ my ($type, $I, $img, $kernel) = @_;
+ my $stage1_binary = $ENV{USE_LOCAL_STAGE1} ? trim(`realpath ../mdk-stage1/stage1`) : "";
+ my $init_binary = $ENV{USE_LOCAL_STAGE1} ? trim(`realpath ../mdk-stage1/init`) : "";
my ($ext) = $img =~ /rdz-(.*)/ or die "bad initrd name ($img)";
+ my $modules = " mgainstaller ";
+ my $drivers = `perl ../kernel/modules.pl list_needed_modules $kernel | xargs`;
+ my $fakedrivers = `perl ../kernel/modules.pl list_fake_modules $kernel | xargs`;
- _ "rm -rf $tmp_initrd";
- mkdir_p("$tmp_initrd$_") foreach qw(/etc /firmware /lib /modules /sbin /tmp /var);
- symlink "../modules", "$tmp_initrd/lib/modules";
- symlink "../firmware", "$tmp_initrd/lib/firmware";
-
- symlink "/proc/mounts", "$tmp_initrd/etc/mtab";
- symlink "../tmp", "$tmp_initrd/var/run";
- _ "install -D /usr/share/terminfo/l/linux $tmp_initrd/usr/share/terminfo/l/linux";
- foreach ('pcitable', 'usbtable') {
- _ "install -D /usr/share/ldetect-lst/$_.gz $tmp_initrd/usr/share/ldetect-lst/$_.gz";
- }
- _ "install -D /usr/share/pci.ids $tmp_initrd/usr/share/pci.ids";
- foreach ("dkms-modules.alias", "fallback-modules.alias", "/lib/module-init-tools/ldetect-lst-modules.alias") {
- my $file = m!^/! ? $_ : "/usr/share/ldetect-lst/$_";
- _ "install -D $file $tmp_initrd$file";
- }
- foreach my $firm (glob_("all.kernels$I/$ext/firmware/*")) {
- my $dest=$firm;
- $dest =~ s|all.kernels$I/$ext/||;
- _ "cp -a $firm $tmp_initrd/$dest";
- }
-
- _ "install $stage1_root/init $tmp_initrd/";
- _ "install $stage1_root/stage1 $tmp_initrd/sbin/";
- foreach ('pppd', 'pppoe') {
- _ "install /usr/sbin/${_}-diet $tmp_initrd/sbin/$_";
- }
-
- if ($arch !~ /ppc|ia64/) {
- mkdir_p("$tmp_initrd/etc/pcmcia");
- _ "cp -a /etc/pcmcia/config.opts $tmp_initrd/etc/pcmcia";
- }
- {
- my $modz = "all.kernels$I/$ext";
- mkdir_p("$tmp_initrd/modules/$ext");
- __ "tar xC $tmp_initrd/modules/$ext -f $modz/${type}_modules.tar";
- _ "cp -f $modz/modules.$_ $tmp_initrd/modules/$ext" foreach qw(order builtin);
- substInFile { s,.*/,, } "$tmp_initrd/modules/$ext/modules.order";
- _ "depmod -b $tmp_initrd $ext";
- # depmod keeps only available modules in modules.alias, but we want them all
- _ "cp -f $modz/modules.alias $modz/modules.description $tmp_initrd/modules/$ext";
- }
- mkdir_p("$tmp_initrd/$_") foreach qw(dev proc sys var/tmp tmp/stage2);
- # ka deploy need some files in all.rdz
if ($ENV{DEBUGSTAGE1} || $ENV{BUILD_KA}) {
- symlink("/sbin", "$tmp_initrd/bin");
- cp_af("/bin/busybox.static", "$tmp_initrd/sbin/busybox");
- my @funct = map { /functions:/ .. /^$/ ? do { s/\s//g; split /,/ } : () } `busybox.static`;
- shift @funct;
- symlink('busybox', $tmp_initrd . "/sbin/$_") foreach @funct;
- }
- if ($ENV{BUILD_KA}) {
- mkdir_p("$tmp_initrd/ka");
- cp_af("/usr/bin/ka-d-client", "$tmp_initrd/ka/ka-d-client");
+ $modules="$modules busybox ";
}
+ $modules="$modules mgakadeploy " if ($ENV{BUILD_KA});
- _ "(cd $tmp_initrd; find . | cpio -o -c --quiet) | xz --check=crc32 --lzma2=dict=512KiB > $img";
- _ "rm -rf $tmp_initrd";
+ mkdir_p("build/dracut.conf.d");
+ # TODO if --nofscks and --no-hostonly are switched, dracut gives an error - fix or report upstream
+ __ "DRAKX_STAGE1_BINARY=$stage1_binary DRAKX_INIT_BINARY=$init_binary DRAKX_FAKE_MODULES='$fakedrivers' dracut --conf dracut.conf --confdir ./build/dracut.conf.d --add ' $modules ' --add-drivers ' $drivers ' '$img' '$kernel'";
+ chmod(0644, $img);
}
+
sub entries_append {
my ($type) = @_;
@@ -220,7 +180,7 @@ sub entries_append {
vgahi => "vga=791",
text => "text",
# patch => "patch $default_vga",
- rescue => "rescue",
+ rescue => "audit=0 rescue",
);
my @entries = (
(map { $_->[0] => "$automatic$default_acpi $_->[1]" } group_by2(@simple_entries)),
@@ -252,17 +212,17 @@ sub remove_ending_zero {
}
sub boot_img_i386 {
- my ($type, $I, $img, $kernel) = @_;
+ my ($type, $I, $img, $kernel, $vmlinuz) = @_;
_ "rm -rf $tmp_mnt"; mkdir $tmp_mnt;
- _ "cat $kernel > $tmp_mnt/vmlinuz";
+ _ "cat $vmlinuz > $tmp_mnt/vmlinuz";
output("$tmp_mnt/help.msg", syslinux_msg('help.msg.xml'));
output("$tmp_mnt/advanced.msg", syslinux_msg('advanced.msg.xml'));
(my $rdz = $img) =~ s/\.img/.rdz/;
(my $initrd_type = $type) =~ s/-changedisk//;
- initrd($initrd_type, $I, $rdz);
+ initrd($initrd_type, $I, $rdz, $kernel);
my $short_type = substr($type, 0, 8);
output("$tmp_mnt/syslinux.cfg",
@@ -287,7 +247,7 @@ sub boot_img_i386 {
sub boot_img_x86_64 { &boot_img_i386 }
sub boot_img_alpha {
- my ($type, $I, $img) = @_;
+ my ($type, $I, $img, $kernel, $_vmlinuz) = @_;
__ "$sudo umount $tmp_mnt 2>/dev/null";
_ "dd if=/dev/zero of=$img bs=1k count=1440";
@@ -295,7 +255,7 @@ sub boot_img_alpha {
_ "/sbin/e2writeboot $img /boot/bootlx";
_ "$sudo mount -t ext2 $img $tmp_mnt -o loop";
_ "cp -f vmlinux.gz $tmp_mnt";
- -f "$type.rdz" ? _ "cp -f $type.rdz $tmp_mnt" : initrd($type, $I, "$tmp_mnt/$type.rdz");
+ -f "$type.rdz" ? _ "cp -f $type.rdz $tmp_mnt" : initrd($type, $I, "$tmp_mnt/$type.rdz", $kernel);
mkdir "$tmp_mnt/etc", 0777;
output("$tmp_mnt/etc/aboot.conf",
@@ -307,14 +267,14 @@ sub boot_img_alpha {
}
sub boot_img_ia64 {
- my ($type, $_I, $img, $kernel) = @_;
+ my ($type, $_I, $img, $kernel, $vmlinuz) = @_;
my $rdz = $img; $rdz =~ s/\.img/.rdz/;
__ "$sudo umount $tmp_mnt 2>/dev/null";
_ "dd if=/dev/zero of=$img bs=1k count=16384";
_ "mkdosfs $img";
_ "$sudo mount -t vfat $img $tmp_mnt -o loop,umask=000";
- _ "$sudo cp -f $kernel $tmp_mnt/vmlinux";
+ _ "$sudo cp -f $vmlinuz $tmp_mnt/vmlinux";
_ "cp -f $rdz $tmp_mnt/$type.rdz";
_ "$sudo cp -f tools/ia64/elilo.efi $tmp_mnt";
output("$tmp_mnt/elilo.conf", qq(
@@ -338,7 +298,7 @@ image=vmlinux
}
sub boot_img_sparc {
- my ($type, $I, $_img) = @_;
+ my ($type, $I, $_img, $kernel, $_vmlinuz) = @_;
if ($type =~ /^live(.*)/) {
#- hack to produce directly into /export the needed file for cdrom boot.
my $dir = "/export";
@@ -347,7 +307,7 @@ sub boot_img_sparc {
_ "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($type, $I, "$dir/$boot/live$1.rdz");
+ -f "live$1.rdz" ? _ "cp -f live$1.rdz $dir/$boot" : initrd($type, $I, "$dir/$boot/live$1.rdz", $kernel);
output("$dir/$boot/silo.conf", qq(
partition=1
@@ -427,7 +387,7 @@ To Build a Bootable CD-ROM, try:
my $setarch = $1 ? "sparc64" : "sparc32";
_ "mkdir -p $dir/$boot";
- -f "$type.rdz" or initrd($type, $I, "$type.rdz");
+ -f "$type.rdz" or initrd($type, $I, "$type.rdz", $kernel);
_ "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(.*)/) {
@@ -443,7 +403,7 @@ To Build a Bootable CD-ROM, try:
_ "mkdir -p $dir";
_ "cp -f /boot/fd.b /boot/second.b $dir";
_ "cp -f vmlinuz$I $dir/vmlinux$I.gz";
- -f "$type.rdz" ? _ "cp -f $type.rdz $dir" : initrd($type, $I, "$dir/$type.rdz");
+ -f "$type.rdz" ? _ "cp -f $type.rdz $dir" : initrd($type, $I, "$dir/$type.rdz", $kernel);
output("$dir/boot.msg", "
Welcome to Mageia $ENV{DISTRIB_VERSION}
@@ -474,16 +434,16 @@ image=/vmlinux$I.gz
}
sub boot_img_ppc {
- my ($_type, $I, $_img, $_kernel) = @_;
+ my ($_type, $I, $_img, $kernel, $_vmlinuz) = @_;
foreach (glob("all.kernels/*")) {
my $ext = basename($_);
if ($ext =~ /legacy/) {
- initrd("all", $I, "images/all.rdz-$ext");
+ initrd("all", $I, "images/all.rdz-$ext", $kernel);
_ "mv images/all.rdz-$ext images/all.rdz-legacy";
_ "cp $_/vmlinuz images/vmlinux-legacy";
}
elsif ($ext =~ /2.6/) {
- initrd("all", $I, "images/all.rdz-$ext");
+ initrd("all", $I, "images/all.rdz-$ext", $kernel);
_ "mv images/all.rdz-$ext images/all.rdz";
_ "cp $_/vmlinuz images/vmlinux";
}
@@ -696,9 +656,9 @@ sub syslinux_all_files {
$default_vga =~ /788/ or die 'we rely on vga=788 for bootsplash';
each_index {
- mkdir "$dir/alt$::i", 0777;
+ mkdir "$dir/$arch", 0777;
_ "cp all.kernels/$_/vmlinuz $dir/$arch";
- initrd('all', '', "images/all.rdz-$_");
+ initrd('all', '', "images/all.rdz-$_", $_);
rename("images/all.rdz-$_", "$dir/$arch/all.rdz");
} @$kernels;
@@ -715,9 +675,15 @@ sub isolinux {
syslinux_all_files('isolinux', $kernels);
- _ "cp $isolinux_bin ../isolinux/isolinux.bin";
- _ "cp /usr/lib/syslinux/gfxboot.c32 ../isolinux/gfxboot.c32";
- output("../isolinux/isolinux.cfg", syslinux_cfg_all('cdrom', 1));
+ _ "cp $isolinux_bin isolinux/isolinux.bin";
+ _ "cp /usr/lib/syslinux/ifcpu.c32 isolinux/ifcpu.c32";
+ _ "cp /usr/lib/syslinux/ldlinux.c32 isolinux/ldlinux.c32";
+ _ "cp /usr/lib/syslinux/libcom32.c32 isolinux/libcom32.c32";
+ _ "cp /usr/lib/syslinux/libgpl.c32 isolinux/libgpl.c32";
+ _ "cp /usr/lib/syslinux/libmenu.c32 isolinux/libmenu.c32";
+ _ "cp /usr/lib/syslinux/libutil.c32 isolinux/libutil.c32";
+ _ "cp /usr/lib/syslinux/gfxboot.c32 isolinux/gfxboot.c32";
+ output("isolinux/isolinux.cfg", syslinux_cfg_all('cdrom', 1));
xbox_stage1() if arch() =~ /i.86/;
}
@@ -729,7 +695,7 @@ sub xbox_stage1() {
eval { rm_rf($dir) }; mkdir_p($dir);
_ "cp all.kernels/$xbox_kernel/vmlinuz $dir";
- initrd('all', '', "images/all.rdz-$xbox_kernel");
+ initrd('all', '', "images/all.rdz-$xbox_kernel", $xbox_kernel);
rename("images/all.rdz-$xbox_kernel", "$dir/initrd");
_ "cp /usr/share/cromwell/xromwell-installer.xbe $dir/default.xbe";
@@ -748,7 +714,13 @@ sub boot_iso {
output('.boot_iso/VERSION', VERSION($kernels));
# for the boot iso, use standard isolinux
- _ "cp /usr/lib/syslinux/isolinux.bin .boot_iso/isolinux/isolinux.bin";
+ _ "cp $isolinux_bin .boot_iso/isolinux/isolinux.bin";
+ _ "cp /usr/lib/syslinux/ifcpu.c32 .boot_iso/isolinux/ifcpu.c32";
+ _ "cp /usr/lib/syslinux/ldlinux.c32 .boot_iso/isolinux/ldlinux.c32";
+ _ "cp /usr/lib/syslinux/libcom32.c32 .boot_iso/isolinux/libcom32.c32";
+ _ "cp /usr/lib/syslinux/libgpl.c32 .boot_iso/isolinux/libgpl.c32";
+ _ "cp /usr/lib/syslinux/libmenu.c32 .boot_iso/isolinux/libmenu.c32";
+ _ "cp /usr/lib/syslinux/libutil.c32 .boot_iso/isolinux/libutil.c32";
my $with_gfxboot = 0;
_ "cp /usr/share/gfxboot/themes/Mageia/install/* .boot_iso/isolinux" if $with_gfxboot;
@@ -758,6 +730,10 @@ sub boot_iso {
output('.boot_iso/isolinux/isolinux.cfg', syslinux_cfg_all('', $with_gfxboot));
+ if ($ENV{BOOT_AUTOMATIC_METHOD}) {
+ _ "sed -i 's#\\(append .*\\)\\(splash quiet\\|rescue\\)\$#\\1\\2 automatic=$ENV{BOOT_AUTOMATIC_METHOD}#' .boot_iso/isolinux/isolinux.cfg"
+ }
+
_ "genisoimage -r -f -J -cache-inodes -V 'Mga Boot ISO' -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $iso .boot_iso";
_ "isohybrid -o 1 $iso";
rm_rf('.boot_iso');
diff --git a/images/update_kernel b/images/update_kernel
index 934f5195e..a16513eac 100755
--- a/images/update_kernel
+++ b/images/update_kernel
@@ -15,18 +15,14 @@ use list_modules;
my $rpm = 'rpm --nosignature';
-@ARGV or die "usage: ./update_kernel [--move] (<kernel rpm> ... | <installed kernel name> ...)\n";
+@ARGV or die "usage: ./update_kernel <installed kernel name> ...\n";
eval { rm_rf('all.kernels') }; #- remove old things
mkdir 'all.kernels';
my @kernels = map {
my $kern_ver = rpm2version($_);
- if (/\.rpm$/) {
- extract_kernel($_, $kern_ver);
- } else {
extract_installed_rpm('', $kern_ver);
- }
$kern_ver;
} @ARGV;
@@ -41,40 +37,10 @@ sub rpm2version {
`$rpm $opt $kernel_rpm` =~ m!/boot/vmlinuz-(.*)! && $1 or die "can't find vmlinuz in $kernel_rpm (is it installed?)\n";
}
-sub extract_kernel {
- my ($kernel_rpm, $kern_ver) = @_;
-
- my $dir = "all.kernels/$kern_ver";
-
- warn "Extracting kernel $kern_ver\n";
-
- eval { rm_rf($dir) };
- mkdir_p("$dir/modules");
- sys("rpm2cpio $kernel_rpm | (cd $dir ; cpio -id)");
-
- extract_installed_rpm($dir, $kern_ver);
-
- eval { rm_rf("$dir$_") } foreach qw(/boot /lib /usr);
-}
-
sub extract_installed_rpm {
my ($installed_dir, $kern_ver) = @_;
my $local_dir = "all.kernels/$kern_ver";
- mkdir_p("$local_dir/modules");
+ mkdir_p("$local_dir");
sys('cp', "$installed_dir/boot/vmlinuz-$kern_ver", "$local_dir/vmlinuz");
- sys("cp $installed_dir/lib/modules/$kern_ver/modules.* $local_dir");
-
- open(my $F, "find $installed_dir/lib/modules/$kern_ver -name '*.ko.?z' |");
- my $file; while ($file = <$F>) {
- chomp($file);
- system('cp', $file, "$local_dir/modules/" . basename($file)) == 0
- or warn "conflict for $file\n";
- }
-
- sys('perl', '../kernel/modules.pl', 'remove_unneeded_modules', $kern_ver);
- sys('perl', '../kernel/modules.pl', 'get_firmwares', $kern_ver);
- sys('perl', '../kernel/modules.pl', 'make_modules_per_image', $kern_ver);
-
- rm_rf("$local_dir/modules");
}