Ubuntu日和

【第41回】流行りの超小型USB SSDを使い、Ubuntuをポータブルに運用する

パッケージに比べると遥かに小さいバッファローの小型SSD

 Ubuntuをインストールするにあたって、購入やライセンス認証は必要ない。つまり、好きな場所(物理マシン/仮想マシン)に好きな数だけインストールや複製が可能だ。今回はバッファローの超小型ポータブルSSD「SSD-PSTU3-BA」シリーズを使って、Ubuntuをポータブルに運用する方法を紹介しよう。

ポータブル環境とUSB SSDの話

 さまざまな場所で何度も言われているように、ストレージとはいつか壊れるものだ。それも本人にとって一番壊れてほしくない時に壊れる。特に年末や年度末なんて、一番危ない時期だ。トラブルの神様は常にあなたのデータを狙っている。だからこそ日頃からバックアップを取り、リカバリー手段を用意しておく必要がある。

 しかしながら、ストレージが完全にアクセスできなくなり、OSが起動しなくなってしまった場合はどうだろう。リカバリーするためには、起動用のUSBメモリを作らないといけない。USBメモリを作るためにはOSが必要だ。しかしながらそのOSが起動しない。さあ、困った。

 PC Watchの読者であれば、余っているPCの10個や20個は部屋に転がっていて、実はそこまで困らないかもしれない。もちろん真面目なWindowsユーザーであれば、最初からリカバリディスクを準備していることだろう。Ubuntuならインストール時に作成したUSBメモリをそのまま保存しておくのもおすすめだ。UbuntuのインストールUSBは「 Liveイメージ 」と呼ばれるもので、起動すれば普通のUbuntuと同じような環境になる。つまり、デスクトップ環境が起動し、aptコマンドなどでパッケージを追加できる。

 ちなみにデスクトップ版のUbuntuインストールイメージだけでなく、サーバー版のUbuntuインストールイメージもLive環境に対応している。画面右上の「Help」から「Enter Shell」を選択すると、シェルが起動するのだ。ストレージの完全削除時など、CLIだけで操作できるような処理を行ないたいならこちらもおすすめだ。

実はUbuntuのサーバー版もLive環境に対応していたりする。GPUが非力だったりメモリーが少ない環境で使うのに便利。

 Ubuntuのこれらの「Live環境」は、「SquashFS」を利用して作られている。これは読み取り専用の圧縮ファイルシステムで、ルートファイルシステムをまるっと1つのファイルにしてマウントし、その上にRAM上の「tmpfs」を被せることで、まるで読み書きできるような環境を構築している。言い方を変えると、この環境に対する変更は原則としてストレージには保存されない。たとえばパッケージをインストールしたとしても、再起動すると元に戻ってしまうのだ。

 これはこれで便利なのだが、どうせなら普段使っているツールが既にインストールされたUSBイメージもほしいところ。そこで出てくるのが、今回の話である「 Ubuntuのポータブル化 」になる。Live環境と異なり、ポータブルUbuntuは普通のUbuntuと同じように、ストレージ上の変更を不揮発領域に残せる形で作成する。つまりインストールしたパッケージやデータは再起動後もそのまま残るし、環境の移動はUSBストレージだけで済む。もちろん動かすためにはPCが必要になるが、移動先にUSBブートしても構わないPCがある前提だったり、手持ちのPCとは別にもう1台を動かさなくてはならないときに便利だろう。

 Ubuntuは原則「 FLOSS(Free/Libre Open Source Software) 」で構築されている。「Free」と「Libre」が同居しているように、この「Free」は「無料の」よりも「自由に使える」ことに重点を置いている。つまりUbuntuそのものが複製や再配布/利用に対して、強い制約はかかっていない。コピーして使うだけであれば、好きな場所に好きな数だけ使っても問題ないのだ。

 よって、いくつか「ポータブルUbuntuなUSBストレージ」をカバンやポケットに忍ばせておけば、何かPCトラブルが発生した時に、「こんなこともあろうかと」とさっと取り出して、Ubuntu環境を使ってぱぱっと解決してみせる、なんてことも実現できるかもしれない。まぁ、Live環境やポータブルUbuntuでないと解決できないようなトラブルは、大体において手遅れなのだが。

 このようにポータブルUbuntuは、万人向けというわけではないものの、一本用意しておくと存外便利という類のものになる。しかしながら、その作成方法はそこまで難しくはないものの、実用する上でネックとなる問題が1つ存在する。それは「USBメモリは結構遅い」ということだ。そこで出てくるのがUSBの高速化とともに進化を続けている「USB SSD」と呼ばれる製品群になる。

