summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rescue/.cvsignore1
-rw-r--r--rescue/Makefile10
-rw-r--r--rescue/aliases2
-rw-r--r--rescue/list122
-rwxr-xr-xrescue/make_rescue_img78
-rwxr-xr-xrescue/tree/bin/insmod3
-rwxr-xr-xrescue/tree/bin/login2
-rw-r--r--rescue/tree/etc/fstab4
-rw-r--r--rescue/tree/etc/group1
-rw-r--r--rescue/tree/etc/host.conf2
-rw-r--r--rescue/tree/etc/hosts1
-rw-r--r--rescue/tree/etc/inittab14
-rw-r--r--rescue/tree/etc/issue25
-rw-r--r--rescue/tree/etc/passwd3
-rw-r--r--rescue/tree/etc/profile24
-rwxr-xr-xrescue/tree/etc/rc.reboot9
-rwxr-xr-xrescue/tree/etc/rc.sysinit28
-rw-r--r--rescue/tree/etc/resolv.conf2
-rwxr-xr-xrescue/tree/sbin/modprobe39
19 files changed, 370 insertions, 0 deletions
diff --git a/rescue/.cvsignore b/rescue/.cvsignore
new file mode 100644
index 000000000..13933b8b3
--- /dev/null
+++ b/rescue/.cvsignore
@@ -0,0 +1 @@
+rescue_stage2.gz
diff --git a/rescue/Makefile b/rescue/Makefile
new file mode 100644
index 000000000..4edae97bd
--- /dev/null
+++ b/rescue/Makefile
@@ -0,0 +1,10 @@
+ROOTDEST = /export
+
+install: rescue_stage2.gz
+ cp -f $< $(ROOTDEST)/Mandrake/base
+
+rescue_stage2.gz:
+ ./make_rescue_img
+
+clean:
+ rm -f rescue_stage2.gz
diff --git a/rescue/aliases b/rescue/aliases
new file mode 100644
index 000000000..3a8d38e9a
--- /dev/null
+++ b/rescue/aliases
@@ -0,0 +1,2 @@
+/bin/zcat gzip
+/bin/gunzip gzip
diff --git a/rescue/list b/rescue/list
new file mode 100644
index 000000000..17c7ddb6c
--- /dev/null
+++ b/rescue/list
@@ -0,0 +1,122 @@
+/bin/bash
+/bin/cat
+/bin/chmod
+/bin/chown
+/bin/cp
+/bin/date
+/bin/dd
+/bin/df
+/bin/dmesg
+/bin/false
+/bin/grep
+/bin/gzip
+/usr/bin/bzip2
+/usr/bin/bunzip2
+/usr/bin/bzcat
+/usr/bin/extract_archive
+/bin/hostname
+/bin/kill
+/bin/ln
+/bin/loadkeys
+/usr/bin/du
+/usr/lib/kbd
+/bin/ls
+/bin/vi
+/bin/mkdir
+/bin/mknod
+/bin/mount
+/bin/mount
+/bin/mv
+/bin/ping
+/bin/ps
+/bin/pwd
+/bin/rm
+/bin/rmdir
+/bin/setserial
+/sbin/lsmod
+/bin/cpio
+/usr/bin/diff
+/bin/sh
+/bin/sleep
+/bin/sync
+/bin/touch
+/bin/true
+/bin/umount
+/dev/console
+/dev/fd[01]
+/dev/hd[a-h]*
+/dev/initctl
+/dev/kmem
+/dev/loop*
+/dev/mem
+/dev/null
+/dev/port
+/dev/ram*
+/dev/random
+/dev/stderr
+/dev/stdin
+/dev/stdout
+/dev/tty
+/dev/ttyS[0-3]
+/dev/tty[0-9]
+/dev/urandom
+/dev/zero
+/etc/inputrc
+/etc/termcap
+/mnt/cdrom
+/mnt/disk
+/mnt/floppy
+/sbin/debugfs
+/sbin/e2fsck
+/sbin/fdisk
+/sbin/fsck.ext2
+/sbin/halt
+/sbin/ifconfig
+/sbin/init
+/sbin/insmod
+/sbin/ldconfig
+/sbin/lilo
+/sbin/mingetty
+/sbin/mkdosfs
+/sbin/mkfs.ext2
+/sbin/reboot
+/sbin/rmmod
+/usr/bin/strace
+/sbin/route
+/sbin/mkswap
+/sbin/swapoff
+/sbin/swapon
+/sbin/tune2fs
+/sbin/update
+/usr/bin/cmp
+/usr/bin/cut
+/usr/bin/fdformat
+/usr/bin/file
+/usr/bin/find
+/usr/bin/ftp
+/usr/bin/head
+/usr/bin/hexedit
+/usr/bin/less
+/usr/bin/loadkeys
+/usr/bin/reset
+/usr/bin/split
+/usr/bin/tail
+/usr/bin/tee
+/usr/bin/telnet
+/usr/bin/telnet
+/usr/bin/tset
+/usr/sbin/traceroute
+/usr/share/magic
+/usr/share/terminfo/l/linux
+/var/run/utmp
+/sbin/killall5
+/usr/bin/perl
+/usr/bin/perl5
+/usr/bin/perl5.00503
+/usr/bin/extract_archive
+/bin/sort
+/usr/bin/md5sum
+/etc/protocols
+/sbin/lspci
+/usr/share/pci.ids
+/bin/rpm \ No newline at end of file
diff --git a/rescue/make_rescue_img b/rescue/make_rescue_img
new file mode 100755
index 000000000..8b9c823f4
--- /dev/null
+++ b/rescue/make_rescue_img
@@ -0,0 +1,78 @@
+#!/usr/bin/perl
+
+use lib "../perl-install";
+use keyboard;
+use common qw(:file);
+
+use Config;
+Config->import;
+my ($arch) = $Config{archname} =~ /(.*)-/;
+
+$tmp = "/tmp/rescue_tmp";
+$mnt = "/tmp/rescue_stage2_img";
+$mke2fs = "/sbin/mke2fs -q -m 0 -F -s 1";
+$rescue = "rescue_stage2";
+
+if ($>) {
+ $sudo = "sudo";
+ $ENV{PATH} = "/sbin:/usr/sbin:$ENV{PATH}";
+}
+
+BEGIN { undef *_; }
+sub __ { print @_, "\n"; system(@_); }
+sub _ { __ @_; $? and die; }
+
+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 rm -rf $tmp" if -e $tmp;
+_ "mkdir $tmp";
+_ 'find . -name "*~" | xargs rm -f';
+_ "cp -a tree/* $tmp";
+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")) {
+ chomp;
+ install($_);
+ chomp, install_lib($_) foreach `ldd $_ 2>/dev/null | grep "=>" | sed -e 's/.*=> //' -e 's/ .*//'`;
+}
+foreach (cat_("aliases")) {
+ chomp; my ($f, $dest) = split;
+ symlink $dest, "$tmp$f";
+}
+_ "cp ../modules/modules.{cz*,dep} $tmp/modules";
+
+__ "$sudo strip $tmp/{lib,bin,sbin}/* $tmp/usr/{bin,sbin}/* 2>/dev/null";
+
+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";
+
+_ "dd if=/dev/zero of=$rescue bs=1k count=$size";
+_ "$mke2fs $rescue";
+_ "$sudo mount -t ext2 $rescue $mnt -o loop";
+_ "rmdir $mnt/lost+found";
+
+_ "$sudo chown -R root.root $tmp";
+_ "$sudo cp -a $tmp/* $mnt";
+_ "$sudo rm -rf $tmp";
+
+_ "$sudo umount $rescue";
+_ "rmdir $mnt";
+
+_ "echo gzipping $rescue";
+_ "gzip -f -9 $rescue";
diff --git a/rescue/tree/bin/insmod b/rescue/tree/bin/insmod
new file mode 100755
index 000000000..717dc39e1
--- /dev/null
+++ b/rescue/tree/bin/insmod
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "Use modprobe instead"
+echo "Or even better use autoprobe"
diff --git a/rescue/tree/bin/login b/rescue/tree/bin/login
new file mode 100755
index 000000000..4b2816926
--- /dev/null
+++ b/rescue/tree/bin/login
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /bin/bash --login
diff --git a/rescue/tree/etc/fstab b/rescue/tree/etc/fstab
new file mode 100644
index 000000000..fbafb7801
--- /dev/null
+++ b/rescue/tree/etc/fstab
@@ -0,0 +1,4 @@
+/dev/ram3 / ext2 defaults 1 1
+/dev/fd0 /mnt/floppy auto defaults,noauto 0 0
+none /proc proc defaults,noauto,ro 0 0
+/dev/cdrom /mnt/cdrom auto defaults,noauto 0 0
diff --git a/rescue/tree/etc/group b/rescue/tree/etc/group
new file mode 100644
index 000000000..5ba713c83
--- /dev/null
+++ b/rescue/tree/etc/group
@@ -0,0 +1 @@
+root::0:root
diff --git a/rescue/tree/etc/host.conf b/rescue/tree/etc/host.conf
new file mode 100644
index 000000000..1a8c1e151
--- /dev/null
+++ b/rescue/tree/etc/host.conf
@@ -0,0 +1,2 @@
+order hosts,bind
+multi on
diff --git a/rescue/tree/etc/hosts b/rescue/tree/etc/hosts
new file mode 100644
index 000000000..a9bbdee7f
--- /dev/null
+++ b/rescue/tree/etc/hosts
@@ -0,0 +1 @@
+127.0.0.1 mandrake-rescue
diff --git a/rescue/tree/etc/inittab b/rescue/tree/etc/inittab
new file mode 100644
index 000000000..0ee36784f
--- /dev/null
+++ b/rescue/tree/etc/inittab
@@ -0,0 +1,14 @@
+#Inittab for Mandrake Rescue Disk
+#Author: Daouda Lo <daouda@mandrakesoft.com>
+id:3:initdefault:
+
+si::sysinit:/etc/rc.sysinit
+re:6:wait:/etc/rc.reboot
+ca:12345:ctrlaltdel:/sbin/init 6
+
+1:12345:respawn:/bin/bash --login
+2:23:respawn:/sbin/mingetty tty2
+3:23:respawn:/sbin/mingetty tty3
+4:23:respawn:/sbin/mingetty tty4
+5:23:respawn:/sbin/mingetty tty5
+6:23:respawn:/sbin/mingetty tty6
diff --git a/rescue/tree/etc/issue b/rescue/tree/etc/issue
new file mode 100644
index 000000000..8c579e127
--- /dev/null
+++ b/rescue/tree/etc/issue
@@ -0,0 +1,25 @@
+
+
+   
+           
+              
+              
+            
+  `----'         
+       
+     
+     [2[1;37;4
+     
+    
+    Mandrake Rescue Disk
+     
+     
+    
+      
+
+
+Linux Mandrake release 7.0 (Air)
+
+Use loadkeys to change your keyboard layout (eg: loadkeys fr)
+Use modprobe to load modules
+
diff --git a/rescue/tree/etc/passwd b/rescue/tree/etc/passwd
new file mode 100644
index 000000000..568451e4e
--- /dev/null
+++ b/rescue/tree/etc/passwd
@@ -0,0 +1,3 @@
+root::0:0::/:/bin/bash
+shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
+halt:*:7:0:halt:/sbin:/sbin/halt
diff --git a/rescue/tree/etc/profile b/rescue/tree/etc/profile
new file mode 100644
index 000000000..ffd2b3174
--- /dev/null
+++ b/rescue/tree/etc/profile
@@ -0,0 +1,24 @@
+# /etc/profile
+# (c) MandrakeSoft, Chmouel Boudjnah <chmouel@mandrakesoft.com>
+
+# System wide environment and startup programs
+# Functions and aliases go in /etc/bashrc
+
+PROFILE_LOADED=1
+
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+
+PS1="[root@rescue]\\$ "
+ls () { /bin/ls --color=auto -F "$@";}
+ll () { /bin/ls --color=auto -Fl "$@";}
+d () { /bin/ls --color=auto -F "$@";}
+s () { cd .. ;}
+which () { type -p "$@" ;}
+HOSTNAME=rescue
+HISTSIZE=1000
+HISTFILESIZE=1000
+
+INPUTRC=/etc/inputrc
+export PATH PS1 USER HOSTNAME HISTSIZE HISTFILESIZE INPUTRC
+
+cat /etc/issue
diff --git a/rescue/tree/etc/rc.reboot b/rescue/tree/etc/rc.reboot
new file mode 100755
index 000000000..79318f1f7
--- /dev/null
+++ b/rescue/tree/etc/rc.reboot
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+sleep 1
+/sbin/killall5 -9
+
+umount -a -f -t noproc
+mount -n -o remount,ro /
+
+reboot -i -d
diff --git a/rescue/tree/etc/rc.sysinit b/rescue/tree/etc/rc.sysinit
new file mode 100755
index 000000000..476c9bfe9
--- /dev/null
+++ b/rescue/tree/etc/rc.sysinit
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+action() { echo $1; shift; $*; }
+
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin
+
+echo -e "\t\t\tWelcome to Linux \\033[1;36mMandrake\\033[0;39m"
+
+action "Mounting proc filesystem" mount -n -t proc /proc /proc
+action "Remounting root filesystem in read-write mode" mount -n -o remount,rw /
+
+>/etc/mtab
+mount -f /
+mount -f /proc
+
+# Set the hostname.
+action "Setting hostname rescue" hostname rescue
+echo rescue > /etc/HOSTNAME
+
+load() { modprobe $* 2>/dev/null; }
+load ide-mod
+load ide-probe
+load ide-disk
+load ide-cd
+load af_packet
+
+/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/etc/resolv.conf b/rescue/tree/etc/resolv.conf
new file mode 100644
index 000000000..3822939b1
--- /dev/null
+++ b/rescue/tree/etc/resolv.conf
@@ -0,0 +1,2 @@
+search foo.com
+nameserver 192.168.1.1
diff --git a/rescue/tree/sbin/modprobe b/rescue/tree/sbin/modprobe
new file mode 100755
index 000000000..494f5b2a2
--- /dev/null
+++ b/rescue/tree/sbin/modprobe
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+sub cat_ { local *F; open F, $_[0] or $_[1] ? die "cat of file $_[0] failed: $!\n" : return; my @l = <F>; wantarray ? @l : join '', @l }
+
+sub read_already_loaded() {
+ foreach (cat_("/proc/modules")) {
+ my ($name) = split;
+ $conf{$name}{loaded} = 1;
+ }
+}
+
+sub load_deps($) {
+ my ($file) = @_;
+
+ local *F;
+ open F, $file or log::l("error opening $file: $!"), return 0;
+ foreach (<F>) {
+ my ($f, $deps) = split ':';
+ push @{$deps{$f}}, split ' ', $deps;
+ }
+}
+
+sub load {
+ my ($name, @options) = @_;
+ $name =~ s/\.o//;
+
+ $conf{$name}{loaded} and return;
+ eval { load($_, 'prereq') } foreach @{$deps{$name}};
+
+ system("extract_archive /modules/modules.cz* /tmp $name.o >/dev/null");
+ -r "/tmp/$name.o" or die "can't find module $name\n";
+ system("/sbin/insmod -f /tmp/$name.o"); $? and die("insmod $name failed");
+}
+
+!@ARGV || $ARGV[0] =~ /-h/ and die "usage: modprobe <module> [<options...>]\n";
+
+read_already_loaded();
+load_deps("/modules/modules.dep");
+load(@ARGV);