diff options
-rw-r--r-- | Makefile | 15 | ||||
-rwxr-xr-x | make_boot_img | 3 | ||||
-rw-r--r-- | rescue/Makefile | 4 | ||||
-rw-r--r-- | rescue/kernel_read_part.c | 39 | ||||
-rw-r--r-- | rescue/tree/boot/grub/menu.lst | 5 | ||||
-rwxr-xr-x | rescue/tree/etc/oem | 41 | ||||
-rwxr-xr-x | rescue/tree/etc/rc.sysinit | 4 |
7 files changed, 97 insertions, 14 deletions
@@ -25,9 +25,6 @@ UPLOAD_DEST = $(UPLOAD_DEST_)/cooker UPLOAD_DEST_CONTRIB = $(UPLOAD_DEST_)/contrib UPLOAD_SPARC_DEST = /mnt/BIG/distrib/sparc -AUTOBOOT = $(ROOTDEST)/dosutils/autoboot/mdkinst - - .PHONY: dirs $(FLOPPY_IMG) install network_ks.rdz pcmcia_ks.rdz install: build autoboot rescue @@ -55,13 +52,9 @@ ifeq (i386,$(ARCH)) cp -f cdrom.rdz $(ROOTDEST)/lnx4win/initrd.gz /usr/sbin/rdev -v $(ROOTDEST)/lnx4win/vmlinuz 788 - install -d $(AUTOBOOT) - cp -f vmlinuz $(AUTOBOOT) - cp -f hd.rdz $(AUTOBOOT)/initrd.hd - cp -f cdrom.rdz $(AUTOBOOT)/initrd.cd - cp -f pcmcia.rdz $(AUTOBOOT)/initrd.pc - cp -f network.rdz $(AUTOBOOT)/initrd.nt - /usr/sbin/rdev -v $(AUTOBOOT)/vmlinuz 788 + install -d $(ROOTDEST)/boot + cp -f vmlinuz {hd,cdrom,pcmcia,network}.rdz $(ROOTDEST)/boot + /usr/sbin/rdev -v $(ROOTDEST)/boot/vmlinuz 788 endif dirs: @@ -101,7 +94,7 @@ upload: clean install function upload() { rsync -qSavz --verbose --exclude '*~' -e ssh --delete $(ROOTDEST)/$$1/$$2 mandrake@kenobi:/c/cooker/$$1; } ;\ upload Mandrake/mdkinst '' ;\ upload Mandrake/base {compss*,mdkinst_stage2.gz,rescue_stage2.gz} ;\ - upload dosutils/autoboot/mdkinst {initrd.*,vmlinuz} ;\ + upload boot '' ;\ upload lnx4win {initrd.gz,vmlinuz} ;\ for i in $(RELEASE_BOOT_IMG); do upload images $$i; done ;\ echo diff --git a/make_boot_img b/make_boot_img index 14dde54b1..55a25f6f9 100755 --- a/make_boot_img +++ b/make_boot_img @@ -121,6 +121,9 @@ label expert 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 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/kernel_read_part.c b/rescue/kernel_read_part.c new file mode 100644 index 000000000..4b9d16d65 --- /dev/null +++ b/rescue/kernel_read_part.c @@ -0,0 +1,39 @@ +#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); + exit(1); +} + +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) +{ + if (argc != 2) { + fprintf(stderr, "usage: kernel_read_part <hard drive device>\n"); + exit(1); + } + kernel_read(argv[1]); +} diff --git a/rescue/tree/boot/grub/menu.lst b/rescue/tree/boot/grub/menu.lst new file mode 100644 index 000000000..372c24902 --- /dev/null +++ b/rescue/tree/boot/grub/menu.lst @@ -0,0 +1,5 @@ +timeout 0 + +title oem +kernel (hd0,0)/boot/vmlinuz ramdisk_size=32000 hd vga=788 flang=fr_FR fclass=normal oem +initrd (hd0,0)/boot/hd.rdz diff --git a/rescue/tree/etc/oem b/rescue/tree/etc/oem new file mode 100755 index 000000000..e95d572e1 --- /dev/null +++ b/rescue/tree/etc/oem @@ -0,0 +1,41 @@ +#!/bin/sh + +[ "$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" + +read + +cd /proc/ide +for i in hd*; do + grep -q disk $i/media && hd=/dev/$i + grep -q cdrom $i/media && cd=/dev/$i +done + +echo "hd: $hd" +echo "cdrom: $cd" + +mkdir /cdrom ; mount -r -t iso9660 $cd /cdrom + +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 "Mounting partition" +mkdir /hd ; mount -t ext2 ${hd}1 /hd + +echo "Copying cdrom on hard drive" +cp -a /boot /cdrom/boot /cdrom/Mandrake /hd +rm /hd/Mandrake/mdkinst/usr/bin/runinstall2 + +echo "Done, oem hard drive ready! Press enter to reboot" +read +reboot
\ No newline at end of file diff --git a/rescue/tree/etc/rc.sysinit b/rescue/tree/etc/rc.sysinit index da7e07a8f..4f81e9e57 100755 --- a/rescue/tree/etc/rc.sysinit +++ b/rescue/tree/etc/rc.sysinit @@ -22,8 +22,10 @@ load ide-mod load ide-probe load ide-disk load ide-cd -load isofs load af_packet +load isofs + +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 |