[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [RFC]: d-i, /dev, busybox



Here's a diff that makes method A work.  This is my current favorite, the one
I'll use if I don't get objections or other ideas.

diff -ur busybox-0.49pre.orig/debian/Config.h-udeb busybox-0.49pre/debian/Config.h-udeb
--- busybox-0.49pre.orig/debian/Config.h-udeb	Sat Jan 20 13:43:43 2001
+++ busybox-0.49pre/debian/Config.h-udeb	Mon Feb 12 21:36:29 2001
@@ -59,7 +59,7 @@
 //#define BB_LOGNAME
 #define BB_LS
 //#define BB_LSMOD
-//#define BB_MAKEDEVS
+#define BB_MAKEDEVS
 //#define BB_MD5SUM
 #define BB_MKDIR
 //#define BB_MKFIFO
diff -ur busybox-0.49pre.orig/debian/rules busybox-0.49pre/debian/rules
--- busybox-0.49pre.orig/debian/rules	Wed Dec 20 12:41:02 2000
+++ busybox-0.49pre/debian/rules	Mon Feb 12 21:53:29 2001
@@ -105,6 +105,8 @@
 	(cd $(bbubd); $(MAKE) "BB_SRC_DIR=../../" "PREFIX=../../$(bbu)" install)
 	mkdir -p $(bbu)/usr/share/man/man1/
 	cp $(bbubd)/docs/BusyBox.1 $(bbu)/usr/share/man/man1/busybox.1
+	-rm $(bbu)/linuxrc 
+	ln -s ../bin/busybox $(bbu)/sbin/linuxrc
 
 three_quarter_clean:
 	dh_testdir


Mon, Feb 12, 2001 at 08:25:15PM -0800 wrote:
> My goal is to make debian-installer create the files in /dev on boot, and I
> would also like to use busybox's linuxrc-init-inittab feature because it is
> clean and fairly standard.  There are a couple ways we can do this, all have
> drawbacks, I know this is a solved problem so I'm looking for advice, someone to
> poitn out something I missed.
> 
> I've gotten Methods A and B to work so there aren't any hidden problems with
> them as far as I know.
> 
> -----
> Method A
> 
> This one is cool because I don't have to create anything in /dev
> 
> proposed flow:
> -linuxrc isn't busybox init but rather a script that populates /dev/ and then
> calls init(linuxrc) in a funny way. /linuxrc looks like this:
> # cat /linuxrc
> #!/bin/sh
> /etc/init.d/makedevs
> /sbin/linuxrc
> #
> -/sbin/linuxrc is a smylink to /bin/busybox, it is called that way so it
> behaves the way I want it to.  I feel a bit wierd about this, I feel like I am
> abusing busybox, or something.
> 
> -----------
> Method B
> 
> This one is grimerier in that it will require more patches to busybox, but in
> some ways makes more sense.
> 
> Here's one proposed flow (this works, with the included patch to busybox, though
> I still have to create /dev/null beforehand.):
> 
> -linuxrc (in busybox pretty much same as init) reads inittab
> -linuxrc executes /etc/init.d/rcS
> -/etc/init.d/rcS creates nodes in /dev/ first thing, then does other stuff
> -linuxrc can now do other stuff since /dev is populated.
> 
> 
> One problem that this patch tries to fix:
> 
> -when inittab is read busybox makes sure the tty existsi for each entry, if it
> doesn't exist the action is ditched.  Since inittab is read before /dev is
> populated this isn't what we want.
> 
> Another problem is that I need to create /dev/null so rcS has a tty.  This could
> be fixed by applying another patch to busybox.
> 
> ------------------------
> Method C
> 
> Don't use busybox init (linuxrc) at all.  We roll our own simple boot sequence.
> I think we'd rather not do it this way.  I'm in favor of using ready-made tools
> when possible.
> 
> 
> --------------
> 
> Thoughts, critisism, wisdom, send it my way.
> 
> Thanks,
> 
> David
> 
> 
> 
> Exhibit 1 : This is a patch that makes Method B work.
> 
> diff -uwr orig/busybox-0.49pre/debian/Config.h-udeb busybox-0.49pre/debian/Config.h-udeb
> --- orig/busybox-0.49pre/debian/Config.h-udeb	Sat Jan 20 13:43:43 2001
> +++ busybox-0.49pre/debian/Config.h-udeb	Mon Feb 12 19:10:41 2001
> @@ -59,7 +59,7 @@
>  //#define BB_LOGNAME
>  #define BB_LS
>  //#define BB_LSMOD
> -//#define BB_MAKEDEVS
> +#define BB_MAKEDEVS
>  //#define BB_MD5SUM
>  #define BB_MKDIR
>  //#define BB_MKFIFO
> @@ -180,6 +180,13 @@
>  //
>  // Make init use a simplified /etc/inittab file (recommended).
>  #define BB_FEATURE_USE_INITTAB
> +
> +// If init sees problems with /etc/inittab it will abort.  If this is
> +// not defined then iupon encountering problems with /etc/inittab init 
> +// will assume the inittab author knew what they were doing and will 
> +// continue as long as possible with potentially unpredictable results. 
> +// 
> +//#define BB_FEATURE_STRICT_INITTAB
>  //
>  //Enable init being called as /linuxrc
>  #define BB_FEATURE_LINUXRC
> diff -uwr orig/busybox-0.49pre/init.c busybox-0.49pre/init.c
> --- orig/busybox-0.49pre/init.c	Wed Dec 13 08:41:29 2000
> +++ busybox-0.49pre/init.c	Mon Feb 12 19:34:57 2001
> @@ -892,12 +892,14 @@
>  
>  					strcpy(tmpConsole, "/dev/");
>  					strncat(tmpConsole, id, 200);
> +#ifdef BB_FEATURE_STRICT_INITTAB
>  					if (stat(tmpConsole, &statBuf) != 0) {
>  						message(LOG | CONSOLE,
>  								"device '%s' does not exist.  Did you read the directions?\n",
>  								tmpConsole);
>  						break;
>  					}
> +#endif /* BB_FEATURE_STRICT_INITTAB */
>  					id = tmpConsole;
>  				}
>  				new_initAction(a->action, process, id);
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-boot-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: