先日Raspberry Pi 4 を手に入れました。Raspberry Pi 4はメモリやプロセッサがだいぶ強化されてちょっとしたPC並には使えるという話だったのでIoT用途ではなくデスクトップPC用途で整えてみようと思います。
普通にRaspbianを入れても良かったのですが、過去のRaspberry Pi 3にインストールしたとき妙にもっさりしていたり不要なオフィススイートが入っていたりして厄介だったので、今回はかねてより気になっていたArchLinuxを入れることにします。デスクトップ環境もXfceにして軽いLinuxデスクトップを目指します。
ArchLinux
ArchLinuxのインストールは公式のページに書いてあるのであまり書くことはないのですが、手順が書いてあっても割と自分は苦戦したのでやった過程を書いていきたいと思います。
SDカードのフォーマット
SDカードのフォーマットを行います。
まずは公式のページに書かれているとおりfdiskでパーティションを分割していきます。この作業はUbuntuの上で行いました。
この作業は公式のページで次のように書かれています。
At the fdisk prompt, delete old partitions and create a new one:
Type o. This will clear out any partitions on the drive.
Type p to list partitions. There should be no partitions left.
Type n, then p for primary, 1 for the first partition on the drive, press ENTER to accept the default first sector, then type +100M for the last sector.
Type t, then c to set the first partition to type W95 FAT32 (LBA).
Type n, then p for primary, 2 for the second partition on the drive, and then press ENTER twice to accept the default first and last sector.
Write the partition table and exit by typing w.
コマンドのログは次のようになります。
$ sudo fdisk /dev/sdd fdisk (util-linux 2.31.1) へようこそ。 ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。 書き込みコマンドを使用する際は、注意して実行してください。 [コマンド (m でヘルプ): o 新しい DOS ディスクラベルを作成しました。識別子は 0xe62439f1 です。 コマンド (m でヘルプ): p ディスク /dev/sdd1: 119.2 GiB, 128026935296 バイト, 250052608 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0xe62439f1 コマンド (m でヘルプ): n パーティションタイプ p 基本パーティション (0 プライマリ, 0 拡張, 4 空き) e 拡張領域 (論理パーティションが入ります) 選択 (既定値 p): p パーティション番号 (1-4, 既定値 1): 1 最初のセクタ (2048-250052607, 既定値 2048): +100M 範囲外の値です。 最初のセクタ (2048-250052607, 既定値 2048): 最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-250052607, 既定値 250052607): +100M 新しいパーティション 1 をタイプ Linux、サイズ 100 MiB で作成しました。 コマンド (m でヘルプ): t パーティション 1 を選択 16 進数コード (L で利用可能なコードを一覧表示します): c パーティションのタイプを 'Linux' から 'W95 FAT32 (LBA)' に変更しました。 コマンド (m でヘルプ): n パーティションタイプ p 基本パーティション (1 プライマリ, 0 拡張, 3 空き) e 拡張領域 (論理パーティションが入ります) 選択 (既定値 p): p パーティション番号 (2-4, 既定値 2): 2 最初のセクタ (206848-250052607, 既定値 206848): 最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (206848-250052607, 既定値 250052607): 新しいパーティション 2 をタイプ Linux、サイズ 119.1 GiB で作成しました。 コマンド (m でヘルプ): w パーティション情報が変更されました。 The kernel still uses the old partitions. The new table will be used at the next reboot. ディスクを同期しています。
ここで気をつけるのは、SDカードのデバイスファイル名を間違わないことです。自分の場合は /dev/sdd
でした。これは環境によって異なるので要注意です。さらにパーティションを分割することで /dev/sdd1
と /dev/sdd2
が生まれます。デバイスファイル名に数字がつくようです。
その後mkfsコマンドでフォーマットしていきます。
その時のログが次のようになります。
$ sudo mkfs.vfat /dev/sdd1 mkfs.fat 4.1 (2017-01-24) $ sudo mount /dev/sdd1 boot $ mkfs.ext4 /dev/sdd2 mke2fs 1.44.1 (24-Mar-2018) Creating filesystem with 31234816 4k blocks and 7815168 inodes Filesystem UUID: 77f7d64f-d82d-4fab-b6ec-213f71df84da Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done $ mkdir root $ sudo mount /dev/sdd2 root
/dev/sdd1
をVFATに /dev/sdd2
を ext4にフォーマットしています。フォーマットしたパーティションをそれぞれ dev/sdd1
は boot
に dev/sdd2
は root
にマウントしています。これはその後ArchLinuxのインストールに使用します。
ArchLinuxのインストール
ArchLinuxのインストールを行います。この作業はrootユーザで行います。あと公式の手順道理 bsdtar
を使ってインストールするのが良いのでそれも忘れずにインストールする必要があります。
rootユーザになってbsdtarもインストールしたら次のようにコマンドを実行しインストールを行っていきます。
$ wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-4-latest.tar.gz $ bsdtar -xpf ArchLinuxARM-rpi-4-latest.tar.gz -C root $ sync
これで root
ディレクトリにマウントしている /dev/sdd2
にインストールされます。その後インストールされたファイル群の中からbootのために必要なファイルを次のコマンドでコピーします。
$ mv root/boot/* boot
これでSDカードへのファイルのインストールは完了しました。あとは本体にSDカードを刺して電源を入れて無事ログインを求められれば完了です。
ログインはデフォルトでは root
は root
でログインでき、 alarm
は alarm
でログインできます。
ログインできたらrootユーザでArchLinuxのパッケージマネージャの設定を次のコマンドで設定します。
$ pacman-key --init $ pacman-key --populate archlinuxarm
これでArchLinuxのインストールは完了です。
Xfce
次にデスクトップ環境を構築していきます。上のようにArchLinuxをインストールすると必要最低限の動作はしますが、デスクトップ環境は特に何もない状態になります。今回はXfceをインストールしていきます。Xfceは動作の軽いデスクトップ環境として知られているので、リソースがそれほど多くないRaspberryPiにはうってつけです。
X関連パッケージのインストール
Xfceを動かすにはXサーバーがインストールされている必要があるのでpacmanで関連パッケージをインストールします。
$ pacman -S xorg-server xorg-server-utils xorg-xinit $ pacman -S mesa
ドライバのインストール
次にディスプレイドライバをインストールします。Raspberry Piでは xf86-video-fbdev
を使用します。
$ pacman -S xf86-video-fbdev
ここまでで問題なければ startx
コマンドでX Window Systemが動くはずです。
Xfceのインストール
ここまでできたら後はXfceをインストールするだけです。次のコマンドでXfceをインストールします。
$ pacman -S xfce4
インストールが完了したら次のコマンドを実行するとXfceのデスクトップ環境が起動します。
$ startxfce4
LightDM
デスクトップ環境が構築され汎用的なパーソナル・コンピューター感が出てきましたが、このままだと startxfce4
コマンドを .bashrc
などに書かないとデスクトップ環境が実行されません。ディスプレイマネージャをインストールしデーモンとして起動時に実行させ、シェルでのログインではなくグラフィカルな画面でログインできるようにしましょう。今回はLigthDMをインストールします。
LightDMのインストール
LightDMもpacmanでインストールできます。次のコマンドでインストールします。
$ pacman -S lightdm
Greeterのインストール
Greeterは起動時にログインを求めるGUIです。これもpacmandでインストールします。
$ pacman -S lightdm-gtk2-greeter
LightDMを有効にする
LightDMのデーモンをsystemctlで有効にし、起動時にLightDMが実行されるようにします。
$ systemctl enable lightdm.service
これで起動時にGUIでログインできるようになります。
ここまでできると必要最低限のLinuxデスクトップが整います。
結果
最終的にこんな感じでLinuxデスクトップが仕上がりました。
かなりいろいろなものがむき出しです。普段自分が使っているモニタを使用したかったのですが、モニタの相性が悪かったためかうまく映らず以前使用していたRaspberryPiようのモニタを使用しています。この画面でpacmanでいろいろインストールしていたのですが、正直な話かなり辛いです。そのうちもう少しまともなモニタを導入したいところです。
まだデスクトップ環境を整えただけでほとんど何もできないので、少しずつ整えていって遊べるように仕上げていきたいところです。
参考資料
今回ArchLinuxのWikiには結構助けられたのですが、ArchLinuxは他のWikiの追随を許さないぐらい日本語での情報が整っているのでとても助かりました。