Knowledge Base

お知らせや身辺のことを綴っています。

Linux におけるデュアルブートの方法について

Linuxをデュアルブートするための概ね4つの方法を思いついた。デュアルブートとはそのままの意味で、Windows上で仮想化して動かすわけでもなく、ハイパーバイザー上で動かすわけでもない。実機でLinuxをハンドルする、という意味である。

はじめに

まずはじめに、注意事項がある。

本記事では外部メディアから起動するためのメディアとして、安価に手に入れられるUSBメモリを例に上げている。しかし、本来はOSを動かすための高いIO性能を求められるデバイスとしてUSBデバイスは不適切である。そして、よりアクセス性能の高いメディアなどを使用した場合はこの限りでない。本記事は、以下の記事の補填的な内容となっていることに注意すること。

https://yokkin.com/blog/dualboot-manjaro-with-usbstick.html

閑話休題

ちなみにここで言う安全とは、ヒューマンエラーが無い限りの安全なので、root 権限が誇る強大な力、例えば

などによって発生する大災害を前に、これらの方法は完全に無力である。

方法

以下に4つの方法を紹介する。

BOOTMGRを書き換えてGRUBをインストール

/C:\ドライブと同系列のパーティションに同居させる方法。BOOTMGR はWindows標準のブートローダー。

BOOTMGRを活かす

/C:\ドライブと同系列のパーティションに同居させる方法。

ブートパーティション及び / も別ドライブ上

それぞれのOSがそれぞれのドライブを使用している状態。OS同士がドライブを巡って干渉する可能性が一番低い。

/bootのみUSBメモリ上

SSDを新しく買うお金もケチっている筆者が考えついた方法。この方法では/bootをUSBメモリ上において、/C:\ドライブのパーティションと同系列に同居させる。

備考: ベンチマーク

KDiskMarkでディスク速度を測ったときの結果。USBメモリはBUFFALOのRUF3-YUF16GA-BK

[Read] セクションでは、比較的良好なスピードを記録しているが、[Write] セクションをみると、連続的なデータを書き込むのにも、読み込みのそれと比べて22%の性能しか出ていないことがわかる。ランダムなデータに関しては、論外。

                     KDiskMark (2.3.0): https://github.com/JonMagon/KDiskMark
                 Flexible I/O Tester (fio-3.31): https://github.com/axboe/fio
-----------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
Sequential 1 MiB (Q= 8, T= 1):   122.837 MB/s [    120.0 IOPS] < 67011.44 us>
Sequential 1 MiB (Q= 1, T= 1):   119.722 MB/s [    116.9 IOPS] <  8565.00 us>
    Random 4 KiB (Q=32, T= 1):    16.091 MB/s [   4022.9 IOPS] <  7820.90 us>
    Random 4 KiB (Q= 1, T= 1):    13.648 MB/s [   3412.1 IOPS] <   315.19 us>

[Write]
Sequential 1 MiB (Q= 8, T= 1):    26.837 MB/s [     26.2 IOPS] < 315429.81 us>
Sequential 1 MiB (Q= 1, T= 1):    22.201 MB/s [     21.7 IOPS] < 77014.15 us>
    Random 4 KiB (Q=32, T= 1):     0.132 MB/s [     33.2 IOPS] < 752318.56 us>
    Random 4 KiB (Q= 1, T= 1):     0.202 MB/s [     50.5 IOPS] < 21728.93 us>

Profile: Default
   Test: 1 GiB (x5) [Interval: 5 sec]
   Date: 2022-09-11 08:43:10
     OS: manjaro unknown [linux 5.15.60-1-MANJARO]

思考

1番目のもともとあったBOOTMGRを上書きする方法に関しては、そもそも上書きしてしまうことのリスクが高すぎる。こういった要因でWindowsが復旧できなくなるとなると、きっとかんたんに1日が潰れる。そしてWindowsというプロプライエタリなOSを使っている以上、最悪復旧できなくなることもある。2番目もWindowsのDOSコマンドはできれば触りたくないし却下。

3番目のOSとディスクを完全に分離する方法はついこの間まで行っていた。高速なドライブを確保できれば、これが一番うまくデュアルブートできそうだけど、肝心なドライブの性能が悪ければ実用に耐えないほど遅い。たとえば、コマンドを叩いても数秒間レスポンスが返ってこなかったり、Firefoxのタブが数十秒遅れて開いたりする。Linuxのために新しいドライブを買うかどうかというところなのだ。

ケチだけどデュアルブートしたい

それでは、速度と費用を両立させるためにはどういった方法がとればよいのだろうか。お金がない読者には、4番目の方法を提案したい。この方法では、安価なUSBメモリの/boot内にGRUBとEFIシステムパーティションだけ置いておいて、/ディレクトリをWindowsのデータが入っているパーティションと同系列で同居させることができる。以下記事を参照。

https://yokkin.com/blog/dualboot-manjaro-with-usbstick.html

コメントする

* が付いている欄は必須項目です。