USBメモリとUSB SSDの違い

 さて、今回はバッファローの超小型ポータブルSSDである「SSD-PSTU3-BA」シリーズに、Ubuntuをインストールしてポータブル化してみよう。この手のポータブルSSDは、いわゆる従来の「USBメモリ」と異なり、USB 3.0と同時に策定された「 UASプロトコル(USB Attached SCSI Protocol) 」にも対応することで、高速に読み書きできることが特徴の1つだ。SSD-PSTU3-BAも、読み込みで600MB/s以上、書き込みで500MB/s以上を謳っており、過去のSATA SSDと比べても遜色ない性能になっている。

 UbuntuをはじめとするLinuxもUASには対応しており、うまく認識できれば「usb-storageドライバー」ではなく、「 uasドライバー 」が使われる。実際に接続して確認してみよう。

SSD-PSTU3-BAを接続し、マウントするとこんな感じで専用のアイコンが表示される
lsusbは接続されているUSBの詳細情報を表示するコマンドだ。「-t」を指定することでトポロジーを表示してくれる。最後の数字はリンクスピード
$ lsusb -tv
(略)
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub
    |__ Port 2: Dev 7, If 0, Class=Mass Storage, Driver=uas, 5000M
        ID 0411:0397 BUFFALO INC. (formerly MelCo., Inc.)
(略)

 上記では分かりやすいように普通のUSBメモリと、SSD-PSTU3-BAのみ表示してみた。USBメモリはusb-storageドライバであるのに対して、SSD-PSTU3-BAはuasドライバが使われているのが分かる。リンクスピードは、USB 3.2 Gen 2にも関わらずなぜか5000Mと表示されてしまっているが、この環境のlbusbコマンドが少し古いからかもしれない。

 ちなみにSSD-PSTU3-BAはUASだけでなく、従来の「 BOT(Bulk-Only Transport) 」にも対応している。よってUAS非対応のシステムでも、速度は落ちるものの動かないということはないはずだ。

「-t」なしで「-v」を指定するとより詳細な情報を表示してくれる。「0411:0397」はSSD-PSTU3-BAのベンダーIDとデバイスIDである
$ lsusb -v -d 0411:0397 | grep -i interface
    bNumInterfaces          1
    Interface Descriptor:
      bInterfaceNumber        0
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only ★従来のBOT転送用インターフェース
      iInterface              0
    Interface Descriptor:
      bInterfaceNumber        0
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     98 ★この98がUASを示す
      iInterface              0

 実際にこのまま速度を計測してみよう。「sudo snap install kdiskmark」でKDiskMarkをインストールし、「sudo snap connect kdiskmark:removable-media」を実行すれば、fioをバックエンドにしたストレージテストが行なえる。

snap版のKDiskMarkはいくつか制約があるものの、ちょっと調べて見るにはお手軽でおすすめだ

 ちなみにSSD-PSTU3-BAはNTFSでフォーマットされている。最近のUbuntuはntfs3ドライバが有効化されているため、接続するだけでほかのファイルシステムと同様に普通に読み書きできたりする。上記はNTFSのままでの計測結果だ。

 さらにSSD-PSTU3-BAはあくまでSSDという扱いだからか、「removable」ビットが立っていない。つまり運用中のホットプラグはあまり想定していないようだ。Ubuntuの場合は、「removable」の有無で使い方に違いはない。せいぜいデスクトップでアイコンを右クリックした時に「取り出す」が表示されなくなるぐらいだ。

