以下から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
この場合、設定ファイルが間違ったパスにあることを示します。