labunix's blog

labunixのラボUnix

Wheezyで、/dev/nullの再作成

■仮想マシンのsshがつながらなくなって調べたら/dev/nullが壊れてた。
 デバイスタイプが「s」?ソケットファイルになってる?

$ ls -l /dev/null
srwxrw-rw- 1 root root 1, 3  723 19:26 /dev/null

■コンソールは日本語表示出来ず文字化けしているので、
 bashから/dev/nullがどうしたのか分からない。

-bash: /dev/null ....

■ホストマシンの定義は以下。

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3  723 19:26 /dev/null

■変更

# rm -f /dev/null ; mknod -m 0666 /dev/null c 1 3

■でも再起動すると戻ってる。

$ for opt in update upgrade autoremove autoclean;do sudo apt-get $opt -y $opt ;done
E: Problem executing scripts APT::Update::Post-Invoke-Success 
'/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service 
&& /usr/bin/test -S /var/run/dbus/system_bus_socket && 
/usr/bin/gdbus call --system --dest org.freedesktop.PackageKit
 --object-path /org/freedesktop/PackageKit --timeout 1
 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null'
E: Sub-process returned an error code

■リカバリモードで起動、再度修正。

$ ls -l /dev/null
srwxrw-rw- 1 root root 1, 3  723 19:26 /dev/null
$ su
Password:
# rm -f /dev/null ; mknod -m 0666 /dev/null c 1 3
# for opt in update upgrade autoremove autoclean;do apt-get $opt -f -y $opt ;done

■「S01*」のmotdの「do_start」箇所にコマンドを入れても同じ。
 どうやら起動時のどこかで勝手にsocketにする悪さをするinitスクリプトがいるようだ。

$ ls /etc/rc2.d/S01* 
/etc/rc2.d/S01motd
$ sudo vim /etc/rc2.d/S01motd
$ grep mknod /etc/rc2.d/S01motd
rm -f /dev/null ; mknod -m 0666 /dev/null c 1 3

■とりあえず、仮想マシンだけの症状だし、Debian7 x64はOSの選択メニューにもないので、
 単にサポートされていないだけかも知れない。
 とりあえず放置。気が向いたら後で調べることにする。。。

$ vmplayer --version
VMware Player 5.0.2 build-1031769