* Move /kernel to /boot/kernel and /modules to /boot/modules.
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 1 Sep 2008 19:39:49 +0000 (19:39 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 1 Sep 2008 19:39:49 +0000 (19:39 +0000)
* Adjust the loader to check /boot before / (it still checks both).  Note
  that '/' from the point of view of the loader might be /boot from the
  point of view of the running kernel if /boot is a boot partition.

* Adjust make upgrade to move /kernel to /boot/kernel and /modules to
  /boot/modules.

* Installkernel now requires that you have built and installed a new world
  and done an upgrade, and will refuse to install if you haven't.

  This is so we don't end up with four copies of everything in / and
  potentially fill it up.  Plus it clears up any confusion as to which
  kernel the loader is loading.

NOTE: FreeBSD uses /boot/kernel/{kernel,modules}.  We will not be doing that.
To expand into multiple kernels our intention is to use /boot/kernel.NAME and
/boot/modules.NAME instead, which reduces the directory level clutter.

etc/Makefile
etc/mtree/BSD.root.dist
share/mk/bsd.own.mk
sys/boot/common/help.common
sys/boot/common/loader.8
sys/boot/common/module.c
sys/boot/forth/loader-bootp.conf
sys/boot/forth/loader.conf
sys/conf/kern.post.mk
sys/conf/kern.pre.mk
sys/kern/kern_linker.c

index 75bf1e1..0e6574c 100644 (file)
@@ -1,6 +1,6 @@
 #      from: @(#)Makefile      5.11 (Berkeley) 5/21/91
 # $FreeBSD: src/etc/Makefile,v 1.219.2.38 2003/03/04 09:49:00 ru Exp $
-# $DragonFly: src/etc/Makefile,v 1.214 2008/08/30 16:34:29 hasso Exp $
+# $DragonFly: src/etc/Makefile,v 1.215 2008/09/01 19:39:41 dillon Exp $
 
 .if !defined(NO_SENDMAIL)
 SUBDIR=        sendmail
@@ -201,6 +201,24 @@ upgrade_etc:       preupgrade remove-obsolete-files
 .if !defined(NO_OPENSSH)
        cd ${.CURDIR}/../secure/lib/libssh; ${MAKE} -f Makefile.etc obj
        cd ${.CURDIR}/../secure/lib/libssh; ${MAKE} -f Makefile.etc install
+.endif
+.if exists(${DESTDIR}/boot)
+.if exists(${DESTDIR}/kernel)
+       chflags noschg ${DESTDIR}/kernel
+       mv ${DESTDIR}/kernel ${DESTDIR}/boot/kernel
+       chflags schg ${DESTDIR}/boot/kernel
+.endif
+.if exists(${DESTDIR}/modules)
+       mv ${DESTDIR}/modules ${DESTDIR}/boot/modules
+       rm -rf ${DESTDIR}/boot/modules/modules
+.endif
+.if exists(${DESTDIR}/kernel.old)
+       mv ${DESTDIR}/kernel.old ${DESTDIR}/boot/kernel.old
+.endif
+.if exists(${DESTDIR}/modules.old)
+       mv ${DESTDIR}/modules.old ${DESTDIR}/boot/modules.old
+       rm -rf ${DESTDIR}/boot/modules.old/modules.old
+.endif
 .endif
        ldconfig -R
 .if !defined(BINARY_UPGRADE) # binary upgrade just copies these nodes
index bbd26d7..8e5ceb8 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/etc/mtree/BSD.root.dist,v 1.45.2.4 2002/06/10 15:33:27 obrien Exp $
-# $DragonFly: src/etc/mtree/BSD.root.dist,v 1.11 2008/02/02 18:24:00 matthias Exp $
+# $DragonFly: src/etc/mtree/BSD.root.dist,v 1.12 2008/09/01 19:39:49 dillon Exp $
 #
 # Please see the file src/etc/mtree/README before making changes to this file.
 #
@@ -9,6 +9,8 @@
     bin
     ..
     boot
+        modules
+        ..
         defaults
         ..
     ..
@@ -72,8 +74,6 @@
     ..
     mnt
     ..
-    modules
-    ..
     proc            mode=0555
     ..
     root
index 741ffc6..7342728 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/share/mk/bsd.own.mk,v 1.27.2.4 2002/07/22 14:21:51 ru Exp $
-# $DragonFly: src/share/mk/bsd.own.mk,v 1.15 2005/07/30 13:59:45 joerg Exp $
+# $DragonFly: src/share/mk/bsd.own.mk,v 1.16 2008/09/01 19:39:42 dillon Exp $
 #
 # The include file <bsd.own.mk> set common variables for owner,
 # group, mode, and directories. Defaults are in brackets.
@@ -151,7 +151,7 @@ BINGRP?=    wheel
 BINMODE?=      555
 NOBINMODE?=    444
 
-KMODDIR?=      /modules
+KMODDIR?=      /boot/modules
 KMODOWN?=      ${BINOWN}
 KMODGRP?=      ${BINGRP}
 KMODMODE?=     ${BINMODE}
index 6631bfa..31ac6e1 100644 (file)
@@ -6,7 +6,7 @@
        ?
 
        The help command displays help on commands and their usage.
-       $DragonFly: src/sys/boot/common/help.common,v 1.5 2008/02/19 21:41:07 thomas Exp $
+       $DragonFly: src/sys/boot/common/help.common,v 1.6 2008/09/01 19:39:45 dillon Exp $
 
        In command help, a term enclosed with <...> indicates a value as
        described by the term.  A term enclosed with [...] is optional,
 
        Sets the list of directories which will be searched in for modules
        named in a load command or implicitly required by a dependency. The
-       default module_path is "/;/boot;/modules".
+       default module_path is "/boot;/boot/modules;/;/modules".
 
 ################################################################################
 # Tset Sprompt DSet the command prompt
index 921424f..fc88c05 100644 (file)
@@ -23,7 +23,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\" $FreeBSD: src/sys/boot/common/loader.8,v 1.57 2003/06/29 20:57:55 brueffer Exp $
-.\" $DragonFly: src/sys/boot/common/loader.8,v 1.19 2008/07/11 23:42:46 thomas Exp $
+.\" $DragonFly: src/sys/boot/common/loader.8,v 1.20 2008/09/01 19:39:45 dillon Exp $
 .\"
 .\" Note: The date here should be updated whenever a non-trivial
 .\" change is made to the manual page.
@@ -373,7 +373,7 @@ Define the number of lines on the screen, to be used by the pager.
 Sets the list of directories which will be searched for modules
 named in a load command or implicitly required by a dependency.
 The default value for this variable is
-.Dq Li /;/boot;/modules .
+.Dq Li /boot;/boot/modules;/;/modules .
 .It Va num_ide_disks
 Sets the number of IDE disks as a workaround for some problems in
 finding the root disk at boot.
index 2948ed4..1446408 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/boot/common/module.c,v 1.25 2003/08/25 23:30:41 obrien Exp $
- * $DragonFly: src/sys/boot/common/module.c,v 1.4 2004/12/20 13:13:19 joerg Exp $
+ * $DragonFly: src/sys/boot/common/module.c,v 1.5 2008/09/01 19:39:45 dillon Exp $
  */
 
 /*
@@ -66,7 +66,7 @@ static void                   moduledir_rebuild(void);
 /* load address should be tweaked by first module loaded (kernel) */
 static vm_offset_t     loadaddr = 0;
 
-static const char      *default_searchpath ="/;/boot;/modules";
+static const char      *default_searchpath ="/boot;/boot/modules;/;/modules";
 
 static STAILQ_HEAD(, moduledir) moduledir_list = STAILQ_HEAD_INITIALIZER(moduledir_list);
 
index b18d14b..1473b30 100644 (file)
@@ -7,7 +7,7 @@
 # All arguments must be in double quotes.
 #
 # $FreeBSD: src/sys/boot/forth/loader.conf,v 1.72 2003/07/01 01:03:32 brueffer Exp $
-# $DragonFly: src/sys/boot/forth/loader-bootp.conf,v 1.25 2008/07/26 00:21:30 swildner Exp $
+# $DragonFly: src/sys/boot/forth/loader-bootp.conf,v 1.26 2008/09/01 19:39:46 dillon Exp $
 
 ##############################################################
 ###  Basic configuration options  ############################
@@ -51,7 +51,7 @@ bitmap_type="splash_image_data" # and place it on the module_path
 #loader_color="NO"             # Set to YES for a color version of Fred
 #console="vidconsole"          # Set the current console
 #currdev="disk1s1a"            # Set the current device
-module_path="/;/boot;/modules" # Set the module search path
+module_path="/boot;/boot/modules;/;/modules"   # Set the module search path
 #prompt="\\${interpret}"       # Set the command prompt
 #root_disk_unit="0"            # Force the root disk unit number
 #rootdev="disk1s1a"            # Set the root filesystem
index 0c221a0..67e1888 100644 (file)
@@ -7,7 +7,7 @@
 # All arguments must be in double quotes.
 #
 # $FreeBSD: src/sys/boot/forth/loader.conf,v 1.72 2003/07/01 01:03:32 brueffer Exp $
-# $DragonFly: src/sys/boot/forth/loader.conf,v 1.32 2008/07/26 00:21:30 swildner Exp $
+# $DragonFly: src/sys/boot/forth/loader.conf,v 1.33 2008/09/01 19:39:46 dillon Exp $
 
 ##############################################################
 ###  Basic configuration options  ############################
@@ -23,7 +23,9 @@ userconfig_script_load="NO"
 userconfig_script_name="/boot/kernel.conf"
 userconfig_script_type="userconfig_script"
 
-loader_conf_files="/boot/loader.conf /boot/loader.conf.local"
+# Must be accessible if either / or /boot is the boot directory.
+#
+loader_conf_files="/boot/loader.conf /boot/loader.conf.local /loader.conf /loader.conf.local"
 nextboot_conf="/boot/nextboot.conf"
 nextboot_enable="NO"
 
@@ -51,7 +53,7 @@ bitmap_type="splash_image_data" # and place it on the module_path
 #loader_color="NO"             # Set to YES for a color version of Fred
 #console="vidconsole"          # Set the current console
 #currdev="disk1s1a"            # Set the current device
-module_path="/;/boot;/modules" # Set the module search path
+module_path="/boot;/boot/modules;/;/modules"   # Set the module search path
 #prompt="\\${interpret}"       # Set the command prompt
 #root_disk_unit="0"            # Force the root disk unit number
 #rootdev="disk1s1a"            # Set the root filesystem
index 8c2a001..53bca8c 100644 (file)
@@ -1,4 +1,4 @@
-# $DragonFly: src/sys/conf/kern.post.mk,v 1.13 2008/07/27 23:38:27 mneumann Exp $
+# $DragonFly: src/sys/conf/kern.post.mk,v 1.14 2008/09/01 19:39:47 dillon Exp $
 # 
 # This Makefile covers the bottom part of the MI build instructions
 #
@@ -148,6 +148,12 @@ kernel-installable:
        @exit 1
 .endif
 .endif
+       @if [ -f ${DESTDIR}/${CHECKKERNNAME} ]; then \
+               echo "You need to make buildworld, installworld, and upgrade"; \
+               echo "before you can install a new kernel, because the"; \
+               echo "kernel and modules have moved to /boot"; \
+               exit 1; \
+       fi
        @exit 0
 
 .if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES)
