summaryrefslogtreecommitdiffstats
path: root/abs/core/udev/udev.install
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/udev/udev.install')
-rw-r--r--abs/core/udev/udev.install20
1 files changed, 15 insertions, 5 deletions
diff --git a/abs/core/udev/udev.install b/abs/core/udev/udev.install
index 19d3546..bb8b166 100644
--- a/abs/core/udev/udev.install
+++ b/abs/core/udev/udev.install
@@ -1,9 +1,4 @@
# arg 1: the new package version
-post_install() {
- sbin/migrate-udev `pwd`
-}
-
-# arg 1: the new package version
# arg 2: the old package version
post_upgrade() {
if [ "$(vercmp $2 100)" -lt 0 ]; then
@@ -17,6 +12,21 @@ if [ "$(vercmp $2 100)" -lt 0 ]; then
fi
}
+post_install() {
+ # If a ramfs is mounted, we still need to make sure that /dev/{console,null,zero} exist
+ # The Archlinux installer bind-mounts /dev to /mnt/dev, thus making the real /dev invisible
+ ROOTDIR=""
+ [ "$(stat -c %D /)" != "$(stat -c %D /dev)" ] && ROOTDIR=$(mktemp -d /tmp/udevinstall.XXXXXX)
+ [ -n "${ROOTDIR}" ] && mount --bind / ${ROOTDIR}
+ [ -c ${ROOTDIR}/dev/console ] || mknod -m600 ${ROOTDIR}/dev/console c 5 1
+ [ -c ${ROOTDIR}/dev/null ] || mknod -m644 ${ROOTDIR}/dev/null c 1 3
+ [ -c ${ROOTDIR}/dev/zero ] || mknod -m644 ${ROOTDIR}/dev/zero c 1 5
+ if [ -n "${ROOTDIR}" ]; then
+ umount ${ROOTDIR}
+ rmdir ${ROOTDIR}
+ fi
+}
+
op=$1
shift
$op $*