Chomebookの名機として名高いASUS Chromebook Flip C101PA、スポート期限は2023年8月1と期限切れとなっている、このまま使い続けるのはリスクがある。
ChromebookはUSBブートが難しい
じゃあ、 インストールを準備する - ChromeOS Flex ヘルプをインストールしようにも、ChromeOS FlexによるUSBブートすら認めなくてインストール出来ない。
というか、何故かChromebookはChromeOS以外のブート起動を許しておらず、サポート切れになったらLinuxで使えばいいじゃん、みたいなことを許していない。ChromeOSのままLinuxを使う方法は、 Chromebook で Linux をセットアップする - Chromebook ヘルプとChromeOSの機能として備わっているが、完全に入れ替えるのは難しい。
MrChromebox.techが詳しいが、同サイトの Supported Devicesに載ってないものは、基本、サポート切れのChromebookの延命出来ないと思った方が良いかも知れない。
Debian, Arch Linuxならインストールが可能
ただ、C101PAは延命処置が可能である。
- C101PAにCadmium (Debian)をインストールする - 損するあほう
- InstallingDebianOn/Asus/C101PA - Debian Wiki
- Asus Chromebook Flip C101PA | Arch Linux ARM
と、恐らくブート領域を偽装?してDebianやArch Linuxをインストール出来る。実は去年試してどちらも成功したのだけど、記事にしなかった。何故か、それはどちらも不安定で、そのまま使用するには厳しかったからだ。
一番上の Cadmium は phoshというスマホ、タブレットっぽいデスクトップ環境と、 swayは真逆にi3wのようなタイル型デスクトップ環境を選択してインストールできる。しかし、どちらも初めての環境で日本語入力環境にも上手くできない…
なにより致命的なのがスリープすると復帰できない。これが痛すぎて、上二つのDebianはパスだった2。
三つめ、一番下のArch Linuxは、準備されるのがCLI環境だけなので、自分でデスクトップ環境を入れるのだけど、やはりエラーがたまに出たり不安定。
そこまで苦労してデスクトップ環境を準備できても、やはりC101PAはLinuxのデスクトップ環境であっても、もはやスペック不足。ということで、一年ぐらい放置していたが、2月になって、再度インストールしてみた。
何故か、デスクトップ環境を入れずに、本当にキングジム ポメラみたいにすれば良いと思った。テキストしか映らない環境なら、本当に執筆に集中するしかなくなる。
デベロッパーモード
まずはデベロッパーモードにする。
-
電源を切る
-
ESC+更新
ボタンを両方押しながら電源を付ける -
OS回復画面が表示されたら
Ctrl+d
を押す -
「OSの確認機能をオフにする(デベロッパーモードにする)」か確認されるので、
Enter
押す -
再起動してデベロッパーモードに移行が始まる
-
デベロッパーモードに移行が完了する
-
再起動する
外部ストレージからのブートを可能にする
-
デベロッパーモードでは、電源オンにしたときに
Ctrl+d
押さないとChromeOSが起動しなくなったので、Ctrl+d
を押してChromeOSを起動する -
ChromeOSの初期設定画面が始まるので、ゲストモードでも良いから、初期設定を完了する
-
Ctrl+Alt+t
を押してcrosh shell
を起動する -
shell
を入力してEnter
を押してbash shell
を起動する -
sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0
を入力する3 -
再起動する
Arch Linuxインストール手順
やるなら、マイクロSDカードに挿入するより、アダプタを用意してUSB-Aに挿入した方がやりやすいと思う。というのもマイクロSDカード挿入だとデバイスパスが /dev/mmcblk1p2
になってWikiと異なってしまうので。
また、SDカードへのインスールはChromebook上でなくても出来るが、以下はChromebookでcrosh shell
からbash shell
を起動して行なった。
-
SDカードをアンマウントする
sudo umount /dev/sda*
-
GPTパーティションテーブルを作成する。
sudo fdisk /dev/sda
fdisk
プロンプトでg
を押し、次にw
を押す
-
ChromeOS固有のGPTパーティションを作成する
sudo cgpt create /dev/sda
sudo cgpt add -i 1 -t kernel -b 8192 -s 65536 -l Kernel -S 1 -T 5 -P 10 /dev/sda
-
rootfs
4パーティションを作成する-
sudo cgpt show /dev/sda
-
上のコマンドの下から二番目 Sec GPT Tableの開始サイズを記憶しておく
-
sudo cgpt add -i 2 -t data -b 73728 -s `expr xxxxx - 73728` -l Root /dev/sda
xxxxxにSec GPT Tableの開始サイズを代入して実行する
-
-
パーティションを追加して、
root
パーティションを作成する-
sudo partx -a /dev/sda
エラーが出ても
/dev/sda1
、/dev/sda2
と分かれば良し -
sudo mkfs.ext4 /dev/sda2
sda2
と 2 なので注意
-
-
C101PA用(ARMv8)のArch Linux ARMをSDカードに展開する
cd /tmp
curl -LO http://os.archlinuxarm.org/os/ArchLinuxARM-gru-latest.tar.gz
mkdir root
sudo mount /dev/sda2 root
tar -xf ArchLinuxARM-gru-latest.tar.gz -C root
-
カーネルをカーネルパーティションに出力する
sudo dd if=root/boot/vmlinux.kpart of=/dev/sda1
sda1
と 1 なので注意 -
SDカードアンマウント
sudo umount root
sync
以上、SDカードへのArch Linuxの書き込みが完了。
作業ログ
以下、作業ログ
chronos@bob-rev4 / $ sudo umount /dev/sda*
chronos@bob-rev4 / $ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
The device contains 'vfat' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.
Command (m for help): g
Created a new GPT disklabel (GUID: D1D01F72-EC00-504D-B8A8-3B279F74E7D2).
The device contains 'vfat' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
chronos@bob-rev4 / $ sudo cgpt create /dev/sda
chronos@bob-rev4 / $ sudo cgpt add -i 1 -t kernel -b 8192 -s 65536 -l Kernel -S 1 -T 5 -P 10 /dev/sda
chronos@bob-rev4 / $ sudo cgpt show /dev/sda
start size part contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
8192 65536 1 Label: "Kernel"
Type: ChromeOS kernel
UUID: 06B47598-646F-D549-886F-0F2B0AA6FEF6
Attr: priority=10 tries=5 successful=1 error_counter=0
62333919 32 Sec GPT table
62333951 1 Sec GPT header
chronos@bob-rev4 / $ sudo cgpt add -i 2 -t data -b 73728 -s `expr 62333919 - 73728` -l Root /dev/sda
chronos@bob-rev4 / $ sudo partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-2
chronos@bob-rev4 / $ ls /dev/sda
sdd sdd1 sdd2
chronos@bob-rev4 / $ sudo mkfs.ext4 /dev/sda2
mke2fs 1.47.0 (5-Feb-2023)
Found a PMBR partition table in /dev/sda2
Proceed anyway? (y,N) y
Creating filesystem with 7773303 4k blocks and 1945888 inodes
Filesystem UUID: 3a6d862e-614d-4e16-8ced-d604b8007665
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks):
done
Writing superblocks and filesystem accounting information: done
chronos@bob-rev4 / $
chronos@bob-rev4 / $ cd /tmp
chronos@bob-rev4 /tmp $ curl -LO http://os.archlinuxarm.org/os/ArchLinuxARM-gru-latest.tar.gz
chronos@bob-rev4 /tmp $ ls -l ArchLinuxARM-gru-latest.tar.gz
-rw-r--r--. 1 chronos chronos 407454003 Feb 1 13:55 ArchLinuxARM-gru-latest.tar.gz
chronos@bob-rev4 /tmp $ rm -rf root 2>/dev/null
chronos@bob-rev4 /tmp $ mkdir root
chronos@bob-rev4 /tmp $ sudo mount /dev/sda2 root
chronos@bob-rev4 /tmp $ sudo tar -xf ArchLinuxARM-gru-latest.tar.gz -C root
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.security.capability'
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.security.capability'
chronos@bob-rev4 /tmp $ sudo dd if=root/boot/vmlinux.kpart of=/dev/sda1
44784+0 records in
44784+0 records out
22929408 bytes (23 MB, 22 MiB) copied, 15.0869 s, 1.5 MB/s
chronos@bob-rev4 /tmp $ sudo umount root
chronos@bob-rev4 /tmp $ sudo sync
Wi-Fi機器を認識しない
これで、マイクロSDカードを差し込んだまま再起動して、Ctrl+u
を押してブート起動する。
これで、root
ログインしてユーザ作るなりパッケージをインストールすれば良いのだけど…
しかし、Wi-Fi機器を認識しないというトラブルに遭遇する。linux-firmware-marvell
をインストールすれば良いという回答があるが、インストールしても認識しない…詰んだ…去年の2023年は認識したはずなのに…ということで去年のを持ってくる。
Index of /aarm/repos/2022/12/31/os/から linux-firmware-marvell-20231110.74158e7a-1-any.pkg.tar.xz をダウンロードしてpacman -U ./linux-firmware-marvell-20231110.74158e7a-1-any.pkg.tar.xz
して、再起動して認識するようになった…やれやれ…
How to Prevent Packages From Getting Updated in Arch Linuxを参考にlinux-firmware-marvell
がアップグレードしないようにする。
/etc/pacman.conf
IgnorePkg = linux-firmware-marvell
これでOK。
pacman キーリングを初期化
pacman-key --init
pacman-key --populate archlinuxarm
pacman-key --populate archlinuxarm
最初エラーになったが、良く分からんがpacman-key --refresh-key
したら?出来るようになった。
そして、pacman -S archlinux-keyring
でパッケージ更新・インストールの準備が整う。さあ、これからC101PAをポメラ化していくぞ!