Milk-V Duoを使ってみる

ネットワーク共有

Milk-V Duo(CV1800B)/Duo256M(SG2002)にはEthernetの機能が有りません。
母艦側のファイルを送り込んだり、aptやpipでパッケージを追加するためには、RNDIS機能を使ったネットワーク共有が必要になります。

こちらに WindowsPCを母艦にしたネットワーク共有の手順が公開されています。
Windows10には2つのRNDISドライバーがインストールされています。
1つが「リモートNDISベースのインターネット共有デバイス」で英語表記は「Remote NDIS based Internet Sharing Device」です。
もう1つは「リモートNDIS互換デバイス」で英語表記は「Remote NDIS Compatible Device」です。
Windows10の標準は「リモートNDISベースのインターネット共有デバイス」です。

Milk-V Duoでネットワーク共有を使うためには、RNDISドライバーを「リモートNDISベースのインターネット共有デバイス」から
「リモートNDIS互換デバイス」に変更する必要が有ります。
こちらがWindows10の標準で使われているRNDISドライバー(リモートNDISベースのインターネット共有デバイス)ですが、 Milk-V Duoはこれでは動きません。


Milk-V Duoを紹介しているページでRNDISドライバーのインストールが必要と書かれているページが有りますが、
正確にはRNDISドライバーの切り替えが必要です。
RNDISドライバーを「リモートNDISベースのインターネット共有デバイス」から「リモートNDIS互換デバイス」に変更すると、
Luckfox-Picoなど、標準ドライバーを使用していたボードのRNDIS機能は使えなくなります。
ボードによってドライバーを切り替える必要があり、滅茶苦茶不便です。
Milk-V Duoでも「リモートNDISベースのインターネット共有デバイス」で動くようにして欲しいです。

RNIDSドライバーを変更するとWindows側にリモートRNDIS互換デバイスが出現します。


母艦側のイーサネットのネットワークのプロパティを開いて共有を有効にします。


「識別されていないネットワーク」のプロパティを開いて、さらにインターネットプロトコルバージョン4のプロパティを開きます。


IPアドレス、サブネットマスクを指定します。
ネットワーク共有を使うためには、IPアドレスは「192.168.42.2」にする必要が有ります。
これはMilk-V側のルーティング情報がこのアドレスを使っているためです。



◇pingによる疎通確認
Windowsのコマンドプロンプトでpingを実行するとMilk-Vにpingが通ります。


◇scpによるリモートファイル転送
scpを行うためにはMilk-V側のユーザにパスワードが付いている必要が有ります。
パスワードが無いユーザはscp/sshが使えません。


Milk-V側でパスワードを指定します。


Windowsのコマンドプロンプトでscpを実行するとMilk-Vへのファイル転送ができます。
WinScpなどのGUIツールも使用することができます。


◇sshによるリモートログイン
Windowsのコマンドプロンプトでsshを実行するとMilk-Vへのリモートログインができます。
TeraTermなどのGUIツールも利用することができます。



◇ネットワーク共有
buildrootの時はMilk-V側で以下のコマンドを実行します。
ubuntuの時は既に同じ情報が登録されているので、追加のコマンドは不要です。
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.42.0    *               255.255.255.0   U     0      0        0 usb0

# route add default gw 192.168.42.2

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.42.2    0.0.0.0         UG    0      0        0 usb0
192.168.42.0    *               255.255.255.0   U     0      0        0 usb0

# ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 18 May 15  2024 /etc/resolv.conf -> ../tmp/resolv.conf

# echo "nameserver 8.8.8.8" >> /etc/resolv.conf

# cat /etc/resolv.conf
nameserver 8.8.8.8

これでMilk-Vから外部にネットワークが繋がります。


LinuxPCを母艦としたネットワーク共有の手順がこちらに 公開されています。