Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Aug 2002 07:21:23 +0900
From:      Hiroharu Tamaru <tamaru@myn.rcast.u-tokyo.ac.jp>
To:        freebsd-hackers@FreeBSD.ORG
Cc:        dirkx@covalent.net, tamaru@myn.rcast.u-tokyo.ac.jp
Subject:   Re: forth/kernel name with a variable.
Message-ID:  <sa6ofbvsvj0.wl@gin.myn.rcast.u-tokyo.ac.jp>
In-Reply-To: Your message of "Sun, 16 Jun 2002 23:20:55 %2B0200 (CEST)". <Pine.OSX.4.43.0206162317010.339-100000@mobile.webweaving.org>
References:  <Pine.OSX.4.43.0206162317010.339-100000@mobile.webweaving.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

On Sun, 16 Jun 2002 23:20:55 +0200 (CEST),
dirkx@covalent.net wrote:
> During a diskless boot (i.e. after the PXE stage); I'd like to get to load
> (or try to load) a configuration file which is machine specific; e.g.
> something along the lines of:
> 
>         # >> /mboot/boot/defaults/loader.conf
>         #
>         ....
>         loader_conf_files="/boot/device.hints /boot/loader.conf
>                 /boot/loader.conf.local /boot/\\${boot.netif.ip}.conf
>         /boot/nextboot.conf"
>         ....
> 
> where at least an attempt is made to get a machine specific file (in this
> case to define a kernel boot file which is specific to that machine) - as
> this would allow me to reduce the footprint on the boot/dhcp/tftp server
> considerably.
> 
> Any hints ? (The above does not get substituted).
> 
> Dw
> -- 
> Dirk-Willem van Gulik

I was looking for the same feature, and could not come up
with a Right Way either.  Since I wanted to hack as little
as possible, and also not to touch files that are updated so
often in the repository, I ended up with the following hack:

1) patch loader.rc

--- loader.rc-  Fri Dec 28 21:05:23 2001
+++ loader.rc   Thu May 16 06:55:45 2002
@@ -5,7 +5,26 @@
 include /boot/loader.4th
 
 \ Reads and processes loader.rc
-start
+\ start
+
+only forth also support-functions definitions
+
+\ This is for use in 10.0.0.100.rc files
+: initialize_name ( addr len -- )
+  strdup conf_files .len ! conf_files .addr !
+;
+
+\ Need to compile a word to use 'catch' feature
+: mystart
+  s" /boot/defaults/loader.conf" initialize include_conf_files
+  s" include /boot/${boot.netif.ip}.rc" ['] evaluate catch
+  any_conf_read? if
+    load_kernel
+    load_modules
+  then
+;
+
+mystart
 
 \ Tests for password -- executes autoboot first if a password was defined
 check-password

2) say your IP is 10.0.0.100, then create a file
   /boot/10.0.0.100.rc that has a one line content like
   this (the position and the number of the spaces seems to count):
s" /boot/10.0.0.100.conf" initialize_name include_conf_files

3) write your favorite config in /boot/10.0.0.100.conf in
   the same syntax as loader.conf

4) Things should work as desired.

NOTE: the order the files are read are:
	/boot/defaults/loader.conf
	/boot/device.hints
	/boot/loader.conf
	/boot/loader.conf.local
	/boot/10.0.0.100.conf

Oh, and by the way, this was a 4.5-STABLE box when I did the
hack;  I guess what you are playing with is a -CURRENT
box. YMMV.

I wanted to avoid the 10.0.0.100.rc file, but could hardly
read nor write the 4th language.  I wish someone with a 4th
expertise would write a real solution and commit it to
-CURRENT and -STABLE.  The diskless stuffs are hard to live
with without this feature if you have a heterogeneous
environment where you need to switch the kernel image
themselves according to the boxes' h/w.

P.S.
  Please keep me in the CC line, I'm not subscribed to this
list; I found the original message in the archives.
-- 
Hiroharu Tamaru

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?sa6ofbvsvj0.wl>