お世話になります。
RZ/V2MAのソフト開発環境を構築しており、Windows PC(Surface)にUbuntu 20.04 LTSを導入して動かしています。micro SDはある程度 環境構築ができているものを使おうとしているのですが、新たにソフトをインストールするにはLinuxでSDカードの方に書き込む必要があると考えられます(micro SDをボードに挿入しコンソールを通して起動することはできています)。経緯を説明しますと、Surfaceにはmicro SDの端子はなく、USB-Aの変換アダプタを介して接続させました。変換アダプタにはmicro SDのコネクタがあるので直挿しです。Windowsのusbipdを使ってLinuxでUSBを認識させることに成功したのですが、そこからSDカードをマウントする際に「第二パーティション」と呼ばれるものが見当たりません。初心者ですので、うまく説明できていないかもしれませんが、お尋ねしたい内容は下記の通りです。
1) 上のような状況で、「第二パーティション」を確認するにはどうしたら良いでしょうか。確認できない場合はどうしたら良いかも教えてくださいますでしょうか。 表示されるであろう「デバイスファイル名」も見方がよく分からないので併せて教えてくださいますようお願いいたします。
2) micro SDカードの中にもフォルダがいくつかあると思うのですが、そこにアクセスするにはどうしたら良いでしょうか。良いマニュアルがあれば教えてくださると幸いです。 なお、WindowsでUSBを認識させた時にフォルダに表示されたものを画像に添付いたします。 バイナリファイルなので、Windowsのフォルダからダイレクトにアクセスできないことは確信しております・・・。本来ならばUbuntuによりアクセスするのでしょう。
3) SDカードをボードに挿し、コンソール経由でフォルダの中身を見れたりしますでしょうか(多分、コンソール通信ではファイルのやり取りはできないと思いますが・・・)。内容が多くて大変申し訳ございません。本当に初心者ですので、詳しく教えていただけますと幸いです。説明不足な点もあるかもしれません。その際はご回答を踏まえて私の方で確認しながら、教えていただければと存じます。よろしくお願いいたします。
まず、構築している RZ/V2MA のソフト開発環境について、確認したいです。
「RZ/V Verified Linux Package Start-Up Guide for RZ/V2MA」のマニュアルをチラ見すると、Windows PC と Linux PC の 2 台の PC を使うことを前提に書かれているようです。Bena さんは、1 台の Windows PC で間に合わせようとして苦戦しているようですが、正しいですか?
そうした場合の代表的な対策としては、次のような方法があります。(1) 1 台の PC に Windows と Linux をインストールして、デュアルブートで切替える(2) Linux を Windows 上の仮想化ソフトウェア(VirtualBox、VMWare 等)で実行する(3) Linux は、Windows の WSL2(Windows Subsystem for Linux 2)を使う
「Windows の usbipd を使って Linux で」と書かれているので、(3) でしょうか?
(3) だとして Bena さんの状況をみると、多分、
usbipd を使うには、WSL2 の Linux カーネルのソースを入手し、そのコンフィギュレーションを usbipd 対応に変更してビルドし直し、.wslconfig で WSL2 カーネルとして使用できるように設定する必要があります。これをしていない(あるいは正しく出来ていない)のだと思うのですが、どうですか?
行っていないなら、ネットなどで方法を調べて行なってください。
正直、「本当に初心者」には、難しいかもしれません。また、説明する方も大変です(汗個人的には、2 台の PC を使った環境に近い (1) や (2) の方法をお奨めします。
【追加】
追加です。
もし、Bena さんが「WSL support · dorssel/usbipd-win Wiki · GitHub」のページを見て環境設定をしたのなら、「sudo make menuconfig」での necessary additional features に不足があります。
Device Drivers -> USB SupportDevice Drivers -> USB Support > USB Mass Storage Support ← これが必要です Device Drivers -> USB Support -> USB announce new devicesDevice Drivers -> USB Support -> USB Modem (CDC ACM) supportDevice Drivers -> USB Support -> USB/IPDevice Drivers -> USB Support -> USB/IP -> VHCI HCDDevice Drivers -> USB Support -> USB/IP -> Debug messages for USB/IPDevice Drivers -> USB Serial Converter SupportDevice Drivers -> USB Serial Converter Support -> USB FTDI Single port Serial Driver
そうしてビルドしたカーネルで WSL2 を起動し、microSD を接続して lsusb を実行すると、
$ lsusb -t/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=vhci_hcd/8p, 480M |__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=usb-storage, 480M/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=vhci_hcd/8p, 5000M$
のように microSD がストレージとして認識され、
$ ls /dev/sd*/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sdd1 /dev/sdd2$
のように、microSD 全体(/dev/sdd)、第1パーティション(/dev/sdd1)、第2パーティション(/dev/sdd2)と、それぞれのデバイスファイル名が表示されるので、
$ sudo mount /dev/sdd2 /media$ ls /media
のようにマウントすれば、内容を確認できるはずです。
もし、Bena さんが「WSL support · dorssel/usbipd-win Wiki · GitHub」のページを見て環境設定しているなら、カーネルコンフィギュレーションに、赤字の設定を追加してください。
Device Drivers -> USB SupportDevice Drivers > USB Support > USB Mass Storage SupportDevice Drivers -> USB Support -> USB announce new devicesDevice Drivers -> USB Support -> USB Modem (CDC ACM) supportDevice Drivers -> USB Support -> USB/IPDevice Drivers -> USB Support -> USB/IP -> VHCI HCDDevice Drivers -> USB Support -> USB/IP -> Debug messages for USB/IPDevice Drivers -> USB Serial Converter SupportDevice Drivers -> USB Serial Converter Support -> USB FTDI Single port Serial Driver
ビルドし直したカーネルで WSL2 を起動すれば、lsusb で、
$ lsusb -t/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=vhci_hcd/8p, 480M |__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=usb-storage, 480M/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=vhci_hcd/8p, 5000M
microSD が見え、デバイスファイルも、例えば、
$ ls /dev/sd*/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sdd1 /dev/sdd2
のように、microSD 全体(/dev/sdd)、第1パーティション(/dev/sdd1)、第2パーティション(/dev/sdd2)が見えるようになるはずです。その後、
のようにして、内容を確認してください。
Linuxを入れたPCを用意してください。
/dev/sda /dev/sdb /dev/sdcとWindowsのCドライブ相当から順にabcがついたデバイスが存在します。SSDのみのPCならおそらく/dev/sdbがSDCARDになります。パーテーションは/dev/sdb0/1.....末尾に数値が指定されます。ただ、デバイスの指定方法が私が書いているのは古い方式になります。流れとしてはパーテーションの分割、フォーマットになります。パーテーションはfdiskコマンドを使う方法が古いやり方で私はそれしか知りません。そのあと、フォーマットです。ファイルシステムはいろいろありますが、EXT4あたりかな。
egretさま 教えてくださり、ありがとうございます。 一番最初のコメントで
egret said:「RZ/V Verified Linux Package Start-Up Guide for RZ/V2MA」のマニュアルをチラ見すると、Windows PC と Linux PC の 2 台の PC を使うことを前提に書かれているようです。
とのことで、やはり2台のマシンを用いるのが良いのかもしれませんね。。 これまでの作業は(3)のWindowsマシン一台で行っておりました。
教えていただいた一連の流れに沿って作業を行ってみたところ、 「sudo make menuconfig」の手順を抜かしていました。 USB Mass Storage Supportを追加し、カーネルビルドの作業した結果、
egret said:|__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=usb-storage, 480M
のような表示は確認できました。 しかし、
egret said:$ ls /dev/sd*/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sdd1 /dev/sdd2$
の赤色部分がまだ表示されておりません。 マウントまでもう少しだと思いますので、原因を調べてみようと思います。
いずれにせよ、WindowsとLinuxのPCを用意して(1)・(2)の方法も試してみようと思います。
ありがとうございました。
Yamamotoさま
年始早々、コメントくださいましてありがとうございました。
Ubuntu LTSを入れているコンピュータを使っていたのですが、どうやらこれが事を難しくしているのかもしれません…。 fdiskも使っていたのですが、どれもVirtual Diskのようで判別できませんでした。そもそもmicro SDを認識していない模様です。
生のLinux PCも手にいれることになりましたので、それで試してみようと思います。