Вот такая строчка получается в выхлопе mount:
none on /dev/shm type tmpfs (rw,relatime)
Из-за этого например не собирается питон.
Система загрузки - openrc, ядро собираю с помощью genkernel-next.
/etc/init.d/udev-mount и /etc/init.d/devfs во время работы системы оказываются запущены
В /etc/fstab про shm ничего не написано.
eudev установлен
В ядре настроено:
CONFIG_SHMEM=y
CONFIG_DEVTMPFS=y
CONFIG_TMPFS=y
Скрипт, запускаемый openrc, который должен монтировать это - /etc/init.d/devfs, вот его нужный кусок:
# Mount required stuff as user may not have then in /etc/fstab
for x in \
"mqueue /dev/mqueue 1777 ,nodev mqueue" \
"devpts /dev/pts 0755 ,gid=5,mode=0620 devpts" \
"tmpfs /dev/shm 1777 ,nodev shm" \
; do
set -- $x
grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue
mountinfo -q $2 && continue
if [ ! -d $2 ]; then
mkdir -m $3 -p $2 >/dev/null 2>&1 || \
ewarn "Could not create $2!"
fi
if [ -d $2 ]; then
ebegin "Mounting $2"
if ! fstabinfo --mount $2; then
mount -n -t $1 -o noexec,nosuid$4 $5 $2
fi
eend $?
fi
done
return 0
Итоги запуска этого скрипта: /dev/mqueue монтируется, /dev/shm и /dev/pts пропускаются из-за строчки с mountinfo.
Вот почему так происходит: если в самом начале загрузки openrc остановить ее и перейти в интерактивный режим (все равно, непосредственно перед загрузкой devfs или при первом возможном моменте), то вот, что нам дает /lib64/rc/bin/mountinfo:
/
/sys
/dev/pts
/dev
/dev/shm
/run
/proc
А вот выхлоп mount:
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
none on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
none on /dev/shm type tmpfs (rw,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=10240k,nr_inodes=491310,mode=755)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
/dev/mapper/encrypted_ssd_group-root_vol on / type ext4 (rw,noatime,commit=0)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
cgroup_root on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,size=10240k,mode=755)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
openrc on /sys/fs/cgroup/openrc type cgroup (rw,nosuid,nodev,noexec,relatime,release_agent=/lib64/rc/sh/cgroup-release-agent.sh,name=openrc)
cpuset on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cpu on /sys/fs/cgroup/cpu type cgroup (rw,nosuid,nodev,noexec,relatime,cpu)
cpuacct on /sys/fs/cgroup/cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct)
То есть /dev/shm не монтируется как надо, потому что уже есть запись о его монтировании с none вместо того, что надо. Откуда оно берется, если openrc еще даже ничего не успел сделать? И как это исправить?
Вот openrc лог http://pastebin.com/8MZ9GG8Q
49 строка это место, где должен монтироваться /dev/shm
Вот кусок того, что печатается на экран при загрузке прямо перед запуском openrc (17 строка этого лога == 1-ой строке предыдущего лога) http://pastebin.com/RUUP7MuB
Вот кусок dmesg (все до последнего события, упомянутого до запуска openrc):
http://pastebin.com/SPK6jVEe
311-я строка этого лога == 13-я строка предыдущего лога