From: Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
To: openembedded-devel@lists.openembedded.org
Subject: [RFC] Rootfs without busybox in it
Date: Fri, 19 Mar 2010 17:52:12 +0100 [thread overview]
Message-ID: <201003191752.13129.marcin@juszkiewicz.com.pl> (raw)
[-- Attachment #1: Type: text/plain, Size: 1876 bytes --]
Hi
As part of my work for BugLabs company I am working on creating root
filesystem which does not rely on BusyBox for 90% of commands but rather use
normal versions of them.
I have something what boots and more or less works but found few issues for
which I want to get some discussion.
1. 'ifupdown' package needed changes:
- removal of 'networking' initscript
- removal of 'interfaces' definition
- shipping /etc/network/run/ directory
first two are present in 'netbase' and are usually more optimised for OE
targets, last one is required for keeping information about state of
interfaces
2. lack of '/bin/sh' makes device not bootable
One solution is to use 'update-alternatives' script for handling that. But
this is 'egg & chicken' problem because 'u-a' is shell script. So far my
temporary solution is creation of 'bash-sh' package which symlinks '/bin/bash'
in post install script and in pre remove symlinks it to busybox. It is not
ideal but I needed something to get it working.
3. lack of '/etc/init.d/hwclock.sh'
We provide it with BusyBox package, Debian has own one in util-linux(-ng)
package. I am planning to strip Debian one from log functions and test it.
4. lack of 'start-stop-daemon'
So far I am using one from 'dpkg' but not extracted it to separate package.
5. 'adduser' is from 'tinylogin'
We can not use Debian one because it is written in Perl. 'useradd' comes from
'shadow' package. There are few versions of 'adduser' command in contrib/
directory of shadow sources - 'adduser.sh' one looks simplest.
Tinylogin should be dropped in OE anyway in favour of BusyBox (but that's
other story).
Will write more when will remind them.
Regards,
--
JID: hrw@jabber.org
Website: http://marcin.juszkiewicz.com.pl/
LinkedIn: http://www.linkedin.com/in/marcinjuszkiewicz
[-- Attachment #2: 0001-ifupdown-do-not-ship-files-present-in-netbase.patch --]
[-- Type: text/x-patch, Size: 2163 bytes --]
From b8664428e4c7c60795d0682397376dd91983add2 Mon Sep 17 00:00:00 2001
From: Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
Date: Thu, 18 Mar 2010 16:12:03 +0100
Subject: [PATCH] ifupdown: do not ship files present in netbase
There are two files which are also present in netbase:
- /etc/init.d/networking
- /etc/network/interfaces
netbase versions are more suited for OE targets
Also ship /etc/network/run/ dir for iface state
Signed-off-by: Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
---
recipes/ifupdown/ifupdown_0.6.8.bb | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/recipes/ifupdown/ifupdown_0.6.8.bb b/recipes/ifupdown/ifupdown_0.6.8.bb
index 53ccb5f..0092e22 100644
--- a/recipes/ifupdown/ifupdown_0.6.8.bb
+++ b/recipes/ifupdown/ifupdown_0.6.8.bb
@@ -3,15 +3,14 @@ This package provides the tools ifup and ifdown which may be used to \
configure (or, respectively, deconfigure) network interfaces, based on \
the file /etc/network/interfaces."
LICENSE = "GPL"
+PR = "r1.1"
SECTION = "base"
SRC_URI = "${DEBIAN_MIRROR}/main/i/ifupdown/ifupdown_${PV}.tar.gz \
file://busybox.patch;patch=1 \
file://udhcpc.patch;patch=1 \
- file://zeroconf.patch;patch=1 \
- file://init \
- file://interfaces"
+ file://zeroconf.patch;patch=1 "
EXTRA_OEMAKE = ""
@@ -21,16 +20,13 @@ do_compile () {
}
do_install () {
- install -d ${D}${sysconfdir}/init.d \
- ${D}${sysconfdir}/network \
- ${D}${mandir}/man8 \
+ install -d ${D}${mandir}/man8 \
${D}${mandir}/man5 \
- ${D}${base_sbindir}
+ ${D}${base_sbindir} \
+ ${D}${sysconfdir}/network/run
+
install -m 0755 ifup ${D}${base_sbindir}/
ln ${D}${base_sbindir}/ifup ${D}${base_sbindir}/ifdown
- install -m 0644 ${WORKDIR}/init ${D}${sysconfdir}/init.d/networking
- install -m 0644 ${WORKDIR}/interfaces ${D}${sysconfdir}/network/interfaces
install -m 0644 ifup.8 ${D}${mandir}/man8
- install -m 0644 interfaces.5 ${D}${mandir}/man5
cd ${D}${mandir}/man8 && ln -s ifup.8 ifdown.8
}
--
1.7.0
[-- Attachment #3: bash.inc.patch --]
[-- Type: text/x-patch, Size: 585 bytes --]
diff --git a/recipes/bash/bash.inc b/recipes/bash/bash.inc
index 4eba689..a6ef610 100644
--- a/recipes/bash/bash.inc
+++ b/recipes/bash/bash.inc
@@ -33,3 +33,16 @@ pkg_postinst () {
grep -q "bin/bash" $D${sysconfdir}/shells || echo /bin/bash >> $D${sysconfdir}/shells
grep -q "bin/sh" $D${sysconfdir}/shells || echo /bin/sh >> $D${sysconfdir}/shells
}
+
+PACKAGES += "bash-sh"
+RDEPENDS_bash-sh = "bash"
+
+ALLOW_EMPTY_bash-sh = "1"
+
+pkg_postinst_bash-sh() {
+ cd $D/bin && ln -sf bash sh
+}
+
+pkg_postrm_bash-sh() {
+ ln -sf /bin/busybox /bin/sh
+}
next reply other threads:[~2010-03-19 16:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-19 16:52 Marcin Juszkiewicz [this message]
2010-03-19 17:00 ` [RFC] Rootfs without busybox in it Marcin Juszkiewicz
2010-03-22 8:33 ` Martyn Welch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201003191752.13129.marcin@juszkiewicz.com.pl \
--to=marcin@juszkiewicz.com.pl \
--cc=openembedded-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox