1 votos

Dispositivo SocketCAN en Ubuntu Core

Actualmente estoy tratando de usar un SocketCAN dispositivo habilitado (Kvaser USBcan Luz 2xHS) en un Dell Borde de la Puerta de enlace 3002 ejecutando Ubuntu Core con 16.

Esto PUEDE interfaz ha sido probado en Ubuntu de Escritorio con éxito.

El PUEDE módulos del kernel no se cargan por defecto en Ubuntu Core con 16, así que mi primer paso fue a cargar:

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

Conexión de la interfaz CAN en este punto debe dar como resultado la creación de dos nuevas interfaces can (can0 y can1 por defecto). El problema es que las interfaces están en ninguna parte ser encontrado:

$ 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

La salida de dmesg muestra que hubo algún tipo de problema de seguridad. Yo no estoy familiarizado con AppArmor así que no estoy exactamente seguro de si esto tiene alguna relevancia:

$ 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 

Hay alguien con la experiencia anterior con SocketCAN dispositivos en Ubuntu Core? Las instrucciones sobre cómo depurar esto?

Gracias!

EDICIÓN 01

Hemos intentado dejar el apparmor servicio:

# 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.

Curiosamente, el apparmor negación mensaje sigue apareciendo después de conectar el USBcan dispositivo:

# 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

Supongo que esto tiene algo que ver con la inherente restricciones de Ubuntu Core.

EDICIÓN 02

Me temo que no puedo usar apt en Ubuntu Core y que no hay ningún encaje para apparmor-utils. El aa-enforce y aa-complain comandos no son reconocidos.

Traté de ejecutar systemctl disable apparmor.service y reiniciar. Después de esto, el acceso SSH a la puerta de entrada estaba perdido (es una cabeza de la máquina sin GPU) y tuve que actualizar la imagen del sistema operativo de nuevo. Me pregunto si esto tiene algo que ver con Ubuntu Core que requieren de la apparmor servicio con el fin de funcionar correctamente.

El uefi-fw-tools complemento fue instalado por defecto en Ubuntu Core imagen que vino con la puerta de enlace.

Voy a intentar instalar el uefi-fw-tools complemento en devmode para tratar de evitar cualquier apparmor problemas y publicar los resultados.

EDICIÓN 03

Después de instalar el uefi-fw-tools complemento en devmode la AppArmor NEGÓ mensajes desaparecido, aunque el SocketCAN interfaz todavía no aparecen cuando se conecta el USBCan dispositivo.

Me puse en contacto Kvaser apoyo y parece que el USBcan la Luz sólo es compatible con el kernel >= 4.7, mientras que la puerta de enlace está ejecutando 4.4. El mínimo del núcleo como se menciona en la documentación se debe 3.2, pero este modelo no es compatible.

Muchas gracias de todos modos por tu ayuda en la depuración de AppArmor.

0voto

abu_bua Puntos 21

No te olvides de reiniciar después de cargar el kernel.

El comando estándar para configurar una interfaz de bus CAN es:

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

De esta forma se establecerá la tasa de bits de la can0 interfaz de 500 Kbps. Ahora que aparezca la interfaz y el inicio de dumping marcos:

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

o hacer un

ip l sh

Con respecto a la apparmor mensaje, no estoy seguro -, pero usted puede intentar:

  • En primer lugar me recomiendan para instalar apparmor-utils

    sudo apt install apparmor-utils
    
  • En su caso profile="snap.uefi-fw-tools.fwupd" niega a operation="open" name="/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/busnum" con pid=2327

    En su /etc/apparmor.d/snap.uefi-fw-tools.fwupd añadir la siguiente línea (insertar 2 espacios antes de /sys/.... !)

      /sys/devices/pci*/*/usb*/*/busnum rw,
    
  • Vuelva a cargar todos los perfiles de apparmor:

    sudo systemctl reload apparmor.service
    

    o si no se inicia/enabled

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

    Usted puede probar el estado con

    sudo systemctl status apparmor.service
    

    o

    sudo aa-status
    
  • Recomiendo el uso de

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

    Esto hará que las violaciones del perfil permitido y se ha iniciado. Útil para las pruebas y el desarrollo de nuevos perfiles. Más tarde, usted puede configurarlo para cumplir con

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

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: