
買ったまま放置していたMilk-V Duo Sである。
一応、公式のBuildrootファームウェアをSDに入れて起動はしてみていたがBuildrootではaptもyumも使えず、不自由なのでdebianを入れることにした。
Resource Download Summary | Milk-V
このサイトからimgファイルをダウンロードしてくればいいのだが、それなりに色々と面倒が待っている。
duos-e_sd.img.lz4がDuo S用のファイルなので、これをリンクからダウンロードする。
次に、まず母艦がMacなのでlz4形式の圧縮ファイルを解凍するため、
brew install lz4
でアーカイブユーティリティをインストールするところから。homebrewが入っていなかったらそこから始めないとならない。
lz4 -d duos-e_sd.img.lz4
によって解凍したらbalena etcherでSDに書き込む。このあたりは他のSBCなどと変わらない。
さて、SDをスロットに差し込んでUSB-Cポートで電源を投入すれば起動するのではあるが、このままではログインする手段がない。ethernet
ポートに振られたIPアドレスもわからないし、WiFiは装備されていない。一応ルーターの接続ユーティリティーでIPアドレスを特定するとかの手段は使えるかもしれない。(一応デフォルトではDHCPでアドレスを自動取得しているらしい。)
手っ取り早いのはシリアルコンソールでログインすることかな。

ということでUSBシリアル変換でつなぐ。GND,TxD,RxDをつなぎ、電源は別途USBポートから供給する。ボーレートは115200なので
% sudo cu -l /dev/tty.usbserial-21130 -s 115200
のようにして接続する。シリアル変換を繋いで上記コマンドで通信接続してからからUSB電源を繋げば起動画面の文字列スクロールが見える。
プロンプトが出たらrootでログインする。デフォルトパスワードはrv。risk-Vだからだろう。rootパスワードは変更しておくべき。
一応一般ユーザを作っておく。
% adduser kuro password: % sudo grep -E '^%sudo|^%wheel' /etc/sudoers %sudo ALL=(ALL:ALL) ALL % sudo usermod -aG sudo kuro
debianなのでsudoが使えるグループはsudoとなっているため作ったユーザをsudoグループに入れておく。
これでようやく一般ユーザでログインしてsudoも使えるようになった。
次に、毎回シリアルログインするのは大変なので、USB-Cポート(OTGポート)でMacと繋いでログインできるようにしておきたい。
Macから
networksetup -listallhardwareports
としてもUSB経由のネットワークポートらしきものは何も見えていない。
Duo S側で
$ ls /sys/class/udc/ 4340000.usb $ find /sys/kernel/config/usb_gadget -maxdepth 4 2>/dev/null /sys/kernel/config/usb_gadget /sys/kernel/config/usb_gadget/g0 /sys/kernel/config/usb_gadget/g0/os_desc /sys/kernel/config/usb_gadget/g0/os_desc/qw_sign /sys/kernel/config/usb_gadget/g0/os_desc/b_vendor_code /sys/kernel/config/usb_gadget/g0/os_desc/use /sys/kernel/config/usb_gadget/g0/strings /sys/kernel/config/usb_gadget/g0/strings/0x409 /sys/kernel/config/usb_gadget/g0/strings/0x409/serialnumber /sys/kernel/config/usb_gadget/g0/strings/0x409/product /sys/kernel/config/usb_gadget/g0/strings/0x409/manufacturer /sys/kernel/config/usb_gadget/g0/configs /sys/kernel/config/usb_gadget/g0/configs/c.1 /sys/kernel/config/usb_gadget/g0/configs/c.1/rndis.usb0 /sys/kernel/config/usb_gadget/g0/configs/c.1/strings /sys/kernel/config/usb_gadget/g0/configs/c.1/bmAttributes /sys/kernel/config/usb_gadget/g0/configs/c.1/MaxPower /sys/kernel/config/usb_gadget/g0/functions /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0 /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/os_desc /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/protocol /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/subclass /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/class /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/ifname /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/qmult /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/host_addr /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0/dev_addr /sys/kernel/config/usb_gadget/g0/max_speed /sys/kernel/config/usb_gadget/g0/UDC /sys/kernel/config/usb_gadget/g0/bcdUSB /sys/kernel/config/usb_gadget/g0/bcdDevice /sys/kernel/config/usb_gadget/g0/idProduct /sys/kernel/config/usb_gadget/g0/idVendor /sys/kernel/config/usb_gadget/g0/bMaxPacketSize0 /sys/kernel/config/usb_gadget/g0/bDeviceProtocol /sys/kernel/config/usb_gadget/g0/bDeviceSubClass /sys/kernel/config/usb_gadget/g0/bDeviceClass
事前情報通りrndis.usb0というのが見える。RNDISが最近のMacOSでは使えなくなっているらしいので、これを違うプロトコル(NCM)にする必要がある。
sudo mv /boot/usb.rndis /boot/usb.rndis.bak sudo touch /boot/usb.ncm
/bootにあるusb.rndisをリネームして使えなくして、usb.ncmという空のファイルを作っておく。
sudo /etc/init.d/S03usbdev stop sudo /etc/init.d/S03usbdev start
もしくはリブートすればOK
このUSBポートにはデフォルトで
10.85.232.1
というアドレスが振ってあるのでMacの方を
10.85.232.2
のように固定してやればUSBで繋いでログインできるようになるはず。
% networksetup -listallhardwareports Hardware Port: licheervnano Device: en12 Ethernet Address:
のようなポートができているはずなので
sudo networksetup -setmanual licheervnano 10.85.232.2 255.255.255.0 10.85.232.1
のように設定する。
これでMacのターミナルから
ssh kuro@10.85.232.1
でログインできるようになった。
一旦ログインできてしまえばethernetの方のアドレス設定なども不自由なくなるはずだ。
デフォルトではDHCPとなっているのを固定アドレスにするなら
sudo nano /etc/network/interfaces.d/end0
allow-hotplug end0
iface end0 inet static
address 192.168.40.51/24
gateway 192.168.40.1
dns-nameservers 8.8.8.8 1.1.1.1反映
sudo ifdown end0 sudo ip addr flush dev end0 sudo ifup end0
これでほぼ不自由ないlinux boxになったはずだ。
まあしかし日本国内ではそれなりの値段だしRaspberry Piのほうがなんだかんだで使いやすそうな感じだな。TPUがあってエッジAIとしては有利かもしれないがマイクロサーバ的用途ならRaspberry Pi 2Wにイーサネットポートをつけたほうが手っ取り早そう。MilkV Duo 256Mのメモリが512Mでお値段据え置きだったらいいのに。