remobavleかどうかは次のような方法でも確認できる
$ cat /sys/block/sda/removable
0
USBメモリだとアイコンを右クリックすると表示される「取り出す」が、本製品では表示されない

 いずれにせよ、UAS対応のUSBストレージを使えば、NVMeより前の内蔵SSDと遜色ない使い方を期待できる。さらにSSD-PSTU3-Bは「 とても小さい 」点も大きな特徴だ。引き出しに入れておいたり、持ち歩いたりしても気にならにサイズとなっている。なお、Ubuntuをインストールすることは、SSD-PSTU3-BAがサポートする使い方ではない点は、念頭に置いておいて欲しい。

USB SSDにUbuntuをインストールする

 それではUSB SSDにUbuntuをインストールしてみよう。と言ってもインストール手順自体にそこまで違いはない。気をつけるべきなのは次の2点だ。

  • インストール用のLive USBを別に用意する
  • インストール対象以外のストレージは物理的に取り外しておく

 念の為、もう一度言っておくと「 インストール対象以外のストレージは物理的に取り外しておく 」ことが特に大事だ。Ubuntuは複数のストレージの片方にのみUbuntuをインストールできる。また、UEFIならESP(EFI System Partiton)を指定したストレージに作ってくれる。しかしながら、もし既存のストレージにESPが存在し、誤ってそちらにESPを作ってしまうと、結果的に「ポータブルUbuntu」も「既存のシステム」も起動できない可能性が出てくる。安全のために、既存のストレージは取り外しておこう。

 もちろん「そんな間抜けなミスはやらない」って自信がある人は、既存のストレージを外さずにやっても問題ない。ただしUbuntuのインストーラのバグに遭遇する可能性もないわけではない旨は忠告しておく。いや、本当に。注意して作業すれば大丈夫だと思ったんですよ(状態がおかしくなったESPの中身を必死に復旧しながら)。

 そういうのが面倒ということであれば、既存のインストール済み環境をまるっと複製してしまうという手もある。その場合はUbuntu日和の第20回でも少し紹介しているClonezillaなどが便利だろう。

 Live USBの準備やインストーラの起動は人気Linuxディストリビューション、Ubuntuを触ってみよう!」を参考にしてほしい。Live USBとUSB SSDを接続した状態でインストーラを起動し、「アップデートと他のソフトウェア」の画面まで進むと、次からストレージの設定に入る。ここからは画像ベースで解説しよう。

「アップデートと他のソフトウェア」で「続ける」ボタンを押した時に、USB SSDがマウント済みだとこのようなダイアログが表示される。インストーラが動いている間、マウントされている必要はないので、このダイアログが表示されたら「はい」を押してアンマウントしておこう
「インストールの種類」では、もしほかのストレージを物理的に取り外した状態なら、「ディスクを削除してUbuntuをインストール」で問題ない

 上記において、Live USBとUSB SSD以外のストレージデバイスが存在しない場合、「ディスクを削除してUbuntuをインストール」を選べばあとは普通の手順でインストールを進めれば良い。この手順だとUSB SSD上の既存のNTFSパーティションは一旦削除されて、Ubuntuの流儀に従ったストレージレイアウトになる。この方法が一番トラブルが少ない、おすすめの手順だ。インストールが完了したら「USB SSDのUbuntuを起動する」まで読み飛ばそう。

 もし既存のストレージがある状態でインストールしようとしているか、特殊なレイアウトにしたい場合は、「それ以外」を選び、次で説明する手順に従って、自分でレイアウトを設定する必要がある。こちらは上級者向けの手順となる。

