2016/12/14

GPD WINのeMMCにPlamo Linuxをインストール

GPD WINのeMMCにPlamo Linuxをインストールしました。

現在動いている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 件のコメント: