Dear Junjiro,
I'm using aufs2-standalone for diverse openSUSE diskless setups, but the
latest release freezes on boot. For some reason related to the diskless
setup, where I use a project called kiwi, it's much easier to use the
standalone version, than intergrating it into the kernel itself, as that
would need a full rpm kernel rebuild for any aufs change.
Hence I'm only prepared to bisect the standalone version, where the
offending commit is:
commit f3965b097efec80b18721e1a8cbb4b366985535e
Sure, no wonder, it's this mondays commit in full... :-(
The reason for trying the current release is an uglier issue with openSUSE
11.2, that is related to aufs and apparmor (again), as it does not happen
with a native install.
As already noted, my diskless openSUSE 11.1 setups have apparmor completely
removed from the kernel (2.6.27), as aufs2 won't apply otherwise. Some
apparmor related adjustments are available for aufs1 only, and an attempt
to forward port them ended in nasty kernel crashes on boot..
The kernel 2.6.31 from 11.2 behaves better in this respect, at least on the
first sight. aufs2 base patch applies fine, and the standalone patch only
needs a minor adjustment to get applied (already exported symbol).
Running 11.2 diskless with the simplest possible aufs setup (one nfs rw,
one nfs ro, xino on tmpfs) mostly works fine, but for mysterious reasons,
apparmor blocks loading the shared libs of some programs.
ziggy:~# rcapparmor start
Mounting securityfs on /sys/kernel/security done
Loading AppArmor profiles done
ziggy:~# ldd /usr/sbin/ntpd
linux-gate.so.1 => (0xffffe000)
libm.so.6 => not found
libcrypto.so.0.9.8 => not found
libcap.so.2 => not found
libc.so.6 => not found
ziggy:~# rcapparmor stop
Unloading AppArmor profiles done
ziggy:~# ldd /usr/sbin/ntpd
linux-gate.so.1 => (0xffffe000)
libm.so.6 => /lib/libm.so.6 (0xb76d3000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb7561000)
libcap.so.2 => /lib/libcap.so.2 (0xb755b000)
libc.so.6 => /lib/libc.so.6 (0xb73fb000)
/lib/ld-linux.so.2 (0xb7712000)
libdl.so.2 => /lib/libdl.so.2 (0xb73f5000)
libz.so.1 => /lib/libz.so.1 (0xb73e1000)
Even stranger, all affected processes have their own profile
in /etc/apparmor.d: /bin/ping, /sbin/klogd, and /usr/sbin/ntpd.
It looks like apparmor gets to the underlying pathes (below aufs) somehow,
and consequently blocks access to essential files, as it sees them
relocated (note name= entries below from /var/log/audit/audit.log:
type=APPARMOR_DENIED msg=audit(1272987702.188:11): operation="open" pid=3269
parent=3268 profile="/usr/sbin/ntpd" requested_mask="r::" denied_mask="r::"
fsuid=0 ouid=0 name="/read-only/etc/ld.so.cache"
type=APPARMOR_DENIED msg=audit(1272987702.188:12): operation="open" pid=3269
parent=3268 profile="/usr/sbin/ntpd" requested_mask="r::" denied_mask="r::"
fsuid=0 ouid=0 name="/read-only/lib/libm-2.10.1.so"
The question is, how is apparmor able to reveal the original path, as aufs
is executed earlier in the boot process, and the mounts should be covered
by the aufs / mount, shouldn't they?
rootfs / rootfs rw 0 0
udev /dev tmpfs rw,relatime,mode=755 0 0
server:/work/dlbase/hosts/11.2/ziggy /read-write nfs rw,relatime,vers=3,...
server:/work/dlbase/11.2-vdr-kde3 /read-only nfs ro,relatime,vers=3,...
tmpfs /xino tmpfs rw,relatime 0 0
aufs / aufs rw,relatime,si=340df0c2 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
securityfs /sys/kernel/security securityfs rw,relatime 0 0
Thanks,
Pete
------------------------------------------------------------------------------