MkItYs

MkItYs > ネットワークとサーバを作る > 

images

外付けストレージにOSを設置する:Linux (Ubuntu)

images

OSを外付けのストレージに設置することで、コンパクトで疎結合な環境にできます。[※1]


※1
たんにOSを外付けストレージに設置するだけなら、レスキューくらいにしか使えないと思うかもしれませんーーでもいまの仮想化技術(コンテナふくむ)を組み合わせれば、指先ほどのシリコンデバイスに、数十から数百のさまざまなOSを入れ、そのなかで大規模なネットワークを構築することができます。これを遠隔操作の各種プロトコルと組み合わせれば、それぞれのOSをGUIで使うこともできますしねーーネットワークは、クラウドなど手の届かないところにあるのものではなく、自分の手のひらの上に作ることができるものです:
OSの仮想化ソフトを使う[準備中]:KVM, VMware, Hyper-V, Parallels Desktop
サーバやパソコンを遠隔から操作する[準備中]:CLI (SSH) , GUI (VNC, RDP) , GUI/Window (X Window System (X.Org), Wayland (Mutter))

関連


OSの2大グループ[準備中]:UNIX-like OS (Linux (Ubuntu) , BSD (macOS)) , Windows NT (Windows)

検証


OS:Ubuntu 22.04, Windows 10
OS(設置対象):Ubuntu 22.04

概要:Linux


外付けのストレージにOS(Linux )を設置する手順です。[※1]

次の点に注意する必要があります:

