現在動いているUSBメモリのPlamo Linuxを単純にeMMCへコピーすることにしました。
GPD WINにPlamo Linuxをインストールしてみた その1
GPD WINのPlamo LinuxにUbuntuのパッチを当てたカーネル
今回は/bootと/のパーティションを分けております。
理由は/パーティションのファイルシステムをXFSにしたかったのですが、/bootだけはext4にしたほうがいいだろうと考えたためです。
この辺は確信がありません。
XFSを使用するため、コピー元のUSBメモリ版Plamo LinuxにXFSのツールをインストールしました。
xfsprogs_4.3.0+nmu1ubuntu4.tar.gz
いろいろ苦労しましたが、一番苦労したのは起動するカーネルを作成することでしょうか。
起動時にeMMCを認識しないらしく、カーネルパニックになってしまいました。
そのため、eMMC関連らしきものをモジュールではなくカーネルに組み込んでいます。
config-4.8.13-20161214
・eMMCにPlamo Linuxをインストールする領域を作成する
fdiskで確認したところ、デフォルト状態では下記のようになっていました。
なお、/dev/mmcblk0がeMMCです。
# fdisk /dev/mmcblk0
fdisk (util-linux 2.29) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): p
ディスク /dev/mmcblk0: 58.2 GiB, 62537072640 バイト, 122142720 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 4EEC3CEA-F555-48F5-ACB8-D148006E3032
デバイス 開始位置 最後から セクタ サイズ タイプ
/dev/mmcblk0p1 2048 206847 204800 100M EFI システム
/dev/mmcblk0p2 206848 239615 32768 16M Microsoft 予約領域
/dev/mmcblk0p3 239616 119582687 119343072 56.9G Microsoft 基本データ
/dev/mmcblk0p4 119582688 120504287 921600 450M Microsoft 基本データ
/dev/mmcblk0p5 120504288 122142679 1638392 800M Microsoft 基本データ
/dev/mmcblk0p3を削除してその領域に/bootと/用に100MBのパーティションを作成します。
さらに空き領域全てのパーティションを作成します。
その後、x を実行して特殊機能へ移動し、f を実行してパーティションの順序を修正しました。
結果、eMMCは下記のようになりました。
# fdisk /dev/mmcblk0
fdisk (util-linux 2.29) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): p
ディスク /dev/mmcblk0: 58.2 GiB, 62537072640 バイト, 122142720 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 4EEC3CEA-F555-48F5-ACB8-D148006E3032
デバイス 開始位置 最後から セクタ サイズ タイプ
/dev/mmcblk0p1 2048 206847 204800 100M EFI システム
/dev/mmcblk0p2 206848 239615 32768 16M Microsoft 予約領域
/dev/mmcblk0p3 239616 444415 204800 100M Linux ファイルシステム
/dev/mmcblk0p4 444416 119582687 119138272 56.8G Linux ファイルシステム
/dev/mmcblk0p5 119582688 120504287 921600 450M Microsoft 基本データ
/dev/mmcblk0p6 120504288 122142679 1638392 800M Microsoft 基本データ
mmcblk0p3は/bootなのでext4で、mmcblk0p4は/なのでXFSでフォーマットします。
# mkfs.ext4 /dev/mmcblk0p3
# mkfs.xfs -f /dev/mmcblk0p4
作成したパーティションをマウントします。
# mkdir /mnt/boot
# mkdir /mnt/root
# mount /dev/mmcblk0p3 /mnt/boot
# mount /dev/mmcblk0p4 /mnt/root
・USBメモリ版Plamo Linuxからコピーまたはディレクトリを作成する
USBメモリ版Plamo Linuxからコピーできるものはコピーするのですが、/procや/devなどはシステムが作成するのでコピーできません。
このあたりよく分かっていません。
(2016/12/15 修正)
# cp -a /bin /etc /localtime /opt /sbin /usr /home /var /lib /root /lib64 /mnt/root
# cd /mnt/root
# mkdir boot dev proc sys mnt media tmp
# cd /mnt/boot/
# cp -a /boot/* .
・eMMC側の環境整備
まず、コピー用にマウントした/mnt/bootをアンマウントします。
# umount /mnt/boot
準備を整え、eMMC環境へchrootします。
下記のサイトを参考にしています。
chrootする際には/procと/devだけでなく/sysもmountしよう
# mount -o bind /dev /mnt/root/dev
# mount -t proc none /mnt/root/proc
# mount -o bind /sys /mnt/root/sys
# chroot /mnt/root
fstabを編集し、/bootと/tmpをマウントします。
(2016/12/15 修正)
# vi /etc/fstab
# cat /etc/fstab
/dev/mmcblk0p3 /boot ext4 defaults 1 1
/dev/mmcblk0p4 / xfs defaults 0 0
/dev/sr0 /cdrom iso9660 user,ro,noauto,exec,iocharset=euc-jp 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
none /tmp tmpfs defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /proc/bus/usb usbfs noauto 0 0
# mount /boot
# mount /tmp
・grubのインストール
ここも試行錯誤したところです。(2016/12/15 修正)
# mount /dev/mmcblk0p1 /boot/efi
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --boot-directory=/boot/efi --recheck
# grub-mkconfig -o /boot/efi/grub/grub.cfg
# /sbin/grub_partuuid.sh
記憶を頼りにブログを書いてみましたが、こんな感じでとりあえず起動しています。
$ df -Th
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
/dev/root xfs 57G 18G 40G 31% /
devtmpfs devtmpfs 1.9G 468K 1.9G 1% /dev
/media tmpfs 1.9G 0 1.9G 0% /media
/tmp tmpfs 1.9G 2.3M 1.9G 1% /tmp
/dev/mmcblk0p3 ext4 93M 34M 52M 40% /boot
余談。
grubのインストールを試行錯誤していた際に何度か方法を変えてgrub-installコマンドを使っていたのですが、試しに--bootloader-idオプションで指定した値がGPD WINのブートローダーの選択画面の項目に残ってしまいました。
調べた結果、efibootmgrコマンドで消せることが分かりました。
GRUBとEFIの組み合わせで使うときのメモ またはEFI全般のtips
0 件のコメント:
コメントを投稿