NanoPi NEO Plus2
NanoPi NEO Plus2 は ARMv8-A アーキテクチャを搭載したミニマルなコンピュータです。プロジェクトの詳細は こちら。
インストール
ブートローダー
NanoPi は SD カードから起動しようとします。SD カードから起動できない場合、eMMC から起動します。デバイスを復元したいときは SD カードから起動すると良いでしょう。
標準カーネルを使う
NanoPi で Arch Linux を起動するにはまず http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO_Plus2#Install_OS の手順に従って公式イメージをインストールして、既存のカーネルイメージ・モジュール・uboot を使用して Arch Linux を起動します。標準イメージをインストールしたら、以下の手順で Arch Linux をインストールできます。
Linux PC に標準イメージを書き込んだ SD カードを挿入してください。以下のコマンドでは SD カードのルートファイルシステムが /dev/sdc2 に、uboot のパーティションが /dev/sdc1 に存在すると仮定します。
オリジナルのモジュールをバックアップ:
# mount /dev/sdc2 /mnt # bsdtar -czf orig_modules.tar.gz -C /mnt /lib/modules /lib/modprobe.d
WiFi サポートを修正するのに必要なファームウェアモジュールもバックアップ:
# bsdtar -czf orig_firmware.tar.gz -C /lib/firmware brcm ap6212
https://archlinuxarm.org/platforms/armv8/generic から Arch Linux の汎用 armv8 イメージをダウンロードして展開:
# umount /dev/sdc2 # mkfs.ext4 /dev/sdc2 # add -f to force overwrite of existing fs # mount /dev/sdc2 /mnt # bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt
オリジナルのモジュールを展開:
# rm -rf /mnt/lib/modules /mnt/lib/modprobe.d # bsdtar -xpf orig_modules.tar.gz -C /mnt
ブートパーティションを消去:
# rm -rf /mnt/boot/*
fstab を生成:
/mnt/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> /dev/mmcblk0p2 / ext4 rw,relatime,data=ordered,noatime 0 1 tmpfs /tmp tmpfs nodev,nosuid 0 0 /dev/mmcblk0p1 /boot vfat rw,defaults 0 1
NanoPi に SD カードを挿入すれば Arch Linux の標準 Linux カーネルが起動します。
カスタムカーネルをコンパイルする
クロスコンパイルの手順は http://wiki.friendlyarm.com/wiki/index.php/Building_U-boot_and_Linux_for_H5/H3/H2%2B#How_to_Compile_Mainline_BSP_for_H5 に記載されています。
NanoPi でカーネルをコンパイルすることもできます:
$ git clone https://github.com/friendlyarm/linux.git -b sunxi-4.x.y --depth 1 $ cd linux $ touch .scmversion $ make sunxi_arm64_defconfig ARCH=arm64 $ make -j4 Image dtbs ARCH=arm64
新しいカーネルを手動でインストール:
# cp arch/arm64/boot/Image /boot/Image # cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /boot/ # make modules_install INSTALL_MOD_PATH=/
WiFi サポートの修正
無線インターフェイスが認識されない場合、以下のメッセージが dmesg で確認できます:
dmesg
[ 12.020670] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43430a1-sdio.bin for chip 0x00a9a6(43430) rev 0x000001 [ 12.039285] brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac43430a1-sdio.bin failed with error -2 [ 13.081285] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50 [ 13.081285] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
修正するには、標準の wifi ファームウェアを使用する必要があります。
NanoPi にファームウェアモジュールをアップロード:
$ scp orig_firmware.tar.gz alarm@nanopi_ip:
NanoPi 側でモジュールを展開:
# bsdtar -xpf orig_firmware.tar.gz -C /lib/firmware
再起動後、無線インターフェイスが認識されるはずです。