summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Maw <jonathan.maw@codethink.co.uk>2013-02-26 11:36:34 +0000
committerJonathan Maw <jonathan.maw@codethink.co.uk>2013-02-28 11:26:35 +0000
commit268b374f02d93a5df6f8f21e62a46c82e700cd92 (patch)
treeb0825c956efee60a07a13a266be5838118cb8bca
parenta221efa4832b03a3133734def344a1cda53ed324 (diff)
downloadfhs-dirs-268b374f02d93a5df6f8f21e62a46c82e700cd92.tar.gz
Use 'devices' in morphology to create device nodes
Allowing arbitrary code to create device nodes is a bad idea, so it is preferred to build under linux-user-chroot. Since we need to create device nodes, a "devices" field is added to the chunk morphology, which describes which devices nodes are to be created, and how. This commit will not work without the corresponding changes to morph. Reviewed-by: Lars Wirzenius <lars.wirzenius@codethink.co.uk>
-rwxr-xr-xcreate-dev-nodes37
-rw-r--r--fhs-dirs.morph48
2 files changed, 47 insertions, 38 deletions
diff --git a/create-dev-nodes b/create-dev-nodes
deleted file mode 100755
index f84c98e..0000000
--- a/create-dev-nodes
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-#
-# Create FHS directories below a target directory.
-#
-# Copyright (C) 2011 Codethink Limited
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-set -e
-
-if [ "$#" != 1 ]
-then
- echo "Error: must give target root directory as argument." 1>&2
- exit 1
-fi
-
-DESTDIR=$1
-while read path mode type major minor; do
- mknod -m "$mode" "$DESTDIR/$path" "$type" "$major" "$minor"
-done <<EOF
-/dev/console 600 c 5 1
-/dev/full 666 c 1 7
-/dev/null 666 c 1 3
-/dev/urandom 666 c 1 9
-/dev/zero 666 c 1 5
-EOF
diff --git a/fhs-dirs.morph b/fhs-dirs.morph
index fcf3bf9..6a92b88 100644
--- a/fhs-dirs.morph
+++ b/fhs-dirs.morph
@@ -4,7 +4,6 @@
"decription": "create the FHS 2.3 directory hierarchy and the usual files",
"install-commands": [
"sh ./create-fhs-dirs \"$DESTDIR\"",
- "sh ./create-dev-nodes \"$DESTDIR\"",
"install -m 644 passwd \"$DESTDIR/etc/passwd\"",
"install -m 600 shadow \"$DESTDIR/etc/shadow\"",
"install -m 644 interfaces \"$DESTDIR/etc/network/interfaces\"",
@@ -13,5 +12,52 @@
"install -m 644 issue \"$DESTDIR/etc/issue\"",
"install -m 644 services \"$DESTDIR/etc/services\"",
"echo baserock > \"$DESTDIR\"/etc/hostname"
+ ],
+ "devices": [
+ {
+ "filename": "/dev/console",
+ "uid": 0,
+ "gid": 0,
+ "type": "c",
+ "major": 5,
+ "minor": 1,
+ "permissions": "0600"
+ },
+ {
+ "filename": "/dev/full",
+ "uid": 0,
+ "gid": 0,
+ "type": "c",
+ "major": 1,
+ "minor": 7,
+ "permissions": "0666"
+ },
+ {
+ "filename": "/dev/null",
+ "uid": 0,
+ "gid": 0,
+ "type": "c",
+ "major": 1,
+ "minor": 3,
+ "permissions": "0666"
+ },
+ {
+ "filename": "/dev/urandom",
+ "uid": 0,
+ "gid": 0,
+ "type": "c",
+ "major": 1,
+ "minor": 9,
+ "permissions": "0666"
+ },
+ {
+ "filename": "/dev/zero",
+ "uid": 0,
+ "gid": 0,
+ "type": "c",
+ "major": 1,
+ "minor": 5,
+ "permissions": "0666"
+ }
]
}