Docker в первую очередь предназначен для запуска приложений. Но JetPack также сильно модифицирует систему. Поэтому, поэкспериментировав с этим некоторое время, я понял, что докер не подходит. LXD, полный контейнер среды Linux, гораздо лучше подходит для этой задачи. Я получил графический интерфейс, работающий в lxd - просто следуйте любым учебным пособиям для LXD или LXC GUI, и после того, как он заработает, вам дополнительно необходимо установить драйверы nvidia для графического интерфейса JetPack (по крайней мере, если вы используете драйверы Nvidia на хост-компьютере):
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-XXX # replace XXX with the same version your computer is running!
И все будет работать быстро и плавно ... только потому, что я потратил слишком много времени на то, чтобы выяснить, как подключить USB-порт Jetson к LXD, и, наконец, я этого не понял. Но я думаю, это будет возможно, если вы знаете, как хорошо справляться с низкоуровневым ядром.
Решение
Во всяком случае, наконец, я понял, что я использую неправильные инструменты для этой задачи. Мне не нужен контейнер. Хост Jetson не будет тем, что я хочу запускать и уничтожать снова и снова (для этого хороши контейнеры). Все, что я хочу, это мобильность - чтобы я не был привязан к устареванию Ubuntu 16.04 на физическом хосте, но мог использовать более новое программное обеспечение. Старая добрая виртуальная машина (ВМ) намного проще, экономит мое время и нервы - и подходит для этой цели. Итак (убедитесь, что Jetson подключен первым):
Запустите команду lsusb
в терминале хоста (если хостом является linux), чтобы проверить, появляется ли Jetson. Если нет, то что-то не так. Должна отображаться строка, подобная этой: Bus 001 Device 003: ID 0955:xxxx NVidia Corp.
Установите VirtualBox, загрузите Ubuntu 16.04 .iso с сайта ubuntu.com и установите его на новый компьютер VirtualBox.
- Установите пакет расширений VirtualBox с VirtualBox.org (необходим для подключения USB-устройств). NB! Вам нужно скачать ту же версию, что и ваш VirtualBox. Дважды щелкните установщик, и VirtualBox установит его
Добавьте вашего пользователя в HOST (не VM) в группу vboxusers (по крайней мере, в Linux):
sudo usermod -aG vboxusers $USER
Перезапустите (или, возможно, выйдите из системы), чтобы добавление группы вступило в силу.
- Включите поддержку USB 2.0 через Настройки-> USB (или, возможно, поддержку USB 3.0 - я не пробовал, у меня работал USB 2.0)
- Перезагрузите ВМ
- Подключите Jetson от устройств - USB
- Запустите команду
lsusb
в терминале VM, чтобы проверить, появляется ли устройство NVidia (Jetson). Если нет, то что-то не так. Должна отображаться строка, подобная этой: Bus 001 Device 003: ID 0955:xxxx NVidia Corp.
- Запустите JetPack от ВМ
Возможно, это решение не для всех, но если ваша цель просто не была связана с использованием Ubuntu 16.04 в качестве основной операционной системы, виртуальная машина - это путь. Гораздо проще, чем возиться с контейнерами.