25 views
# Chromebook C101PAにFedoraをインストールする(失敗) ###### tags: `Linux` `Install` `Chromebook` 実施日: 2018年04月28日 ## 参考サイト - https://fedoraproject.org/wiki/Architectures/ARM/Chromebook ## 注意事項 - ファイル名、デバイス名などは出力に合わせて適宜修正すること ## 作業ログ 今回は、`Fedora-Workstation-armhfp-27-1.6-sda.raw.xz`を利用した。 適当なフォルダにファイルを移動した後に、以下のコマンドを実行していく。 まずは、ダウンロードしたディスクイメージからファイルをrootfsのみ取り出す。 ```shell # 解凍 $ unxz -v Fedora-Workstation-armhfp-27-1.6-sda.raw.xz # loop deviceにmap $ sudo kpartx -av Fedora-Workstation-armhfp-27-1.6-sda.raw # rootfsのみ取り出す $ sudo dd if=/dev/mapper/loop0p4 of=Fedora-Workstation-armhfp-27-1.6-rootfs.ext4 conv=fsync # fsck $ sudo e2fsck -f Fedora-Workstation-armhfp-27-1.6-rootfs.ext4 ``` 次に、roofsに対して新しいUUIDを割り振る。 ```shell $ UUID=`uuidgen` $ sudo tune2fs -U "${UUID}" -L "ROOTFS" Fedora-Workstation-armhfp-27-1.6-rootfs.ext4 ``` 次に、ディスク全体のイメージの作成を行う。 ```shell $ truncate --size=10GiB Chromebook.raw $ sgdisk -a 8192 -n 1:0:+24M -t 1:7F00 -c 1:"KERN-A" -A 1:=:0x011F000000000000 \ -n 2:0:+24M -t 2:7F00 -c 2:"KERN-B" -A 2:=:0x011A000000000000 \ -n 3:0:+1G -t 3:8300 -c 3:"BOOT" \ -n 4:0:+1G -t 4:8200 -c 4:"SWAP" \ -n 5:0:0 -t 5:8300 -c 5:"ROOTFS" Chromebook.raw $ sudo kpartx -avg Chromebook.raw $ sudo dd if=Fedora-Workstation-armhfp-27-1.6-rootfs.ext4 of=/dev/mapper/loop2p5 bs=2M conv=fsync $ sudo e2fsck -fy /dev/mapper/loop2p5 $ sudo resize2fs -f /dev/mapper/loop2p5 ``` ディスクイメージにswapと`/boot`を作成する。 ```shell $ UUID_SWAP=`uuidgen` $ sudo mkswap -U "${UUID_SWAP}" -L "SWAP" /dev/mapper/loop2p4 $ UUID_BOOT=`uuidgen` $ sudo mkfs.ext4 -m0 -U "${UUID_BOOT}" -L "BOOT" /dev/mapper/loop2p3 ``` マウントをしてfstabをセットする。 ```shell $ sudo mount /dev/mapper/loop2p5 /mnt $ sudo mount /dev/mapper/loop2p3 /mnt/boot $ sudo su -c "cat <<-EOF > /mnt/etc/fstab UUID=$UUID / ext4 defaults 1 1 UUID=$UUID_SWAP swap swap defaults 0 0 UUID=$UUID_BOOT /boot ext4 defaults 0 2 EOF" ``` アンマウント。 ```shell $ sudo umount --recursive /mnt ``` SDカードへ書き込み。 ```shell $ sudo dd if=Chromebook.raw of=/dev/sde bs=2M conv=fsync $ sudo partprobe /dev/sde ``` GPTのバックアップヘッダーをストレージの最後へ移動させて、rootfsを最大まで拡張する。 ```shell $ sudo sgdisk -a8192 -e -d5 -n5:0:0 -t5:8300 -c5:'ROOTFS' -p /dev/sde $ sudo e2fsck -f /dev/sde5 $ sudo resize2fs /dev/sde5 ``` 作成したSDカードを、DevelopperModeへ変更したChromeOSへ接続し、Chromeを起動した状態で`Ctrl+Alt+T`と打鍵しcroshを起動後`shell`コマンドを実行し`bash`へ入る。 デフォルト状態でのlsblkとby-uuidでの認識状況は以下のような状態。 ```shell chronos@localhost /media/removable/BOOT $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 60.4G 0 disk ├─sda1 8:1 1 24M 0 part ├─sda2 8:2 1 24M 0 part ├─sda3 8:3 1 1G 0 part /media/removable/BOOT ├─sda4 8:4 1 1G 0 part └─sda5 8:5 1 58.3G 0 part /media/removable/ROOTFS loop0 7:0 0 3.1G 0 loop └─encstateful 254:1 0 3.1G 0 dm /mnt/stateful_partition/encrypted loop1 7:1 0 429.3M 1 loop /run/containers/android_jyYgLm/root loop2 7:2 0 9.1M 1 loop /run/containers/android_jyYgLm/root/vend loop3 7:3 0 4K 1 loop /opt/google/containers/arc-removable-med loop4 7:4 0 4K 1 loop /opt/google/containers/arc-sdcard/mountp loop5 7:5 0 4K 1 loop /opt/google/containers/arc-obb-mounter/m loop6 7:6 0 429.3M 1 loop loop7 7:7 0 9.1M 1 loop loop8 7:8 0 4K 1 loop zram0 253:0 0 3.7G 0 disk [SWAP] mmcblk0rpmb 179:48 0 4M 0 disk mmcblk0boot0 179:16 0 4M 1 disk mmcblk0boot1 179:32 0 4M 1 disk mmcblk0 179:0 0 14.7G 0 disk ├─mmcblk0p1 179:1 0 10.5G 0 part /mnt/stateful_partition ├─mmcblk0p2 179:2 0 16M 0 part ├─mmcblk0p3 179:3 0 2G 0 part ├─mmcblk0p4 179:4 16M 0 part ├─mmcblk0p5 179:5 2G 0 part ├─mmcblk0p6 179:6 512B 0 part ├─mmcblk0p7 179:7 512B 0 part ├─mmcblk0p8 179:8 16M 0 part /usr/share/oem ├─mmcblk0p9 179:9 512B 0 part ├─mmcblk0p10 179:10 512B 0 part ├─mmcblk0p11 179:11 8M 0 part └─mmcblk0p12 179:12 16M 0 part chronos@localhost /media/removable/BOOT $ ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx. 1 root root 10 Apr 28 22:22 00eb0aa5-ba2f-4745-8e3a-c33702074d96 -> ../../sda3 lrwxrwxrwx. 1 root root 15 Apr 28 14:48 22335af9-2f02-474b-878c-c8e923f4b2e2 -> ../../mmcblk0p1 lrwxrwxrwx. 1 root root 15 Apr 28 14:48 55e9e69f-a65b-48fe-a476-90f22a110fce -> ../../mmcblk0p8 lrwxrwxrwx. 1 root root 10 Apr 28 22:22 683229af-33ce-4e37-9205-e59c45151c48 -> ../../sda5 lrwxrwxrwx. 1 root root 16 Apr 28 14:48 C5CA-7E15 -> ../../mmcblk0p12 lrwxrwxrwx. 1 root root 10 Apr 28 14:48 cde2b005-f344-4586-b1cd-50a5732e44c2 -> ../../dm-1 lrwxrwxrwx. 1 root root 10 Apr 28 22:22 edabc97d-359b-46f4-be4d-4dc96324c69c -> ../../sda4 ``` カーネルのインストールのため、以下のコマンドを実行する。 ```shell $ cd /media/removable/BOOT/ $ sudo dd if=/dev/mmcblk0p2 of=/tmp/kern-a.blob conv=fsync $ cat <<-EOF | sudo tee /media/removable/BOOT/kcmdline console=tty1 debug verbose root=PARTUUID=683229af-33ce-4e37-9205-e59c45151c48 rootwait rw lsm.module_locking=0 EOF $ sudo openssl genrsa -F4 -out fedora_2048.pem 2048 $ sudo openssl req -batch -new -x509 -key fedora_2048.pem -out fedora_2048.crt $ sudo sh -c "dumpRSAPublicKey -cert fedora_2048.crt > fedora_2048.keyb" $ sudo vbutil_key --pack fedora.vbpubk --key fedora_2048.keyb --algorithm 4 --version 1 $ sudo vbutil_key --pack fedora.vbprivk --key fedora_2048.pem --algorithm 4 $ sudo rm -f fedora_2048.{pem,crt,keyb} $ sudo vbutil_keyblock --pack fedora.keyblock --datapubkey fedora.vbpubk --flags 15 $ sudo vbutil_kernel --oldblob /tmp/kern-a.blob \ --repack /media/removable/BOOT/chromeos-kernel.img \ --config /media/removable/BOOT/kcmdline \ --keyblock /media/removable/BOOT/fedora.keyblock \ --signprivate /media/removable/BOOT/fedora.vbprivk \ --arch arm --version 1 $ sudo vbutil_kernel --verbose --verify /media/removable/BOOT/chromeos-kernel.img $ sudo dd if=/media/removable/BOOT/chromeos-kernel.img of=/dev/sda1 $ sudo dd if=/media/removable/BOOT/chromeos-kernel.img of=/dev/sda2 ``` モジュールとファムウェアーをコピーする。 ```shell $ sudo cp -r /lib/modules/* /media/removable/ROOTFS/lib/modules/. $ sudo cp -r /lib/firmware/* /media/removable/ROOTFS/lib/firmware/. ``` 外部USBから起動できるようにChromeOSの設定を変更する。 ```shell $ sudo crossystem dev_boot_usb=1 ``` ChromeOSをを再起動させ、`Ctrl+U`にて、USBから起動を行う。 しかし、起動しない。SDカードへのアクセスは見受けられるが、画面は真っ黒のままだった。 悲しいなぁ。 明日、別途ArchLinuxのインストールを試みる。