New Installer based on dracut hw-detection (uClibc removed).

This commit is contained in:
Arne Fitzenreiter
2010-08-11 17:23:41 +02:00
parent eb91255c85
commit 6cf9e77034
52 changed files with 231 additions and 693 deletions

View File

@@ -13,7 +13,7 @@
#add_drivers+=""
# list of kernel filesystem modules to be included in the generic initramfs
filesystems+="reiser4"
filesystems+="ext2 ext3 reiserfs reiser4 iso9660 vfat"
# build initrd only to boot current hardware
#hostonly="yes"

View File

@@ -0,0 +1,22 @@
#!/bin/bash
/usr/local/sbin/setup /dev/tty2 INSTALL
/usr/bin/clear
echo "Reboot ..."
echo "Sending all processes the TERM signal..."
/sbin/killall5 -15
sleep 3
echo "Sending all processes the KILL signal..."
/sbin/killall5 -15
sleep 3
echo "Unmounting Filesystems..."
/bin/umount /sys
/bin/umount /dev/pts
/bin/umount /proc
/bin/umount /boot
/bin/umount /var/log/rrd
/bin/umount /var/lock
/bin/umount /var/run
/bin/umount /var
rm -f /etc/rc.d/rcsysinit.d/S75firstsetup \
&& /bin/mount -n -o remount,ro / \
&& /sbin/reboot -f

View File

