The attached patch finally adds dvhtool support so we can make ip22
systems directly bootable from harddisk. This should make the mips
specific part of the bootdisks basically feature complete.
-- Guido
Index: utilities/dbootstrap/bootconfig.c
===================================================================
RCS file: /cvs/debian-boot/boot-floppies/utilities/dbootstrap/bootconfig.c,v
retrieving revision 1.129
diff -u -r1.129 bootconfig.c
--- utilities/dbootstrap/bootconfig.c 2001/07/18 23:50:36 1.129
+++ utilities/dbootstrap/bootconfig.c 2001/08/04 18:31:52
@@ -38,6 +38,9 @@
# define USE_PALO
#elif #cpu(ia64)
# define USE_ELILO
+/* for now we only support ip22 */
+#elif #cpu(mips)
+# define USE_DVHTOOL
#else
# define USE_LILO
#endif
@@ -1399,6 +1402,51 @@
}
#endif /* USE_ELILO */
+#ifdef USE_DVHTOOL
+static int run_dvhtool(void)
+{
+ int count;
+ char buf[256];
+ char* disk_name;
+ struct fdisk_partition* volhdr;
+
+ if (strcmp(Arch2, "ip22") != 0) {
+ problemBox(_("Making the system bootable from harddisk is currently only
+supported for the mips ip22 subarchitecture - sorry."),
+ _("Not an ip22 machine"));
+ return 0;
+ }
+ volhdr = fdisk_find_partition_by_type(PTYPE_SGI_VOLHDR);
+ if( !volhdr ) {
+ problemBox(_("I couldn't find any partitions with SGI disklabel. I can't make
+your system bootable from harddisk."),
+ _("No SGI disklabel found"));
+ return 1;
+ }
+ disk_name = volhdr->disk->name;
+ if ((count=readlink("/target/vmlinuz", buf, sizeof(buf))) == -1) {
+ ERRMSG("Error resolving /target/vmlinuz symlink");
+ return 1;
+ }
+ buf[count] = '\0';
+ snprintf(prtbuf, sizeof(prtbuf),
+ "dvhtool -d %s --unix-to-vh /target/%s linux", disk_name, buf );
+ if( execlog(prtbuf, LOG_DEBUG) ) {
+ problemBox(_("Dvhtool failed - cannot continue."),"Critical error");
+ return 1;
+ }
+ vaproblemBox(_("Important"),
+ _("I have coppied the kernel into the volume header of disk %s. "
+ "Please adjust your PROM settings after rebooting as follows.")
+ , disk_name);
+ vaproblemBox(_("Prom Settings"),
+ _("setenv OSLoader linux\n"
+ "setenv SystemPartition scsi(0)disk(X)rdisk(0)partition(8)\n"
+ "where X is the scsi id of disk %s"), disk_name);
+ vaproblemBox(_("Prom Settings"),
+ _("Furthermore you can set your root partition with:\n"
+ "setenv OSLoadPartition %s"), Root->name);
+ return 0;
+}
+#endif
#ifdef USE_LILO
/*
@@ -2356,8 +2404,11 @@
}
notInstalledLILO=0;
#elif #cpu (mips)
- problemBox(_("You need to setup DVHTOOL yourself, sorry"),
- _("Problem"));
+ status=run_dvhtool();
+ if(status!=0) {
+ problemBox(_("Dvhtool wasn't able to install the kernel. You can still remote
+boot and point the root device to the installed system."),_("Problem"));
+ return 1;
+ }
#elif #cpu (mipsel)
problemBox(_("You need to setup DELO yourself, sorry"),
_("Problem"));