Steven Chamberlain: > On 01/09/13 18:04, Robert Millan wrote: >> [...] maybe we should move the modules to /boot like >> upstream does? And make /lib/modules a symlink or something. > > Yes I think so. It already works with grub2 (it resolves the symlink > for paths used in grub.cfg), and it seems justified by the FHS too: > > http://www.debian.org/doc/packaging-manuals/fhs/fhs-2.3.html#BOOTSTATICFILESOFTHEBOOTLOADER >> /boot : Static files of the boot loader >> Purpose: >> This directory contains everything required for the boot process >> [...] before the kernel begins executing user-mode programs. > > whereas on Linux the required kernel modules would be already copied to > /boot/initrd.img > > The FHS docs also imply that /lib/modules may be a symlink: > >> The following directories, or symbolic links to directories, must be in >> /lib, if the corresponding subsystem is installed: >> >> Directory Description >> modules Loadable kernel modules (optional)
Thanks for the research. I've just made a patch for this, and partially tested it on kfreebsd-10. If there is no opposition I'll commit it after kernel-wedge is updated (it required a fix to handle symlinks). -- Robert Millan
Index: debian/control.in =================================================================== --- debian/control.in (revision 4929) +++ debian/control.in (working copy) @@ -11,7 +11,7 @@ @cc_pkg@, libdb-dev, libbsd-dev (>= 0.3.0), pkg-config, libsbuf-dev (>= 9.0+ds1-2), - kernel-wedge (>= 2.79) [kfreebsd-any], + kernel-wedge (>= 2.88) [kfreebsd-any], Standards-Version: 3.9.2 Package: kfreebsd-source-@version@ Index: debian/rules =================================================================== --- debian/rules (revision 4930) +++ debian/rules (working copy) @@ -157,8 +157,8 @@ # Change ident to the kernel version sed -i -e 's/^i=.*/i="Debian $* ($(full_version))"/g' $(FLAVOR_DIR)-$*/sys/conf/newvers.sh - # Set /lib/modules/${RELEASE} as module dir - sed -i -e 's,^KODIR?=.*,KODIR="/lib/modules/$(version)-$(abiname)-$*",g' $(FLAVOR_DIR)-$*/sys/conf/kern.pre.mk + # Override module dir + sed -i -e 's,^KODIR?=.*,KODIR="/boot/modules/$(version)-$(abiname)-$*",g' $(FLAVOR_DIR)-$*/sys/conf/kern.pre.mk # Always set explicit link target to match with ld's implicit target (needed # to build on non-kFreeBSD) @@ -212,7 +212,7 @@ dh_testroot dh_clean -k -pkfreebsd-image-$(version)-$(abiname)-$* - mkdir -p $(IMAGE_PACKAGE)-$*/{boot,lib/modules/$(version)-$(abiname)-$*} + mkdir -p $(IMAGE_PACKAGE)-$*/boot/modules/$(version)-$(abiname)-$* # make the install target happy install -o root -g root -m 644 \ @@ -233,12 +233,12 @@ # now install the kernel $(MAKE) CC=$(cc_cmd) -C $(FLAVOR_DIR)-$*/sys/$(kfreebsd_cpu)/compile/$(configfile) DESTDIR=$(IMAGE_PACKAGE)-$* install - mv $(IMAGE_PACKAGE)-$*/lib/modules/$(version)-$(abiname)-$*/kernel $(IMAGE_PACKAGE)-$*/boot/kfreebsd-$(version)-$(abiname)-$* + mv $(IMAGE_PACKAGE)-$*/boot/modules/$(version)-$(abiname)-$*/kernel $(IMAGE_PACKAGE)-$*/boot/kfreebsd-$(version)-$(abiname)-$* chmod 644 $(IMAGE_PACKAGE)-$*/boot/kfreebsd-$(version)-$(abiname)-$* gzip -9 $(IMAGE_PACKAGE)-$*/boot/kfreebsd-$(version)-$(abiname)-$* # fix broken perms in module dir - -chmod 644 $(IMAGE_PACKAGE)-$*/lib/modules/$(version)-$(abiname)-$*/* + -chmod 644 $(IMAGE_PACKAGE)-$*/boot/modules/$(version)-$(abiname)-$*/* # remove loader.conf (part of kfreebsd-loader) rm -f $(IMAGE_PACKAGE)-$*/boot/loader.conf @@ -247,6 +247,13 @@ # remove device.hints (built into kernel) rm -f $(IMAGE_PACKAGE)-$*/boot/device.hints + # compatibility symlink + mkdir -p $(IMAGE_PACKAGE)-$*/lib/modules + ln -s \ + ../../boot/modules/$(version)-$(abiname)-$* \ + $(IMAGE_PACKAGE)-$*/lib/modules/$(version)-$(abiname)-$* + + # README file mkdir -p $(IMAGE_PACKAGE)-$*/usr/share/doc/kfreebsd-image-$(version)-$(abiname)-$* install -p -o root -g root -m 644 \ @@ -333,12 +340,12 @@ dh_installdocs -s dh_installchangelogs -s dh_link -s - dh_strip -s -X/boot -X/lib/modules + dh_strip -s -X/boot dh_compress -s dh_fixperms -s dh_makeshlibs -s dh_installdeb -s - dh_shlibdeps -s -X/boot -X/lib/modules + dh_shlibdeps -s -X/boot dh_gencontrol -s dh_md5sums -s dh_builddeb -s -- -Zxz