root
ssd
NanoPi
1partition

NanoPIでHDD/SSDをROOT partitionにする

はじめに

NanoPIにはNAS kit が存在し、簡単にHDD/SSD(以下単にSSD)を搭載できます。
現在、SSDから起動する方法は見つかっていませんが、root partitionをSSDにしTFには/bootだけを残すことにより、TFへの書き込みをせず運用することができます。先にNanoPIでHDD/SSDを活用するを発表しましたが、その後の成果をまとめます。
FB NanoPIの部屋の成果物です。

Backup

ddrescueでSDをコピーします。

設定方法

fdiskの実行

私は256GBのSSDを使いました。
fdiskで2つのパーティーションに分けました。

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1          2048   8390655   8388608     4G 82 Linux swap / Solaris
/dev/sda2       8390656 500118191 491727536 234.5G 83 Linux

mkfsとコピー

mkdir /a
mkfs -t ext4 /dev/sda2
mount /dev/sda2 /a
mkswap -c /dev/sda1
swapon /dev/sda1
swapoff  /mnt/512MB.swap
rm  /mnt/512MB.swap 
cd /
rsync -av bin etc home lib media mnt opt root run sbin usr var /a

mkdir /a/sys /a/tmp /a/proc /a/dev
umount /a

/etc/fstab の変更

/dev/mmcblk0p1  /boot   vfat    defaults 0 0
/dev/sda2       /       ext4    defaults 0 1
/dev/sda1       none    swap    sw       0 0
tmpfs           /tmp    tmpfs   defaults 0 0

/bootの設定

boot.scrを現状に合わせ得る必要があります。
そのためにboot.cmdを編集します。
まずは、backup

cd /boot
mv boot.scr boot.scr.bak
cp -p boot.cmd boot.cmd.bak
vi boot.cmd# Recompile with:
# mkimage -C none -A arm -T script -d boot.cmd boot.scr

setenv fsck.repair yes
setenv ramdisk rootfs.cpio.gz
setenv kernel Image

setenv env_addr 0x45000000
setenv kernel_addr 0x46000000
setenv ramdisk_addr 0x47000000
setenv dtb_addr 0x48000000

fatload mmc 0 \${kernel_addr} \${kernel}
fatload mmc 0 \${ramdisk_addr} \${ramdisk}
fatload mmc 0 \${dtb_addr} sun50i-h5-\${board}.dtb
fdt addr \${dtb_addr}

# setup MAC address
fdt set ethernet0 local-mac-address \${mac_node}

\# setup boot_device
fdt set mmc\${boot_mmc} boot_device <1>

setenv fbcon map:0
setenv bootargs earlyprintk root=/dev/sda2 rootfstype=ext4 rw rootwait fsck.repair=\${fsck.repair} panic=10 ${extra} fbcon=\${fbcon}
booti \${kernel_addr} \${ramdisk_addr}:500000 \${dtb_addr}

Compile

mkimage -C none -A arm -T script -d boot.cmd boot.scr

試験のための再起動

reboot
立ち上がってコマンドが実行できれば合格です。

df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             231M     0  231M    0% /dev
tmpfs             49M  3.0M   46M    7% /run
/dev/sda2        230G  4.9G  214G    3% /
tmpfs            242M     0  242M    0% /dev/shm
tmpfs            5.0M     0  5.0M    0% /run/lock
tmpfs            242M     0  242M    0% /sys/fs/cgroup
tmpfs            242M   40K  242M    1% /tmp
/dev/mmcblk0p1   100M   17M   83M   17% /boot
tmpfs             49M     0   49M    0% /run/user/0

不要データーの消去

ここまで来ればssdに移動したsdのデーターは不要です。
mmcblk0p2は使われていません。
消去するなり、もっと小さいTFにコピーしてかまいません。

結論

あっさりSSD Machineになりました。

訂正

2018年5月4日:竹花 文士さんの指摘による訂正。1行削除、1行修正。
2018年5月24日: 山本 昌治さんの指摘により訂正。リスト化。
2018年7月20日:Katsutoshi Isakaさんからのバグレポートによりsda1, sda2の書き間違いおよびswap fileの処理を修正。