NanoPi M1

提供: ArchWiki
2019年5月3日 (金) 15:32時点におけるHiromi-mi (トーク | 投稿記録)による版 (英語版と同期)
ナビゲーションに移動 検索に移動

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 のインストール

ノート: 2017年5月現在、上流の 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