はじめに
LinuxのLiveUSBを作成したときに、USBメモリの領域が余るのはもったいないので、余計な物を詰め込んでみました。
以下はその作業を簡単にまとめたものです。
警告
この記事には、使用中のPCのデータを破壊し得る操作が記述されています。
この記事が原因で発生したデータの損失について筆者は補償できません。
目的
- USBメモリの有効活用
- Linuxのブートプロセスについて学んだのでおさらい
機能
- 2種類のLinuxのデュアルブートおよび、ユーザーデータの用途で使用可能
-
Linux Mint+Tiny Core Linuxの組み合わせのみサポート
組み合わせによっては干渉等によって起動しない可能性がある
用意するもの
- 作業用PC(Ubuntu 20.04)
- USBメモリ(8 GiB以上)
- 平常心
USBメモリの準備
gpartedを使用して、USBメモリを以下の4つの領域に分割する(パーティション)。
パーティションテーブルはgpt(GUID)とする。
- ブート領域
- Linux Mint
- Tiny Core Linux
- 余り
ブート領域
先頭の100 MiBはブート用の領域とする。
fat32でフォーマットした後、フラグを編集でboot、espフラグを有効にする。
Linux Mint
LiveCD用のisoファイル+マージンのサイズがあれば良い。執筆時点では3GiB程度。
ext4でフォーマットする。
Tiny Core Linux
100 MiB程度で良い。追加する機能によってはその限りではない。
ext4でフォーマットする。
余り
残った領域は自由にフォーマットして使用して良い。
イメージファイル
LiveCD用のisoファイルの内容をUSBメモリにコピーする。
- isoファイルおよび、USBメモリをマウントする
- isoファイルは
nautilusから右クリックしてディスクイメージマウンターを起動する - USBメモリは
gnome-disksを使用するのが良い - マウント先は
gnome-disksで確認できる。コピーの実行例は以下の通り
cd /media/<ユーザー名>
ls -a ./<ISOファイルのディレクトリ>
# TODO: 必要なファイルと不要なファイルを区別する
sudo cp -r ./<ISOファイルのディレクトリ>/* ./<USBメモリの領域>/
sudo cp -r ./<ISOファイルのディレクトリ>/.disk ./<USBメモリの領域>/
ブートローダー
USBメモリにブートローダーを書き込む。
-
Linux MintおよびTiny Core Linuxの<マウント先>/boot/grub/にgrub.cfgがあることを確認する - USBメモリのブート領域をマウントする
- 以下のコマンドでGRUBをインストールする
-
<ブート領域>/boot/grub/に以下の内容でgrub.cfgを作成する
UUIDはgnome-disksまたはgpartedで確認できる。
sudo grub-install --target=x86_64-efi --efi-directory=/media/<ユーザー名>/<ブート領域> --boot-directory=/media/<ユーザー名>/<ブート領域>/boot --removable
insmod all_video
if loadfont unicode ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=ja_JP
insmod gettext
fi
terminal_output gfxterm
set color_normal=white/black
set color_highlight=black/light-gray
set timeout_style=menu
set timeout=30
insmod search_fs_uuid
insmod part_gpt
insmod ext2
menuentry "Linux Mint" {
search --no-floppy --set=root --fs-uuid <Linux Mint領域のUUID>
configfile /boot/grub/grub.cfg
}
menuentry "Tiny Core Linux" {
search --no-floppy --set=root --fs-uuid <Tiny Core Linux領域のUUID>
configfile /boot/grub/grub.cfg
}
動作確認
作業用PCがUSBメモリからブート可能な設定となっているならば、この段階で再起動すればLiveUSBから起動できる。
あるいは、USBメモリをアンマウントして他のPCから起動しても良い。
おまけ
Linuxのブートについての豆知識を用語集っぽくまとめました。
| 用語 | 説明 |
|---|---|
| ファームウェア | 基板上のチップに焼き込まれたプログラム。電源投入すると最初に起動する |
| BIOS | PCに搭載されたファームウェア |
| UEFI | Intelが策定したBIOSに関する規格。この世には二種類のBIOSがある。UEFIに対応したものと、旧時代の遺物だ。 |
| ブートローダー | ファームウェアとOSのつなぎとなるプログラム。ブートローダーが使用される理由は様々である。実は、条件さえ整えばUEFIからLinuxを直接起動できる |
| GRUB | Linux向けに広く使われるブートローダー。Ubuntuをインストールすると付いてくる |
| isolinux | LiveCDに入っているブートローダー。今回は無視した |
| Linux・カーネル | いわゆるOSの中核をなすプログラム。PCが起動している間常駐して、様々な雑事を引き受ける。 |
| vmlinuz | Linuxの実行ファイルを圧縮したもの |
| initrd・initramfs・初期RAMディスク | Linux起動時に読み込まれているファイルシステム。ルートファイルシステムをマウントするまでのつなぎとして使われることが多い。LiveCDでは魔改造されている |
| PCの起動 | PCが起動したと言えるタイミングは何時か?これは深い問いである。ブートローダーがLinuxを起動したとき、Linuxがsystemdを起動したとき、ログイン画面が表示されたとき(sshdやディスプレイマネージャー等)、考え方によって様々 |