2/28から3/1まで、OSC2014 Tokyo/Springが開催されていた。ノベルティ獲得を目的に2日間とも参加した。感想はこことここにクソみたいな内容で残してある。
で、聴講したとあるセミナーにて、"rm -rf /"の話題が出ていた。rm -rf / はUnixとかUnix系OSではもはやおもしろワードのような扱いであり、実際に試すことは(少なくとも故意には滅多に)無いようなコマンドである。セミナー後、この話題について、ある質問が出ていた。
rm -rf / した後って何が出来るんですか?
rm -rf / したあとなんて 、まっさらなファイルシステムが残されるのみであって、もはや何も実行できるものもない死の空間である、という認識しかなかった私にとって、その質問は興味深いものだった*1。
なので実際にやってみた。
記録
環境
- QEMU
- Arch Linux (Kernel: 3.13-5-ARCH)
-
archlinux-2014.03.01-dual.isoを使い、Installation guide - ArchWikiに盲従
- ホスト名はThereseとした。('T'est -> Therese:私は使用するマシンのホスト名にはドイツ語圏の女性名をあてている)
- ブートローダはSyslinuxをいれた
実践
[root@Therese ~]# rm -rf / rm: it is dengerous to operate recursively on `/'((実際には文字化けして"■/■"みたいになっていた。)) rm: use --no-preserve-root to override this failsafe
親切だ。だがその親切は無用だ。
[root@Therese ~]# rm -rf / --no-preserve-root <以下、cannot removeの嵐> [root@Therese ~]# ls -bash: /usr/bin/ls: No such file or directory [root@Therese ~]#
かくして廃墟が構築された。
ここでお馴染みのUNIXコマンドを色々試してみたが、軒並み"command not found"か"No such file or directory"が返ってくるのみだった。当然だ。だが、中にはcdとかpwdのように、普通に使えるものも存在した。そこで、bashの補完機能(Tabキー押すやつ)を用いて色々観察してみることにした。
- /にてcdに対して補完
[root@Therese ~]# cd boot/ dev/ proc/ run/ sys/ tmp/ [root@Therese ~]#
- /にてコマンドの補完
[root@Therese ~]# : builtin disown false jobs readonly trap ! caller do fc kill return true ./ case done fg let select type [ cd echo fi locale set typeset [][[ command elif for logout shift ulimit ]] compgen else function mapfile shopt umask[] { complete enable getopts popd source unalias } compopt esac hash printf suspend unset alias continue evel help pushd test until bg coproc exec history pwd then wait bind declare exit if read time while break dirs export in readarray times [root@Therese ~]#
割と残ってるみたいだ。しかし見慣れないコマンドばかりだ……。
では見るもん見たし、終了するとしよう。shutdownがないので、とりあえずexitでログアウトしてみる。今思うとCtrl+Alt+Delでも良かったかもしれない。
[root@Therese ~]# exit logout <応答しなくなった>
死んだ。この後強制的に終了させた。
この後、再び起動させてみると、以下のメッセージが得られ、臨終の旨を得た。
booting... SYSLINUX 6.02 EDD Copyright (C) 1994-2013 H. Peter Anvin et al Failed to load ldlinux.c32 Boot failed: please change disks and press a key to continue.
参考
先人たちの記録である。
*1:ちなみに質問に対する答えは「cdは出来たと思う」という感じだった。