見出し画像

de10-nano, SoCモジュールで遊ぶ [Linux UserLand編-01]

今回はユーザランド編/ホストでの作業編です。

 microSDは、速度の速い物を用意してください。でないと時間単位の作業になるもかも知れません。
 私の環境では、debootstrapが、debian-11のarmだと、うまく出来ませんでした。(debian-10は、問題なく作成可能)
 そのため、今回は、minimal版を使います。
これをダウンロードして、最低限の設定を行います。

では初めて見ましょう
■ debian-11をダウンロードします。
 今回はダウンロード先は、~/Downloadsにしましたが、適当に変えてください。

mkdir ~/Downloads/
cd ~/Downloads/
wget https://rcn-ee.com/rootfs/eewiki/minfs/debian-11.2-minimal-armhf-2021-12-20.tar.xz
tar xf debian-11.2-minimal-armhf-2021-12-20.tar.xz
rm debian-11.2-minimal-armhf-2021-12-20.tar.xz

■ Exportで、よく使う値を設定しておきます。
 今回は、
 開発中のディレクトリは、~/Soc_FPGA
 microSDは、"/dev/sdb"の場合の手順です

export DISK=/dev/sdb
export kernel_version=5.14.0-128972-g73c8c03ffdea-dirty
export TOP_FOLDER=~/SoC_FPGA

■ Boot用のmicroSDのの設定
microSDに直接データの書き込みを行います。
パーティションは下記の予定です。

# デバイス   起動 開始位置 最後から   セクタ サイズ Id タイプ
# /dev/sdb1  *        4096  1232895  1228800   600M  b W95 FAT32
# /dev/sdb2        1232896 31116287 29883392  14.3G 83 Linux
# /dev/sdb3           2048     4095     2048     1M a2 不明

microSDを用意して母艦に挿してください。

sudo dd if=/dev/zero of=${DISK} bs=256M count=1 status=progress
sudo fdisk ${DISK}

n<CR>
p<CR>
3<CR>
<CR>
+1M<CR>

n<CR>
p<CR>
1<CR>
<CR>
+600M<CR>

n<CR>
p<CR>
2<CR>
<CR>
<CR>

a<CR>
1<CR>

t<CR>
3<CR>
a2<CR>

t<CR>
1<CR>
b<CR>


w<CR>

■ format
 パーティション分離後、各エリアでフォーマットを行います。

sudo mkfs.vfat -n boot ${DISK}1
sudo mkfs.ext4 -L rootfs ${DISK}2

各パーティションへのデータのコピーを行います。
■ /dev/sdb3へ

sudo dd if=${TOP_FOLDER}/DE10_NANO_SoC_FB/software/bootloader/u-boot-socfpga/u-boot-with-spl.sfp of=${DISK}3

■ /dev/sdb1へ
 ※注意※  .sof→.rbfへの変換をしておいてください。

sudo mkdir -p /media/boot/
sudo mount ${DISK}1 /media/boot/
sudo cp ${TOP_FOLDER}/linux-socfpga/arch/arm/boot/zImage /media/boot/.
sudo cp ${TOP_FOLDER}/DE10_NANO_SoC_FB/software/bootloader/u-boot-socfpga/u-boot.scr /media/boot/.
sudo cp ${TOP_FOLDER}/DE10_NANO_SoC_FB/software/bootloader/u-boot-socfpga/u-boot.dtb /media/boot/.
sudo cp ${TOP_FOLDER}/DE10_NANO_SoC_FB/output_files/soc_system.rbf /media/boot/.				←FPGAデータ(新しい物入れ替え可.)
sudo cp ${TOP_FOLDER}/DE10_NANO_SoC_FB/soc_system.dtb /media/boot/.
# sudo cp ${TOP_FOLDER}/DE10_NANO_SoC_FB//soc_system.dtb /media/boot/.						←不要かも
sudo umount /media/boot

■ /dev/sdb2へ

sudo mkdir -p /media/rootfs/
sudo mount ${DISK}2 /media/rootfs/
sudo tar xfvp ~/Downloads/debian-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/
sync

sudo mkdir -p /media/rootfs/boot/extlinux/
sudo sh -c "echo 'label Linux ${kernel_version}' > /media/rootfs/boot/extlinux/extlinux.conf"
sudo sh -c "echo '    kernel /boot/vmlinuz-${kernel_version}' >> /media/rootfs/boot/extlinux/extlinux.conf"
sudo sh -c "echo '    append root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait quiet' >> /media/rootfs/boot/extlinux/extlinux.conf"
sudo sh -c "echo '    fdtdir /boot/dtbs/${kernel_version}/' >> /media/rootfs/boot/extlinux/extlinux.conf"

# DeviceTreeのコピー
sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/
sudo cp ${TOP_FOLDER}/linux-socfpga/arch/arm/boot/dts/socfpga_cyclone5_de0_nano_soc_FB.dts /media/rootfs/boot/dtbs/${kernel_version}/

# Kernel moduleのコピー
sudo cp -ar ${TOP_FOLDER}/linux-socfpga/modules_install/* /media/rootfs/

# fstab
sudo sh -c "echo '/dev/mmcblk0p2  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

■ 最後に、

sync
sudo umount /media/rootfs

以上で、母艦での作業のboot用のmicroSDが完成です。
このあと、lxdeや、xfce等の設定は、ターゲットで行います。
これらは、時間単位?と思えるぐらいの(downloadに)時間がかかります。ご注意ください。

つづく….


この記事が気に入ったらサポートをしてみませんか?