关于 apparmor 消息,我不确定 - 但您可以尝试:

关于 apparmor 消息,我不确定 - 但您可以尝试:

我目前正在尝试使用支持 SocketCAN 的设备(Kvaser USBcan Light 2xHS)上Dell Edge Gateway 3002跑步Ubuntu 核心 16

该CAN接口已在Ubuntu桌面上成功测试。

CAN 内核模块在 Ubuntu Core 16 上默认未加载,因此我的第一步是加载它们:

$ lsmod | grep can
can_gw                 20480  0
can_raw                20480  0
can_dev                24576  1 kvaser_usb
can                    45056  2 can_gw,can_raw

此时连接 CAN 接口应导致创建两个新的 CAN 接口(默认情况can0can1)。问题是这些接口无处可寻:

$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether d8:9e:f3:9c:5f:9f brd ff:ff:ff:ff:ff:ff
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether d8:9e:f3:9c:5f:a1 brd ff:ff:ff:ff:ff:ff
4: wwan0: <BROADCAST,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether aa:c6:53:a2:73:a0 brd ff:ff:ff:ff:ff:ff
5: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
link/ether 00:23:a7:fa:99:68 brd ff:ff:ff:ff:ff:ff
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:57:84:86:f6 brd ff:ff:ff:ff:ff:ff

输出dmesg显示存在某种安全问题。我不熟悉 AppArmor,所以我不确定这是否有任何相关性:

$ dmesg | tail -n15
[  515.224025] usb 1-1: new high-speed USB device number 6 using xhci_hcd
[  515.353111] usb 1-1: New USB device found, idVendor=0bfd, idProduct=0123
[  515.353122] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  515.353129] usb 1-1: Product: Kvaser USBcan Light
[  515.353134] usb 1-1: Manufacturer: Kvaser AB
[  515.368908] audit: type=1400 audit(1539088148.830:340): apparmor="DENIED" operation="open" profile="snap.uefi-fw-tools.fwupd" name="/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/busnum" pid=2327 comm="fwupd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0 

有没有人有在 Ubuntu Core 上使用过 SocketCAN 设备的经验?有没有什么调试方法?

谢谢!

编辑01

我们已尝试停止 apparmor 服务:

# systemctl stop apparmor.service
# systemctl status apparmor.service
● apparmor.service - LSB: AppArmor initialization
   Loaded: loaded (/etc/init.d/apparmor; bad; vendor preset: enabled)
   Active: inactive (dead) since Tue 2018-10-09 15:40:17 UTC; 1s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 4442 ExecStop=/etc/init.d/apparmor stop (code=exited, status=0/SUCCESS)
  Process: 2345 ExecStart=/etc/init.d/apparmor start (code=exited, status=0/SUCCESS)

Oct 09 15:40:17 ******* systemd[1]: Stopping LSB: AppArmor initialization...
Oct 09 15:40:17 ******* apparmor[4442]:  * Clearing AppArmor profiles cache
Oct 09 15:40:17 ******* apparmor[4442]:    ...done.
Oct 09 15:40:17 ******* apparmor[4442]: All profile caches have been cleared, but no profiles have been unloaded.
Oct 09 15:40:17 ******* apparmor[4442]: Unloading profiles will leave already running processes permanently
Oct 09 15:40:17 ******* apparmor[4442]: unconfined, which can lead to unexpected situations.
Oct 09 15:40:17 ******* apparmor[4442]: To set a process to complain mode, use the command line tool
Oct 09 15:40:17 ******* apparmor[4442]: 'aa-complain'. To really tear down all profiles, run the init script
Oct 09 15:40:17 ******* apparmor[4442]: with the 'teardown' option."
Oct 09 15:40:17 ******* systemd[1]: Stopped LSB: AppArmor initialization.

奇怪的是,连接 USBcan 设备后,仍然会出现 apparmor 拒绝消息:

# dmesg | tail -n6
[ 1704.616028] usb 1-1: new high-speed USB device number 8 using xhci_hcd
[ 1704.744895] usb 1-1: New USB device found, idVendor=0bfd, idProduct=0123
[ 1704.744907] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1704.744913] usb 1-1: Product: Kvaser USBcan Light
[ 1704.744919] usb 1-1: Manufacturer: Kvaser AB
[ 1704.770397] audit: type=1400 audit(1539099996.288:134): apparmor="DENIED" operation="open" profile="snap.uefi-fw-tools.fwupd" name="/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/busnum" pid=4013 comm="fwupd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0

我猜想这与 Ubuntu Core 固有的限制有关。

编辑02

恐怕我无法apt在 Ubuntu Core 上使用,而且没有快照对于apparmor-utilsaa-enforceaa-complain命令无法被识别。

我确实尝试过运行systemctl disable apparmor.service并重新启动。此后,网关的 SSH 访问权限丢失(它是一台没有 GPU 的无头机器),我不得不再次刷新操作系统映像。我想知道这是否与 Ubuntu Core 需要该apparmor服务才能正常工作有关。

uefi-fw-toolssnap 包默认安装在网关附带的 Ubuntu Core 映像上。

我将尝试安装该uefi-fw-tools插件开发模式尽量避免任何 apparmor 问题并发布结果。

编辑03

安装uefi-fw-tools卡扣后开发模式AppArmor被拒消息消失了,尽管连接 USBCan 设备时 SocketCAN 接口仍然没有出现。

我联系了 Kvaser 支持人员,似乎 USBcan Light 仅支持内核 >= 4.7,而网关运行的是 4.4。文档中提到的最低内核应该是 3.2,但不支持此特定型号。

无论如何,非常感谢您在调试 AppArmor 方面提供的帮助。

答案1

别忘了重启加载内核后。

配置 CAN 总线接口的标准命令是:

ip link set can0 type can bitrate 500000 listen-only on

这会将 can0 接口的比特率设置为 500 Kbps。现在启动接口并开始转储帧:

ip link set can0 up
candump -cae can0,0:0,#FFFFFFFF

或者做一个

ip l sh

关于 apparmor 消息,我不确定 - 但您可以尝试:

  • 首先我建议安装 apparmor-utils

    sudo apt install apparmor-utils
    
  • 在你的情况下profile="snap.uefi-fw-tools.fwupd"拒绝operation="open" name="/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/busnum"pid=2327

    在您的/etc/apparmor.d/snap.uefi-fw-tools.fwupd添加中以下行(在 /sys/.... 前插入 2 个空格!)

      /sys/devices/pci*/*/usb*/*/busnum rw,
    
  • 重新加载所有 apparmor 配置文件:

    sudo systemctl reload apparmor.service
    

    或者如果未启动/启用

    sudo systemctl enable apparmor.service
    sudo systemctl start apparmor.service
    

    您可以使用以下方式证明状态

    sudo systemctl status apparmor.service
    

    或者

    sudo aa-status
    
  • 我建议使用

    sudo aa-complain /etc/apparmor.d/snap.uefi-fw-tools.fwupd
    

    这将允许并记录配置文件违规行为。这对于测试和开发新配置文件很有用。稍后您可以将其设置为强制执行

    sudo aa-enforce /etc/apparmor.d/snap.uefi-fw-tools.fwupd
    

相关内容