Help us understand the problem. What is going on with this article?

NanoPIでHDD/SSDをROOT partitionにする

More than 1 year has passed since last update.

概述

NanoPI有一个NAS套件,很容易安装HDD / SSD(以下简称SSD)。
目前,还没有找到从SSD引导的方法,但是可以通过使根分区成为SSD并且仅在TF中保留/ boot来在不写入TF的情况下进行操作。

はじめに

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の処理を修正。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away