@@ -193,24 +199,24 @@ modules-tags:
 modules-install:
 .if !defined(NO_MODULES_OLD)
 .  ifdef NO_KERNEL_OLD_STRIP
-       set -- ${DESTDIR}/modules/*; \
+       set -- ${DESTDIR}/boot/modules/*; \
        if [ -f "$$1" ]; then \
-               mkdir -p ${DESTDIR}/modules.old; \
+               mkdir -p ${DESTDIR}/boot/modules.old; \
                for file; do \
-               cp -p $$file ${DESTDIR}/modules.old; \
+               cp -p $$file ${DESTDIR}/boot/modules.old; \
                done; \
        fi
 .  else
-       set -- ${DESTDIR}/modules/*; \
+       set -- ${DESTDIR}/boot/modules/*; \
        if [ -f "$$1" ]; then \
-               mkdir -p ${DESTDIR}/modules.old; \
+               mkdir -p ${DESTDIR}/boot/modules.old; \
                for file; do \
-               ${OBJCOPY} --strip-debug $$file ${DESTDIR}/modules.old/$${file##*/}; \
+               ${OBJCOPY} --strip-debug $$file ${DESTDIR}/boot/modules.old/$${file##*/}; \
                done; \
        fi
 .  endif
 .endif
-       mkdir -p ${DESTDIR}/modules # Ensure that the modules directory exists!
+       mkdir -p ${DESTDIR}/boot/modules # Ensure that the modules directory exists!
        cd $S ; env ${MKMODULESENV} ${MAKE} -f Makefile.modules install
 
 modules-reinstall:
index 5d0820c..9d12875 100644 (file)
@@ -1,4 +1,4 @@
-# $DragonFly: src/sys/conf/kern.pre.mk,v 1.5 2007/02/22 21:02:49 corecode Exp $
+# $DragonFly: src/sys/conf/kern.pre.mk,v 1.6 2008/09/01 19:39:47 dillon Exp $
 #
 # This Makefile covers the top part of the MI kernel build instructions
 #
@@ -103,7 +103,8 @@ SELECTEDKERNEL= ${KERNEL}.debug
 FULLKERNEL=    ${KERNEL}.nodebug
 SELECTEDKERNEL= ${KERNEL}.stripped
 .endif
-DESTKERNNAME?= ${KERNEL}
+DESTKERNNAME?= boot/${KERNEL}
+CHECKKERNNAME?=        ${KERNEL}
 
 
 MKMODULESENV=  MAKEOBJDIRPREFIX=${.OBJDIR} BUILDING_WITH_KERNEL=${.OBJDIR}
index 4791fd2..aabe8ad 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/kern_linker.c,v 1.41.2.3 2001/11/21 17:50:35 luigi Exp $
- * $DragonFly: src/sys/kern/kern_linker.c,v 1.43 2008/02/06 22:37:46 nth Exp $
+ * $DragonFly: src/sys/kern/kern_linker.c,v 1.44 2008/09/01 19:39:44 dillon Exp $
  */
 
 #include "opt_ddb.h"
@@ -1069,7 +1069,7 @@ SYSINIT(preload, SI_BOOT2_KLD, SI_ORDER_MIDDLE, linker_preload, 0);
  * character as a separator to be consistent with the bootloader.
  */
 
-static char linker_path[MAXPATHLEN] = "/;/boot;/modules";
+static char linker_path[MAXPATHLEN] = "/boot;/boot/modules;/;/modules";
 
 SYSCTL_STRING(_kern, OID_AUTO, module_path, CTLFLAG_RW, linker_path,
              sizeof(linker_path), "module load search path");