ストレージの状態。「/dev/nvme0n1pX」が内蔵のNVMeストレージで、「/dev/sdaX」がLive USB、「/dev/sdbX」が今回ターゲットとなる「SSD-PSTU3-BA」だ

 UbuntuをはじめとするLinuxは、デバイスの内部表現としてファイルパスを持っている。つまり「/dev/sda」がどれで「/dev/sdb」がどれというのを目視で判断するわけだが、まぁ簡単にはいかない。ストレージサイズなどから類推することも可能だが、「ブートローダをインストールするデバイス」のプルダウンメニューには、デバイス情報が表示されるので、そこから判断すると良いだろう。今回は「/dev/sdb」がターゲットデバイスとなるので、このデバイスのみを操作する。

NTFSになっている「/dev/sdb1」を選択し、マイナスボタンを押して削除する
空き領域になったら、「/dev/sdb」を選択
「新しいパーティションテーブル」ボタンを押したら次のダイアログが表示されるので「続ける」を押す
空き領域を選択し、プラスボタンを押す
まずはESPを1024MBで作成する。サイズと利用方法だけ設定すればOK
もう一度空き領域を選択し、プラスボタンを押して、ルートパーティションを作成。サイズはそのままで、利用方法とマウントポイントを図のように設定する
「/deb/sdb」にESPとルートファイルシステムが作られた。「ブートローダをインストールするデバイス」が「/dev/sdb」になっていることを確認し「インストール」ボタンを押す
変更の確認ダイアログが表示される。後戻りできるのはここが最後になるので注意深く確認しよう。「続ける」ボタンによってあなたの未来は確定する

 これで必要な設定はできた。残りは普通のUbuntuのインストール手順なのでそのまま進めよう。インストールの最後に画面に「Live USBを取り外してEnterキーを押す」旨のメッセージが英語で表示されるので、それに従って対応する。しばらく待つと再起動する。そのまま放置しておくと、内蔵ストレージがなければUSB SSDから起動する。また、内蔵ストレージがある場合は起動順に応じてどちらかが起動する。

 もし内蔵ストレージを取り外している場合は、USB SSDから起動し・ログインしたあとに電源オフした上で、ストレージを接続しなおしておこう。

USB SSDのUbuntuを起動する

 改めて、USB SSDをPCに繋いで起動する。

 今回はUSB SSD側にもESPを作成したため、既存システムの内蔵ストレージとUSB SSDの2個のESPが存在することになる。この場合、どちらのESPが優先されるかはUEFI/BIOSの設定依存だ。UEFI/BIOS側で「USB」や「USB HDD」のようなエントリーを優先設定しておけば、「USB SSDが接続されていたらそちらを起動し、接続されていなければ内蔵ストレージから起動する」という挙動にできる。

 もし何らかの理由で順番を保存できない場合は、USB SSDから起動したい場合はBIOSメニューから逐一選択することになるだろう。ちなみにUbuntu(というかGRUB)の場合は、起動後にESCキーを連打しておけばGRUBメニューが表示される。このGRUBメニューから「UEFI Firmware Settings」を選択すれば、BIOSメニューに切り替わるのでそちらも活用してほしい。タイミングが悪いと「grub」のようなプロンプトになるかもしれない。その場合は「fwsetup」と実行すればやはりBIOSメニューになるので覚えておこう。

 起動デバイスとしてUSB SSDを選択できれば、あとは普通のUbuntuだ。ほかのマシンと同じようにカスタマイズして、使いやすい環境を整えていこう。

ポータブルUbuntuのext4ファイルシステムでの計測結果。動かしているマシンのType-AコネクタがUSB 3.2 Gen 1(5Gbps)であったため、USBの実効速度にひっぱられてしまっている

 ちょっと変わった活用方法としては、仮想マシンのUSBパススルー機能を活用して、ポータブルUbuntuを仮想マシンの中で起動するという手もあるだろう。ただし仮想マシンでポータブルUbuntuを動かす(つまり普通にUbuntuインスタンスを作らない)利点があるのかと言われると悩ましい。WindowsやmacOSとデスクトップ版のUbuntuを併用したい、だけど容量の関係でUbuntuを内蔵ストレージには保存したくないというとても特殊なケースぐらいだろうか。

 人類がポータブルUbuntuを使いたくなる良い案を思いついた人は、ぜひ大体的に公表してもらえるとうれしい。