Вам может пригодиться это видео.
Для начала необходимо установить чистую ОС на одноплатный компьютер с JetPack 4.5+.
Это можно проверить следующей командой:sudo apt-cache show nvidia-jetpack
Т.к. измения происходят на низком уровне системы, некоторые файлы могут быть утеряны, необходима недавно прошитая MicroSD, объемом не менее 16 Гб.
Скопируйте репозиторий:
$ git clone https://github.com/JetsonHacksNano/bootFromUSB
Перейдите в скаченную папку:
$ cd bootFromUSB
Подготовьте USB-накопитель (желательно USB 3.0, SSD, HDD или SATA-> USB), отформатировав диск как ext4 с разделом. Можно использовать приложение «Диски». Будет проще, если вы подключите только один USB-накопитель во время выполнения этого шага. По окончании диск должен отображаться как /dev/sda1 или аналогичный. Фоматирование жесткого диска подробно рассматривается в видео по ссылке в начале статьи в следующем временном отрезке: 6:46 - 8:26. ВАЖНО: необходимо назвать созданный раздел APP, чтобы системное приложение Jetson корректно его распознало.
Примечание: убедитесь, что это раздел ext4, т.к. использование других файловых систем может привести к проблемам в дальнейшем.
Скопируйте область приложения microSD на USB-накопитель.Скрипт copyRootToUSB.sh копирует содержимое всей корневой файловой системы micro SD на USB-накопитель. Естественно, размер USB-накопителя должен быть больше, чем на карты micro SD.
Примечание: перед запуском сценария убедитесь, что USB-накопитель подключен .
Применение скрипта:
usage: ./copyRootToUSB.sh [OPTIONS]
-d | --directory Путь к родительской папке ядра
-v | --volume_label Название тома, который необходимо найти
-p | --path Путь к USB-носителю(например: /dev/sda1)
-h | --help ПомощьДля копирования используйте:
$ ./copyRootToUSB.sh -p /dev/sda1
Если выскакиевает ошибка unable to find the mount point, необходимо открыть созданный раздел в проводнике.
После завершения работы скрипта(может остановиться на 95%, это нормально) , вы должны сделать резервную копию исходного файла extlinux.conf и назвать копию extlinux.conf.original(данные в ней изменять не нужно). Откройте папку /boot/extlinux/ в терминале.
sudo cp extlinux.conf extlinux.conf.original
Это позволит вам получить доступ к альтернативному методу загрузки с последовательной консоли на случай, если что-то пойдет не так. В репозитории bootFromUSB находится bash-скрипт diskUUID.sh, который определяет UUID устройства(в нашем случае, USB-накопителя).
$ ./partUUID.sh
Хотя по умолчанию используется sda1 (/dev/sda1), вы также можете определить UUID других дисков с помощью флага -d. Например:
$ ./partUUID.sh -d sdb1
Эта информация понадобится полезной для настройки файла extlinux.conf.
Измените файл /boot/extlinux/extlinux.conf.
sudo gedit extlinux.conf
Найдите фрагмент текста
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
Скопируйте его и вставьте ниже сразу после оригинала в этом же файле ниже и замените в скопированном фрагменте строчку LABEL primary на LABEL sdcard.
Вернитесь к первому фрагменту и найдите строчку
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
Замените APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 на APPEND ${cbootargs} root=UUID=<uuid вашего диска>
После редактирования файла boot/extlinux/extlinux.conf система готова к перезагрузке. Помните, что система должна загрузиться не с карты MicroSD, а с USB носителя, поэтому ее нужно извлечь из Jetson Nano. Для этого сначала надо выключить одноплатный компьютер, извлечь MicroSD, а затем включить Jetson Nano.
Зелёное лого NVIDIA на белом фоне чередуется с таким же экраном, но co значком отсутствия MicroSD.
Решение:
Если загрузка не удалась, попробуйте перезагрузить одноплатник, повторить процесс, описанный в инструкции с самого начала, или на этапе форматирования диска стереть все данные с накопителя. Если эти дейcтвия не помогли, следует проверьте работоспособность USB накопителя и кабеля по которому он подсоединен к одноплатнику. Удачи!
Примечание: данная инструкция является переводом этой статьи.