既存のストレージ
既存のストレージを、インストレーション先に選択しない(注意:この操作でストレージの選択を誤ると、既存のOSが消去されます
OSをインストールする外付けストレージ
パーティション形式を変更しておく:gpt (注意:この操作は、外付けストレージの中身を消去します


※1
ストレージに一般のUSBフラッシュメモリを選ぶこともできますが、設置にも起動にも時間がかかるので、推奨されません(設置だけで数時間単位になります)。USBーSSDなら、問題なく利用できます(USBーSSDも、NANDフラッシュメモリという点では一般のUSBフラッシュメモリと同じですが、構造に違いがあります)。

概要:インストーラのバグ?への対応:Linux (Ubuntu 22.04)


設置するOSがUbuntuの場合、インストーラのバグ?により、指定したEFIパーティション(ESP)にブートローダが格納されません。そのため、次のいずれかを行う必要があります:

既存のストレージ
選択#1:インストレーション中に、既存のESPをインストーラに認識させないよう、フラグをいったん削除する(インストレーション後に、元に戻す)
選択#2:インストレーション後に、手動で、既存のESPに格納されたブートローダを、外付けストレージに移動させる

手順:Linux (Ubuntu)


OSのインストレーションを開始します:

- try or install ubuntu

いったん、試用モードに入ります:

- welcome
  - english
  - [try ubuntu]

ターミナルを起動し、外付けストレージのバーティション形式を書き換えます(注意:この操作は、外付けストレージの中身を消去します):

$ sudo -s
$ lsblk # デバイス群を確認
$ parted /dev/${strage_for_unix}
> print
> mklabel
>> gpt
> quit
必要なら、このタイミングで選択#1の前半を実行します。

OSのインストレーションを再開します:

- install ubuntu <version> lts

- welcome
  - english

- keyboard layout
  - english (us)
  - english (us)

- wireless
  - wi-fi security: ...
  - password: ...

- updates and other software
  - apps: minimal installation
  - other options: <off>

インスーレーション先のストレージを選択し、パーティションを更新します(注意:この操作でストレージの選択を誤ると、既存のOSが消去されます):

- installaiton type
  - something else

- installaiton type
  - device: /dev/<strage_for_unix>
    # 既存のパーティションがあれば、”- ”ですべて削除
    - free space
      - '+' > create partition # 追加:パーティション(ファーム用)
        - size: 200 mb
        - type for partition: primary
        - location for partition: begginning of this space
        - use: efi system partition
    - free space
      - '+' > create partition # 追加:パーティション(システム用)
        - size: ... mb
        - type for partition: primary
        - location for partition: begginning of this space
        - use: ext4 journaling file system
        - mount point: /
        - format: <yes>
  - device for boot loader insallation: /dev/<strage_for_unix> (...) # 選択:ブート領域
  - [install now] # このとき、インストレーション領域として/dev/<strage_for_unix>を選択しておく

OSのインストレーションを終了します:

- where are you ?
  - tokyo

- who are you ?
  - name: <user_name>
  - computer's name: <host_name>
  - username: <uid>
  - password: <password>

いったん、試用モードに入ります:

- installation complete
  - [continue testing]
必要なら、このタイミングで選択#1の後半を実行します。

PCをリブートするか、パワーオフにします:

$ reboot
$ shutdown -h now

手順:選択#1:インストレーション中、既存のESPを認識させない:Linux (Ubuntu)


OSのインストレーション中に、ESPをインストーラに認識させないようにする手順です。

OSのインストレーション前に、試用モードでターミナルを起動し、既存のストレージのESPフラグを変更します:[※1]

$ sudo -s
$ lsblk # デバイス群を確認
$ parted /dev/${strage_for_windows}
> print
> set 1 boot off
> set 1 esp off
> print
> quit

OSのインストレーション後に、使用モードでターミナルを起動し、既存ストレージのESPフラグを元に戻します:[※1]

$ sudo -s
$ parted /dev/${strage_for_windows}
> print
> set 1 boot on
> set 1 esp on
> print
> quit

※1
これを実行すると、パーティションのフラグは次に変わりますが、元に戻すときに明示的にオフにする必要はありません(ESPフラグを設定すると、このフラグは消えます):msftdata

手順:選択#2:インストレーション後に、ESPを編集する:必要なブートローダを追加する:Linux


外付けストレージのESPに、手動でブートローダを格納する手順です。

$ sudo -s

$ mkdir ${mount_point}
$ mount /dev/${esp_for_linux} ${mount_point}
$ mount /dev/{esp_for_linux} ${mount_point}/boot/efi

$ grub-install --boot-directory=${mount_point}/boot --efi-directory=/${mount_point}/boot/efi

# OSをリブート

$ blkid # ESPのUUIDを確認
$ vi /exp/etc/fstab # ESPのマウントポイントを書き換え

# OSをリブート

$ update-grub

手順:選択#2:インストレーション後に、ESPを編集する:不要なブートローダを削除する:Linux


既存のESPに格納されたブートローダを、削除する手順です(Linux を使った手順になります)。[※1]

$ sudo -s

$ efibootmgr # ブートローダの一覧
BootCurrent: ...
...
BootOrder: ...
Boot${boot_number}${active_flag} ${description}
...
$ efibootmgr --inactive --bootnum ${boot_number} # ブートローダを無効化
$ efibootmgr --bootnum ${boot_number} --delete-bootnum # ブートローダを削除

※1
Utuntuでは、既定でESPはに次のフォルダにマウントされています:/boot/efi

手順:選択#2:インストレーション後に、ESPを編集する:不要なブートローダを削除する:Windows


既存のESPに格納されたブートローダを、削除する手順です(Windows を使った手順になります)。[※1][※2][※3]

> bcdedit /enum firmware
> bcdedit /delete <identifier> # ubuntuのID

> diskpart
>> list disk
>> select disk 0
>> list volume

# ここから:マウントされていなければ:
>> select volume <efi_volume_number>
>> assign letter=<letter>
# ここまで
>> exit

> <letter>:
> dir
> cd efi
> rmdir /s ubuntu

※1
コマンドプロンプトの管理者モードで実行します(PowerShellの管理者モードには権限がありません)。
※2
外付けストレージのUEFIファームウェア・アプリケーションを削除するときは、外付けストレージを差したまま、Windowsを起動します。
※3
外付けのESPは、Windows でも通常(どれかのレターで)マウントされています。