1文字間違えると大惨事、ddでインストーラ書き込み
USBメモリを使ってLinuxをインストールしたことがある方なら、ddコマンドを使ってインストーライメージをUSBメモリに書き込んだことがあるのではないかと思う。ddコマンドは実に便利で、次のような感じで直接インストーライメージをUSBメモリに書き込むことができる。
Ubuntu ServerインストーラをUSBメモリに書き込むサンプル
dd if=ubuntu-18.04.1-live-server-amd64.iso of=/dev/sd?
of=/dev/sd?の部分がUSBメモリのデバイスファイルを指定する部分で、例えば、ここがデバイスなどによって/dev/sdbだったり/dev/sddだったりする。ここで多くの方が「デバイスファイルの指定を間違えると、とてもまずいことになるんじゃないか」と感じたことがあるのではないだろうか。1文字間違えるだけでシステムを破壊できる威力を持っている、実に危険な行為なのではないかと。
そこで今回は、ddコマンドによるUSBメモリへの書き込みのうち、間違っているほうの行為を試してみよう。
Ubuntu Serverで実行
まず、Ubuntu Server 18.04 LTSを用意する。この環境では次のように/dev/sda2が/にマウントされている。
疲労困憊の中で作業をしたことのあるエンジニアの方ならわかると思うが、ここには書き込んではいけないとdfコマンドで確認したにもかかわらず、なぜか「of=の指定」にターミナルに表示されている/dev/sda2と書いてしまうことがある。実行する前に気がつけばセーフだが、疲れているときには往々にしてこういったヒューマンエラーが発生しがちだ。危険を避けようとしてdfコマンドでデバイスファイルを確認したにもかかわらず、表示されている内容を目でなぞって入力してしまうのだ。もう疲れているとしか言えない危険な状況である。
そんな状況になったと仮定して、次のようにUSBメモリではなくHDDにインストーラを書き込んでみる。
インストーラを書き込んだ場所に何が存在しているかによって破壊具合が異なってくるので、環境によってはそれほど影響が出ないで使い続けることもできる。この環境の場合、しばらく使っているとどうもファイルシステムがおかしいことに気がついた。
shutdownコマンドでシステムを終了させることもできなかった。電源ボタン経由のシャットダウンも機能せず、強制的に電源を落とした。
再び、電源を入れてシステムを起動してみる。一見、問題もなくシステムが起動する。
しかし、起動してきたのは今まで使っていたシステムではなく、ddで書き込んでしまったインストーラだった。
システムが起動してくるように見えるので一見胸をなで下ろすが、気がつけば後の祭りである。
ddでインストーラを書き込む時は要注意
ddを使ってUSBメモリやHDDにイメージを書き込むことは一般的な作業だし、簡単でとても便利なものだ。しかしながら、1文字間違えると大変なことになる操作であることも間違いない。月並みな対応になってしまうが、「疲れている時は重要な作業をしない」「書き込みを実行する前に何度も確認する」といった対策を行っておくことが大切だ。