Ubuntu 23.04 RPiにethercatをインストールすると、modprobeに無効なパラメータエラー/空のMACアドレスが表示されますか?

Ubuntu 23.04 RPiにethercatをインストールすると、modprobeに無効なパラメータエラー/空のMACアドレスが表示されますか?

以下からethercatをインストールするhttps://gitlab.com/etherlab.org/ethercat.gitUbuntu Server 23.04(32ビット)を実行しているRPi 3B v1.2。 Ubuntuを初めて使用する場合は、Raspbianに比較的慣れています。

すべてがエラーのないポイントに到達するのに長い時間がかかり、その後ethercat.confファイルを編集して/ etcにコピーしました。

これはエラーです。

rbgorbet@artoo:~$ sudo ethercatctl start
modprobe: ERROR: could not insert 'ec_master': Invalid argument

そして日記帳の手がかり

Jun 21 17:51:15 artoo sudo[1024]: rbgorbet : TTY=pts/0 ; PWD=/home/rbgorbet ; USER=root ; COMMAND=/usr/local/sbin/ethercatctl start
Jun 21 17:51:15 artoo sudo[1024]: pam_unix(sudo:session): session opened for user root(uid=0) by rbgorbet(uid=1000)
Jun 21 17:51:16 artoo kernel: ec_master: loading out-of-tree module taints kernel.
Jun 21 17:51:16 artoo kernel: EtherCAT: Master driver 1.5.2 1.5.2-300-g04f202a3
Jun 21 17:51:16 artoo kernel: EtherCAT ERROR: MAC address may not be empty.
Jun 21 17:51:16 artoo sudo[1024]: pam_unix(sudo:session): session closed for user root

MACアドレスは無効なパラメータエラーを示す「null」として表示されますが、/etc/ethercat.conf(権限= 644)ファイルには次のものが含まれます。

...
# Examples:
# MASTER0_DEVICE="00:00:08:44:ab:66"
# MASTER0_DEVICE="eth0"
#
MASTER0_DEVICE="b8:27:eb:44:73:ab"
#MASTER1_DEVICE=""
...

そして

rbgorbet@artoo:~$ ip addr
...
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether b8:27:eb:44:73:ab brd ff:ff:ff:ff:ff:ff
...

私が試したこと(インターネット上のエラーテキストを検索することに加えて):

  • systemd が .conf ファイルに対する変更を受け取らない場合は、再起動してください。それが問題だと思います。 (起動後に.confを編集しました...)
  • sudo systemctlデーモンが再起動されます。
  • 注釈付きの例に示すように、ethercat.confの実際のMACアドレスを「eth0」に置き換えます。
  • 古いsysconfigファイルが問題の原因であることを確認してください。 /etc/init.d/ethercat ファイルがまったくなく、/etc/sysconfig ディレクトリもありません(理解できます)。

それぞれの場合、ethercatctl サービスの開始時に同じエラーが発生します。

どんなアイデアがありますか?私は非常にブロックされました。

コメントで提案したように他のことを試みました。

rbgorbet@artoo:~$ sudo strace -f -e trace=finit_module,init_module ethercatctl start

strace: Process 3462 attached
[pid  3462] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3462, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
strace: Process 3463 attached
[pid  3463] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3463, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
strace: Process 3464 attached
[pid  3464] finit_module(3, "main_devices= backup_devices=", 0) = -1 EINVAL (Invalid argument)
modprobe: ERROR: could not insert 'ec_master': Invalid argument
[pid  3464] +++ exited with 1 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3464, si_uid=0, si_status=1, si_utime=0, si_stime=5 /* 0.05 s */} ---
+++ exited with 1 +++

その結果、私はmain_devices=それを見つけてgrepから見つけました/usr/local/sbin/ethercatctl。探してみると/lib/systemd/system/ethercat.serviceこれがまさに名前ですね。それを見るとethercatctl、confファイルが私が置いた場所とは異なる場所にあると予想されていることがわかりました(Ethercatインストールガイドによると、それを入れましたが、それが見つかると/etc/ethercat.conf予想しました/usr/local/bin/ethercat.conf)。当然ながら、ファイルを見つけたときにMAC情報がありませんでした。これを追加すると問題が解決し、サービスが開始されます。

答え1

実行すると、モジュールが正しいパラメータで呼び出されたことを確認ethercatctlできます。strace

sudo strace -f -e trace=finit_module,init_module ethercatctl start

明らかにこれは本当ではありません。その後、別の呼び出しを実行して、構成ファイルを正常に読み取ったことをstrace確認できます。ethercatctl

sudo strace -f -e trace=%file ethercatctl start 2>&1 | grep ethercat.conf

この場合、設定ファイルが間違ったパスにあることを示します。

関連情報