皆さんこんにちは。家庭用のスーパーコンピュータ(スパコン)を作っているD.Mです。
今回は、RISC-VのCPUを搭載したSBC「Milk-V Mars」をセットアップをしたので、その手順とポイントをまとめます。
RISC-Vとは?
RISC-V(リスクファイブ)は、2010年にカリフォルニア大学バークレー校で開発が始まった オープンソースの命令セットアーキテクチャ(Instruction Set Architecture, ISA) です。
ISAとは、CPUが理解・実行できる命令の仕様で、例えば Intel/AMD の「x86」、Raspberry Pi やスマホに多い「ARM」などがあります。RISC-Vは第三勢力的な感じです。
特徴は、誰でも無償で利用できる(x86やarmはライセンス料を支払う必要がある)、シンプルで拡張性が高い(らしい)が主なものです。
Milk-Vとは?
Milk-V(ミルクファイブ)は、中国の会社 Milk-V Technology が開発している、RISC-VアーキテクチャのSBC(シングルボードコンピュータ)のシリーズです。
今回使用する、「Milk-V Mars」は、Raspberry Piと同様、1枚の基板にCPU・メモリ・インターフェースが一通り搭載されており、電源とストレージを用意すればすぐに動かすことができます。
今回用意した構成は以下の通り(これ以外にも構成があります)
項目 | 説明 |
---|---|
SoC | StarFive JH7110 64bit SoC with RV64GC, 最大1.5GHz |
メモリ | LPDDR4 4GB(8GB搭載モデルもある) |
ストレージ | eMMCスロット、1xMicroSDスロット、SPIフラッシュブートローダー |
インターフェイス | 1xHDMI、ギガビットイーサネット、3xUSB2、1xUSB2、1xM.2 E-Key |
電源 | 5V USB-C(最低 3A) |
サイズ | 85 x 56 mm |
詳細は公式ページをご覧ください
https://milkv.io/ja/mars
https://milkv.io/ja/docs/mars/overview
OSイメージを入手する
ここからのセットアップは公式のドキュメントに従ったものです。
https://milkv.io/ja/docs/mars/getting-started/boot
ラズパイと同じ様に、microSDカードにOSイメージを書き込んで使用します。
今回は32GBのmicroSDカードを用意しました。
標準ではDebianOSが配布されているのでそちらを使用します。
https://github.com/milkv-mars/mars-buildroot-sdk/releases/
からmicroSDカードバージョンの
mars_debian-desktop_sdk-v3.6.1_sdcard_v1.0.6.img.zip
をダウンロードします。cm4バージョンと間違えないように
OSイメージをmicroSDに書き込む
ダウンロードしたzipを解凍します。
任意のソフトでイメージを書き込みます。
今回はbalenaEtcherを使用しました。
https://etcher.balena.io/
インストールして起動すると次の画面
Flash from fileで先ほど解凍したイメージを選択して、Select targetでmicroSDカードを選択して、Flash!で書き込みます。
書き込みが完了したら、PCからmicroSDを取り外します。
起動準備
microSDカードから起動させるために、本体のDIPスイッチを以下の画像の様に変更します。
それが終わったら、microSD、HDMIケーブル、USBキーボード、USBマウス、LANケーブルを接続します。
起動
準備ができたらType-Cケーブルを接続し、電源を投入します。
赤色のLEDが点灯し、緑のアクセスランプの点滅、画面が表示されます。
無事に起動しました。
初期のユーザーは、ユーザー名「user」パスワードは「milkv」となっているのでログインします。
初期設定補足
はじめに、今のところ、
** apt update, upgradeは非推奨 ** になっています。実行する場合は認証キーを書き換える必要があります。
パーテーションを変更する
初期の状態ではルートパーテーションが4GBとなっています。
これをSDカードの容量一杯まで広げます。
パーテーションの確認は
df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.4G 0 1.4G 0% /dev
tmpfs 388M 3.4M 385M 2% /run
/dev/mmcblk1p4 3.7G 3.2G 546M 86% /
tmpfs 1.9M 0 1.9M 0% /dev/shm
tmpfs 5.0M 12K 5.0M 1% /run/lock
tmpfs 388M 148K 388M 1% /run/user/1000
/dev/mmcblk1p4が今回拡張する箇所です。
sudo fdisk /dev/mmcblk1
を実行します。
Welcome to fdisk (util-linux 2.38.1)
~
Command (m for help):
と表示されます。
現在のパーティション情報を表示するために、pコマンドを入力します。
Command (m for help): p
Disk /dev/mmcblk1: 29.12 GiB, 31266439168 bytes, 61067264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2D487F15-E07F-4B07-BC04-80EA297E8675
Device Start End Sectors Size Type
/dev/mmcblk1p1 4096 8191 4096 2M HiFive BBL
/dev/mmcblk1p2 8192 16383 8192 4M HiFive FSBL
/dev/mmcblk1p3 16384 221183 204800 100M EFI System
/dev/mmcblk1p4 221184 8189918 7968735 3.8G Linux filesystem
Command (m for help):
次に、元のシステムからシステムパーティションを削除する、dコマンドを実行します。削除するパーティション番号を入力するように求められます。ここでは /dev/mmcblk1p4 を削除したいので、4と入力します。
Command (m for help): d
Partition number (1-4, default 4): 4
Partition 4 has been deleted.
Command (m for help):
次に、nコマンドを使って新しいパーティションを作成します。パーティション番号の入力を求められるので。ここでは4と入力します。
次の設問First sectorは、新しいパーティションの開始セクター値を入力します。
先ほど削除したパーティションの開始セクター値がデフォルト(default 221184)で設定されているので、値を入力せずにEnterキーを押します。
次の設問で新しいパーティションのサイズを入力します。デフォルト値でストレージ全体となるため、こちらも入力せずにEnterキーを押します。
最後の署名削除の設問はNoを入力してEnterを押します。
Command (m for help): n
Partition number (4-128, default 4): 4
First sector (34-61067230, default 221184):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (221184-61067230, default 61065215):
Created a new partition 4 of type 'Linux filesystem' and of size 29 GiB.
Partition #4 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: No
Command (m for help):
再度、pコマンドでパーティションを確認します。
Command (m for help): p
Disk /dev/mmcblk1: 29.12 GiB, 31266439168 bytes, 61067264 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2D487F15-E07F-4B07-BC04-80EA297E8675
Device Start End Sectors Size Type
/dev/mmcblk1p1 4096 8191 4096 2M HiFive BBL
/dev/mmcblk1p2 8192 16383 8192 4M HiFive FSBL
/dev/mmcblk1p3 16384 221183 204800 100M EFI System
/dev/mmcblk1p4 221184 61065215 60844032 29G Linux filesystem
Command (m for help):
確認ができたら、Wコマンドで変更を保存&対話モードを終了します。
Command (m for help): w
The partition table has been altered.
Syncing disks.
最後に、resize2fsコマンドでファイルシステムの拡張を完了します。
user@milkv: $ sudo resize2fs /dev/mmcblk1p4
resize2fs 1.46.6-rc1 (12-Sep-2022)
Filesystem at /dev/mmcblk1p4 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/mmcblk1p4 is now 7605504 (4k) blocks long.
df -h コマンドで正しく拡張されたことを確認します。
user@milkv: $ df -h
Filesystem Size Used Avail Use% Mounted on
udev 700M 0 700M 0% /dev
tmpfs 193M 3.3M 190M 2% /run
/dev/mmcblk1p4 29G 3.1G 26G 11% /
tmpfs 962M 0 962M 0% /dev/shm
tmpfs 5.0M 12K 5.0M 1% /run/lock
tmpfs 193M 64K 193M 1% /run/user/110
tmpfs 193M 24K 193M 1% /run/user/0
/dev/mmcblk1p3 100M 23M 77M 23% /boot
以上でMilk-Vのセットアップは完了です。
終わりに
みんさん無事にセットアップできましたでしょうか?
次回以降、Milk-Vで色々やってみようと思います。
フォロー、いいね、コメント等で応援いただけますと幸いです。
この記事をご覧になった皆さんのRISC-V生活が素敵になることを願っております。