summaryrefslogtreecommitdiffstats
path: root/rescue
diff options
context:
space:
mode:
Diffstat (limited to 'rescue')
-rw-r--r--rescue/.cvsignore1
-rw-r--r--rescue/Makefile4
-rw-r--r--rescue/aliases1
-rw-r--r--rescue/dirs4
-rw-r--r--rescue/kernel_read_part.c13
-rw-r--r--rescue/list24
-rw-r--r--rescue/list.i3864
-rw-r--r--rescue/list.sparc1
-rwxr-xr-xrescue/make_rescue_img20
-rw-r--r--rescue/tree/boot/grub/menu.lst2
-rw-r--r--rescue/tree/etc/issue2
-rwxr-xr-xrescue/tree/etc/oem76
-rw-r--r--rescue/tree/etc/profile2
-rwxr-xr-xrescue/tree/etc/rc.sysinit6
-rwxr-xr-xrescue/tree/sbin/modprobe3
15 files changed, 110 insertions, 53 deletions
diff --git a/rescue/.cvsignore b/rescue/.cvsignore
index 13933b8b3..420d9cd67 100644
--- a/rescue/.cvsignore
+++ b/rescue/.cvsignore
@@ -1 +1,2 @@
rescue_stage2.gz
+kernel_read_part
diff --git a/rescue/Makefile b/rescue/Makefile
index 4edae97bd..ed2d73018 100644
--- a/rescue/Makefile
+++ b/rescue/Makefile
@@ -3,8 +3,8 @@ ROOTDEST = /export
install: rescue_stage2.gz
cp -f $< $(ROOTDEST)/Mandrake/base
-rescue_stage2.gz:
+rescue_stage2.gz: kernel_read_part
./make_rescue_img
clean:
- rm -f rescue_stage2.gz
+ rm -f rescue_stage2.gz kernel_read_part
diff --git a/rescue/aliases b/rescue/aliases
index 3a8d38e9a..14090ddd6 100644
--- a/rescue/aliases
+++ b/rescue/aliases
@@ -1,2 +1,3 @@
/bin/zcat gzip
/bin/gunzip gzip
+/bin/rpm /usr/bin/rpm-dynamic
diff --git a/rescue/dirs b/rescue/dirs
index ae6616b1e..6ace88d5d 100644
--- a/rescue/dirs
+++ b/rescue/dirs
@@ -1,3 +1,7 @@
/mnt/cdrom
/mnt/disk
/mnt/floppy
+/lib
+/tmp
+/modules
+/proc
diff --git a/rescue/kernel_read_part.c b/rescue/kernel_read_part.c
index 4b9d16d65..279dfe787 100644
--- a/rescue/kernel_read_part.c
+++ b/rescue/kernel_read_part.c
@@ -1,14 +1,7 @@
-#include <unistd.h>
-#include <stdlib.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
#include <sys/mount.h>
#include <fcntl.h>
-
void die(char *msg)
{
perror(msg);
@@ -18,15 +11,9 @@ void die(char *msg)
void kernel_read(char *dev)
{
int fd;
-
- sync();
if ((fd = open(dev, O_RDONLY)) == -1) die("can't open device");
- sync();
- sleep(1);
ioctl(fd, BLKRRPART, 0);
- sync();
close(fd);
- sync();
}
int main(int argc, char **argv)
diff --git a/rescue/list b/rescue/list
index 17c7ddb6c..d11c8b01c 100644
--- a/rescue/list
+++ b/rescue/list
@@ -13,7 +13,7 @@
/usr/bin/bzip2
/usr/bin/bunzip2
/usr/bin/bzcat
-/usr/bin/extract_archive
+/usr/bin/packdrake
/bin/hostname
/bin/kill
/bin/ln
@@ -53,6 +53,7 @@
/dev/port
/dev/ram*
/dev/random
+/dev/sd[a-h]*
/dev/stderr
/dev/stdin
/dev/stdout
@@ -63,11 +64,11 @@
/dev/zero
/etc/inputrc
/etc/termcap
-/mnt/cdrom
-/mnt/disk
-/mnt/floppy
+/lib/libnss_files-*
+/lib/libnss_files.so.2
/sbin/debugfs
/sbin/e2fsck
+/sbin/sfdisk
/sbin/fdisk
/sbin/fsck.ext2
/sbin/halt
@@ -75,12 +76,12 @@
/sbin/init
/sbin/insmod
/sbin/ldconfig
-/sbin/lilo
/sbin/mingetty
/sbin/mkdosfs
/sbin/mkfs.ext2
/sbin/reboot
/sbin/rmmod
+/sbin/shutdown
/usr/bin/strace
/sbin/route
/sbin/mkswap
@@ -90,6 +91,7 @@
/sbin/update
/usr/bin/cmp
/usr/bin/cut
+/usr/bin/eject
/usr/bin/fdformat
/usr/bin/file
/usr/bin/find
@@ -105,6 +107,7 @@
/usr/bin/telnet
/usr/bin/telnet
/usr/bin/tset
+/usr/sbin/chroot
/usr/sbin/traceroute
/usr/share/magic
/usr/share/terminfo/l/linux
@@ -112,11 +115,12 @@
/sbin/killall5
/usr/bin/perl
/usr/bin/perl5
-/usr/bin/perl5.00503
-/usr/bin/extract_archive
+/usr/bin/perl5.6.0
+/usr/lib/perl5/5.6.0/i386-linux/CORE/libperl.so
/bin/sort
/usr/bin/md5sum
/etc/protocols
-/sbin/lspci
-/usr/share/pci.ids
-/bin/rpm \ No newline at end of file
+/etc/services
+/bin/rpm
+/sbin/mkraid
+/usr/lib/rpm/rpmrc
diff --git a/rescue/list.i386 b/rescue/list.i386
index 1bbe9fe7f..17a7aee85 100644
--- a/rescue/list.i386
+++ b/rescue/list.i386
@@ -1,7 +1,7 @@
/usr/sbin/ext2resize
/usr/sbin/rescuept
/sbin/mkreiserfs
-/sbin/lspci
+/usr/bin/lspci
/usr/share/pci.ids
-/usr/bin/perl5.00503
/sbin/lilo
+/boot/grub/stage[12]
diff --git a/rescue/list.sparc b/rescue/list.sparc
index 00ca832e2..074144cf0 100644
--- a/rescue/list.sparc
+++ b/rescue/list.sparc
@@ -1,2 +1 @@
-/usr/bin/perl5.6.0
/sbin/silo
diff --git a/rescue/make_rescue_img b/rescue/make_rescue_img
index 8b9c823f4..d6667519e 100755
--- a/rescue/make_rescue_img
+++ b/rescue/make_rescue_img
@@ -22,27 +22,32 @@ BEGIN { undef *_; }
sub __ { print @_, "\n"; system(@_); }
sub _ { __ @_; $? and die; }
-sub install {
+sub install_ {
return if -e "$tmp$_[0]";
my $d = dirname($_[0]);
commands::mkdir_("-p", "$tmp$d") unless -d "$tmp$d";
- _ "$sudo cp -a $_[0] $tmp$d";
-}
-sub install_lib {
- _ "cp $_[0] $tmp$_[0]" unless -e "$tmp$_[0]";
+ _ "$sudo cp $_[1] $_[0] $tmp$d";
}
+sub install { install_($_[0], "-a") }
+sub install_lib { install_($_[0], "") }
_ "$sudo rm -rf $tmp" if -e $tmp;
_ "mkdir $tmp";
_ 'find . -name "*~" | xargs rm -f';
+foreach (cat_("dirs")) {
+ chomp;
+ commands::mkdir_("-p", "$tmp$_");
+}
_ "cp -a tree/* $tmp";
+_ "find $tmp -name 'CVS*' | xargs rm -rf";
+
foreach (keyboard::loadkeys_files) {
install($_);
symlink "$2.kmap.gz", "$tmp$1/$3.kmap.gz" if m|(.*)/((..).+)\.kmap\.gz|;
}
unlink "$tmp/usr/lib/kbd/keymaps/i386/qwertz/fr.kmap.gz";
-foreach (cat_("list")) {
+foreach (cat_("list"), cat_(`../tools/specific_arch list`)) {
chomp;
install($_);
chomp, install_lib($_) foreach `ldd $_ 2>/dev/null | grep "=>" | sed -e 's/.*=> //' -e 's/ .*//'`;
@@ -53,6 +58,7 @@ foreach (cat_("aliases")) {
}
_ "cp ../modules/modules.{cz*,dep} $tmp/modules";
+_ "install -s kernel_read_part $tmp/sbin" if $arch =~ /i.86/;
__ "$sudo strip $tmp/{lib,bin,sbin}/* $tmp/usr/{bin,sbin}/* 2>/dev/null";
exit 0 if $ARGV[0];
@@ -60,7 +66,7 @@ exit 0 if $ARGV[0];
$size = `du -s $tmp | cut -f1` + 2048; #- add 2MB of free space
commands::mkdir_("-p", $mnt) if !-e $mnt;
-__ "$sudo umount $rescue";
+__ "$sudo umount $rescue 2>/dev/null";
_ "dd if=/dev/zero of=$rescue bs=1k count=$size";
_ "$mke2fs $rescue";
diff --git a/rescue/tree/boot/grub/menu.lst b/rescue/tree/boot/grub/menu.lst
index 372c24902..c74b13ee7 100644
--- a/rescue/tree/boot/grub/menu.lst
+++ b/rescue/tree/boot/grub/menu.lst
@@ -1,5 +1,5 @@
timeout 0
title oem
-kernel (hd0,0)/boot/vmlinuz ramdisk_size=32000 hd vga=788 flang=fr_FR fclass=normal oem
+kernel (hd0,0)/boot/vmlinuz ramdisk_size=32000 hd vga=788 fclass=normal oem
initrd (hd0,0)/boot/hd.rdz
diff --git a/rescue/tree/etc/issue b/rescue/tree/etc/issue
index 8c579e127..9b04ad8cd 100644
--- a/rescue/tree/etc/issue
+++ b/rescue/tree/etc/issue
@@ -18,7 +18,7 @@
      

-Linux Mandrake release 7.0 (Air)
+Linux Mandrake release 7.2 (Odyssey)
Use loadkeys to change your keyboard layout (eg: loadkeys fr)
Use modprobe to load modules
diff --git a/rescue/tree/etc/oem b/rescue/tree/etc/oem
index e95d572e1..f30c9a433 100755
--- a/rescue/tree/etc/oem
+++ b/rescue/tree/etc/oem
@@ -2,12 +2,20 @@
[ "$1" = "-f" ] || { echo "Call it with option -f, but don't fear loosing all your data, this command is dangerous!"; exit 1; }
-echo "I'm going to install the oem version on your hard drive"
-echo "!!ALL DATA IS GOING TO BE LOST!!"
-echo
-echo "Press enter to go on"
+inst=1
+swap=2
+root=3
-read
+yes=
+while [ "$yes" != "yes" ]; do
+ echo
+ echo
+ echo "I'm going to install the OEM version on your hard drive"
+ echo "!!ALL DATA IS GOING TO BE LOST!!"
+ echo
+ echo "Type \`\`yes'' and [enter] to go on"
+ read yes
+done
cd /proc/ide
for i in hd*; do
@@ -20,22 +28,62 @@ echo "cdrom: $cd"
mkdir /cdrom ; mount -r -t iso9660 $cd /cdrom
+if grep -q "[ -]fr" /cdrom/VERSION; then
+ lang=fr
+ flang=fr_FR
+else
+ lang=en
+ flang=en_US
+fi
+echo "Found lang $lang"
+
echo "Installing new partition table and bootloader"
dd if=/etc/part_and_bootloader of=$hd
echo "Asking kernel to take into account this new partition table"
kernel_read_part $hd
-echo "Formatting (ext2) partition"
-mkfs.ext2 ${hd}1
+echo "Setting swap"
+mkswap $hd$swap
+swapon $hd$swap
+
+echo "Formatting $hd$inst partition" ; mkfs.ext2 $hd$inst
+echo "Formatting $hd$root partition" ; mkfs.ext2 $hd$root
+
+echo "Mounting partitions"
+mkdir -p /hd ; mount -t ext2 $hd$inst /hd
+mkdir -p /mnt; mount -t ext2 $hd$root /mnt
-echo "Mounting partition"
-mkdir /hd ; mount -t ext2 ${hd}1 /hd
+echo "Copying installation on hard drive"
+cp -a /boot /cdrom/boot /hd
+mkdir -p /hd/Mandrake /hd/Mandrake/RPMS
+cp -a /cdrom/Mandrake/base /cdrom/Mandrake/mdkinst /hd/Mandrake
-echo "Copying cdrom on hard drive"
-cp -a /boot /cdrom/boot /cdrom/Mandrake /hd
-rm /hd/Mandrake/mdkinst/usr/bin/runinstall2
+perl -pi -e "s/^(kernel .*)/\1 flang=$flang/" /hd/boot/grub/menu.lst
-echo "Done, oem hard drive ready! Press enter to reboot"
+for i in `/etc/closurepkgs /hd/Mandrake/base/depslist.ordered /hd/Mandrake/base/compssList $lang | grep C: | cut -d: -f2`; do
+ [ -e /cdrom/Mandrake/RPMS/$i.*.rpm ] && cp -a /cdrom/Mandrake/RPMS/$i.*.rpm /hd/Mandrake/RPMS
+done
+
+echo "Installing packages"
+export DURING_INSTALL=1
+export RPM_INSTALL_LANG=$lang
+export LD_LIBRARY_PATH=/usr/X11R6/lib
+export SECURE_LEVEL=2
+for i in /etc /var/lib/rpm /proc ; do mkdir -p /mnt$i; done
+mount -t proc proc /mnt/proc
+rpm --root /mnt --initdb
+echo >/mnt/etc/fstab "$hd$root / ext2 defaults 1 1"
+for i in `/etc/closurepkgs /hd/Mandrake/base/depslist.ordered /hd/Mandrake/base/compssList $lang | grep I: | cut -d: -f2`; do
+ [ -e /cdrom/Mandrake/RPMS/$i.*.rpm ] && rpm --root /mnt -ivh /cdrom/Mandrake/RPMS/$i.*.rpm --nodeps --force
+done
+umount /mnt/proc
+umount /cdrom
+eject $cd
+
+echo
+echo "Done. OEM hard drive ready!"
+echo "The hard drive is now ready for a customer."
+echo "Press enter to halt."
read
-reboot \ No newline at end of file
+halt
diff --git a/rescue/tree/etc/profile b/rescue/tree/etc/profile
index ffd2b3174..ce6db9cd7 100644
--- a/rescue/tree/etc/profile
+++ b/rescue/tree/etc/profile
@@ -6,7 +6,7 @@
PROFILE_LOADED=1
-export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+export PATH=/usr/bin:/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/mnt/disk/sbin:/mnt/disk/bin:/mnt/disk/usr/sbin:/mnt/disk/usr/bin:/mnt/disk/usr/X11R6/bin
PS1="[root@rescue]\\$ "
ls () { /bin/ls --color=auto -F "$@";}
diff --git a/rescue/tree/etc/rc.sysinit b/rescue/tree/etc/rc.sysinit
index 476c9bfe9..8fb6aea63 100755
--- a/rescue/tree/etc/rc.sysinit
+++ b/rescue/tree/etc/rc.sysinit
@@ -17,12 +17,18 @@ mount -f /proc
action "Setting hostname rescue" hostname rescue
echo rescue > /etc/HOSTNAME
+# Loads common modules ( no kerneld :( )
load() { modprobe $* 2>/dev/null; }
load ide-mod
load ide-probe
load ide-disk
load ide-cd
load af_packet
+load isofs
+load vfat
+load reiserfs
+
+grep -q oem /proc/cmdline && exec /etc/oem -f
/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0
/sbin/route add 127.0.0.1 lo
diff --git a/rescue/tree/sbin/modprobe b/rescue/tree/sbin/modprobe
index 494f5b2a2..574f8ff56 100755
--- a/rescue/tree/sbin/modprobe
+++ b/rescue/tree/sbin/modprobe
@@ -27,9 +27,10 @@ sub load {
$conf{$name}{loaded} and return;
eval { load($_, 'prereq') } foreach @{$deps{$name}};
- system("extract_archive /modules/modules.cz* /tmp $name.o >/dev/null");
+ system("packdrake -x /modules/modules.cz* /tmp $name.o");
-r "/tmp/$name.o" or die "can't find module $name\n";
system("/sbin/insmod -f /tmp/$name.o"); $? and die("insmod $name failed");
+ system("rm /tmp/$name.o");
}
!@ARGV || $ARGV[0] =~ /-h/ and die "usage: modprobe <module> [<options...>]\n";