@@ -109,24 +109,24 @@ int main(int argc, char *argv[])
}
// Load ata-piix prior kudzu because kudzu use ata-generic for ich7
mysystem("/sbin/modprobe ata_piix");
// mysystem("/sbin/modprobe ata_piix");
// Starting hardware detection
runcommandwithstatus("/bin/probehw.sh", "Probing Hardware ...");
// runcommandwithstatus("/bin/probehw.sh", "Probing Hardware ...");
// Load common modules
mysystem("/sbin/modprobe ide-generic");
mysystem("/sbin/modprobe ide-cd");
mysystem("/sbin/modprobe ide-disk");
mysystem("/sbin/modprobe ehci-hcd");
mysystem("/sbin/modprobe uhci-hcd");
mysystem("/sbin/modprobe ohci-hcd");
mysystem("/sbin/modprobe ohci1394");
mysystem("/sbin/modprobe sd_mod");
mysystem("/sbin/modprobe sr_mod");
mysystem("/sbin/modprobe usb-storage");
mysystem("/sbin/modprobe usbhid");
mysystem("/sbin/modprobe ahci");
// mysystem("/sbin/modprobe ide-generic");
// mysystem("/sbin/modprobe ide-cd");
// mysystem("/sbin/modprobe ide-disk");
// mysystem("/sbin/modprobe ehci-hcd");
// mysystem("/sbin/modprobe uhci-hcd");
// mysystem("/sbin/modprobe ohci-hcd");
// mysystem("/sbin/modprobe ohci1394");
// mysystem("/sbin/modprobe sd_mod");
// mysystem("/sbin/modprobe sr_mod");
// mysystem("/sbin/modprobe usb-storage");
// mysystem("/sbin/modprobe usbhid");
// mysystem("/sbin/modprobe ahci");
mysystem("/sbin/modprobe iso9660"); // CDROM
mysystem("/sbin/modprobe ext2"); // Boot patition
@@ -288,7 +288,7 @@ int main(int argc, char *argv[])
* the disk.
*/
/* Don't use mysystem here so we can redirect output */
sprintf(commandstring, "/bin/sfdisk -s /dev/%s > /tmp/disksize 2> /dev/null", harddrive);
sprintf(commandstring, "/sbin/sfdisk -s /dev/%s > /tmp/disksize 2> /dev/null", harddrive);
system(commandstring);
/* Calculate amount of disk space */
@@ -360,7 +360,7 @@ int main(int argc, char *argv[])
fclose(handle);
snprintf(commandstring, STRING_SIZE, "/bin/sfdisk -L -uM %s < /tmp/partitiontable", hdparams.devnode_disk);
snprintf(commandstring, STRING_SIZE, "/sbin/sfdisk -L -uM %s < /tmp/partitiontable", hdparams.devnode_disk);
if (runcommandwithstatus(commandstring, ctr[TR_PARTITIONING_DISK]))
{
errorbox(ctr[TR_UNABLE_TO_PARTITION]);
@@ -369,16 +369,16 @@ int main(int argc, char *argv[])
if (fstype == EXT2) {
mysystem("/sbin/modprobe ext2");
sprintf(mkfscommand, "/sbin/mke2fs -T ext2 -c");
sprintf(mkfscommand, "/sbin/mke2fs -T ext2");
} else if (fstype == REISERFS) {
mysystem("/sbin/modprobe reiserfs");
sprintf(mkfscommand, "/sbin/mkreiserfs -f");
} else if (fstype == EXT3) {
mysystem("/sbin/modprobe ext3");
sprintf(mkfscommand, "/sbin/mke2fs -T ext3 -c");
sprintf(mkfscommand, "/sbin/mke2fs -T ext3");
}
snprintf(commandstring, STRING_SIZE, "/sbin/mke2fs -T ext2 -c %s1", hdparams.devnode_part);
snprintf(commandstring, STRING_SIZE, "/sbin/mke2fs -T ext2 -I 128 %s1", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MAKING_BOOT_FILESYSTEM]))
{
errorbox(ctr[TR_UNABLE_TO_MAKE_BOOT_FILESYSTEM]);
@@ -453,11 +453,11 @@ int main(int argc, char *argv[])
/* Save language und local settings */
write_lang_configs(shortlangname);
/* touch the modules.dep files */
snprintf(commandstring, STRING_SIZE,
"/bin/touch /harddisk/lib/modules/%s-ipfire/modules.dep",
KERNEL_VERSION);
mysystem(commandstring);
// /* touch the modules.dep files */
// snprintf(commandstring, STRING_SIZE,
// "/bin/touch /harddisk/lib/modules/%s-ipfire/modules.dep",
// KERNEL_VERSION);
// mysystem(commandstring);
/* snprintf(commandstring, STRING_SIZE,
"/bin/touch /harddisk/lib/modules/%s-ipfire-smp/modules.dep",
KERNEL_VERSION);
@@ -474,7 +474,7 @@ int main(int argc, char *argv[])
mysystem("/bin/mount --bind /sys /harddisk/sys");
/* Build cache lang file */
snprintf(commandstring, STRING_SIZE, "/sbin/chroot /harddisk /usr/bin/perl -e \"require '" CONFIG_ROOT "/lang.pl'; &Lang::BuildCacheLang\"");
snprintf(commandstring, STRING_SIZE, "/usr/sbin/chroot /harddisk /usr/bin/perl -e \"require '" CONFIG_ROOT "/lang.pl'; &Lang::BuildCacheLang\"");
if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_LANG_CACHE]))
{
errorbox(ctr[TR_UNABLE_TO_INSTALL_LANG_CACHE]);
@@ -491,20 +491,20 @@ int main(int argc, char *argv[])
replace("/harddisk/etc/fstab", "FSTYPE", "reiserfs");
replace("/harddisk/boot/grub/grub.conf", "MOUNT", "ro");
} else if (fstype == EXT3) {
snprintf(commandstring, STRING_SIZE, "tune2fs -j %s3", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_JOURNAL_EXT3]))
{
errorbox(ctr[TR_JOURNAL_ERROR]);
replace("/harddisk/etc/fstab", "FSTYPE", "ext2");
goto NOJOURNAL;
}
snprintf(commandstring, STRING_SIZE, "tune2fs -j %s4", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_JOURNAL_EXT3]))
{
errorbox(ctr[TR_JOURNAL_ERROR]);
replace("/harddisk/etc/fstab", "FSTYPE", "ext2");
goto NOJOURNAL;
}
//snprintf(commandstring, STRING_SIZE, "tune2fs -j %s3", hdparams.devnode_part);
//if (runcommandwithstatus(commandstring, ctr[TR_JOURNAL_EXT3]))
//{
// errorbox(ctr[TR_JOURNAL_ERROR]);
// replace("/harddisk/etc/fstab", "FSTYPE", "ext2");
// goto NOJOURNAL;
//}
//snprintf(commandstring, STRING_SIZE, "tune2fs -j %s4", hdparams.devnode_part);
//if (runcommandwithstatus(commandstring, ctr[TR_JOURNAL_EXT3]))
//{
// errorbox(ctr[TR_JOURNAL_ERROR]);
// replace("/harddisk/etc/fstab", "FSTYPE", "ext2");
// goto NOJOURNAL;
//}
replace("/harddisk/etc/fstab", "FSTYPE", "ext3");
NOJOURNAL:
replace("/harddisk/boot/grub/grub.conf", "MOUNT", "ro");
@@ -513,9 +513,9 @@ int main(int argc, char *argv[])
replace("/harddisk/boot/grub/grub.conf", "KVER", KERNEL_VERSION);
/* Going to make our initrd... */
snprintf(commandstring, STRING_SIZE, "/sbin/chroot /harddisk /usr/local/bin/rebuild-initrd");
/* snprintf(commandstring, STRING_SIZE, "/usr/sbin/chroot /harddisk /usr/local/bin/rebuild-initrd");
runcommandwithstatus(commandstring, ctr[TR_BUILDING_INITRD]);
*/
sprintf(string, "root=%s3", hdparams.devnode_part_run);
replace( "/harddisk/boot/grub/grub.conf", "root=ROOT", string);
mysystem("ln -s grub.conf /harddisk/boot/grub/menu.lst");
@@ -523,7 +523,7 @@ int main(int argc, char *argv[])
system("sed -e 's#/harddisk#/#g' -e 's#//#/#g' < /proc/mounts > /harddisk/etc/mtab");
snprintf(commandstring, STRING_SIZE,
"/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk);
"/usr/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk);
if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_GRUB])) {
errorbox(ctr[TR_UNABLE_TO_INSTALL_GRUB]);
goto EXIT;
@@ -574,10 +574,10 @@ EXIT:
fclose(flog);
newtFinished();
if (!unattended) {
if (system("/sbin/chroot /harddisk /usr/local/sbin/setup /dev/tty2 INSTALL"))
printf("Unable to run setup.\n");
}
// if (!unattended) {
// if (system("/usr/sbin/chroot /harddisk /usr/local/sbin/setup /dev/tty2 INSTALL"))
// printf("Unable to run setup.\n");
// }
if (system("/bin/umount /harddisk/proc"))
printf("Unable to umount /harddisk/proc.\n");
@@ -602,8 +602,9 @@ EXIT:
system("/bin/umount /harddisk/var");
system("/bin/umount /harddisk/boot");
system("/bin/umount /harddisk");
system("/etc/halt");
if (!(allok))
system("/etc/halt");
return 0;
}

View File

@@ -0,0 +1,33 @@
diff -Naur org/init new/init
--- init 2010-06-17 10:46:29.000000000 +0200
+++ init 2010-08-10 17:55:41.000000000 +0200
@@ -111,8 +111,9 @@
getarg 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
source_all cmdline
-[ -z "$root" ] && die "No or empty root= argument"
-[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
+# Disable root argument check ...
+#[ -z "$root" ] && die "No or empty root= argument"
+#[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
# Network root scripts may need updated root= options,
# so deposit them where they can see them (udev purges the env)
@@ -202,12 +203,15 @@
done
i=$(($i+1))
- [ $i -gt $RDRETRY ] \
- && { flock -s 9 ; emergency_shell "No root device found"; } 9>/.console_lock
+ # Start IPFire installer after root was not found ;)
+ [ $i -gt $RDRETRY ] && break 2;
+
done
unset job
unset queuetriggered
+/etc/rc_installer
+
# pre-mount happens before we try to mount the root filesystem,
# and happens once.
getarg 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"