NanoPi M1
NanoPi M1 は小型の ARM 搭載コンピュータです。Allwinner H3 プロセッサと 512 または 1024 MB のメモリを搭載しています。この記事は Orange Pi の記事を基にしています。
目次
ベースシステムの作成
NanoPi M1 は Das U-Boot でイメージ化された ext4 のシングルパーティションから起動します。その後 ArchLinuxArm の RootFS をカードにダウンロードすることが可能です。
開発環境の作成
開発ファイルを保存するためのディレクトリを作成:
$ mkdir -p nanopi_arch/mnt
SD カードのパーティションとマウント
fdisk を使って SD カードをパーティションして mkfs.ext4 -O ^metadata_csum,^64bit /dev/sdX1
でフォーマットしてください (デバイス名は適当に置き換えてください)。カードをマウントするには:
# mount /dev/sdX1 mnt
ArchLinuxArm RootFS のインストール
RootFS from ArchLinuxArm のウェブサイトから RootFS をダウンロード:
$ wget https://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz
SD カードに RootFS を展開:
# bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz -C mnt/ # sync
U-Boot の設定
以下のブートスクリプトを作成:
boot.cmd
part uuid ${devtype} ${devnum}:${bootpart} uuid setenv bootargs console=${console} root=PARTUUID=${uuid} rw rootwait if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}; else bootz ${kernel_addr_r} - ${fdt_addr_r}; fi; fi; fi if load ${devtype} ${devnum}:${bootpart} 0x48000000 /boot/uImage; then if load ${devtype} ${devnum}:${bootpart} 0x43000000 /boot/script.bin; then setenv bootm_boot_mode sec; bootm 0x48000000; fi; fi
uboot-tools を使ってコンパイルし、SD カードに書き込む:
# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "NanoPi M1 Boot Script" -d boot.cmd mnt/boot/boot.scr
SD カードのアンマウント
# umount mnt
U-Boot のインストール
jernejsk の git リポジトリから U-Boot をクローン:
$ git clone --depth 1 https://github.com/jernejsk/u-boot.git
Arch 用の U-Boot コードにはバグが存在します。以下のコマンドで修正します:
$ sed -i -e 's/\#\!\/usr\/bin\/env\ python/\#\!\/usr\/bin\/env\ python2/g' tools/binman/binman
NanoPi は OrangePi PC と共通している部分が多いため、OrangePi のターゲットを使用することができます。U-Boot をビルド:
$ cd u-boot $ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi- orangepi_pc_defconfig $ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi-
u-boot-sunxi-with-spl.bin
という名前のイメージが生成されるので SD カードに書き込む:
# dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8 $ cd ..
ベースシステムの設定
NanoPi の起動
NanoPi に 5V 電源で給電してください。起動しない場合、こちら やシリアルコンソールの記事に書かれているように UART シリアルデバッガを接続してください。
alarm/alarm
で SSH にログインできます。
Root パスワード: root
。
Linux のアップデート
まず、SSH でシステム内に入り、passwd
で root パスワードを変更してください。
以下のコマンドで Linux 環境をアップデートしてください:
# pacman -Syu
base-devel グループおよび Git をインストールしてください。
そして、SoC にある Mali グラフィクスカードのドライバーをインストールします。
# git clone https://github.com/mripard/sunxi-mali.git # cd sunxi-mali # export CROSS_COMPILE=$TOOLCHAIN_PREFIX # export KDIR=$KERNEL_BUILD_DIR # export INSTALL_MOD_PATH=$TARGET_DIR # ./build.sh -r r6p2 -b # ./build.sh -r r6p2 -i
最後に、ユーザースペースのブロブを次のようにして導入します:
# git clone https://github.com/free-electrons/mali-blobs.git # cd mali-blobs # cp -a r6p2/fbdev/lib/lib_fb_dev/lib* $TARGET_DIR/usr/lib