воскресенье, 29 ноября 2020 г.

Raspberry PI 4 запуск Ubuntu server с USB SSD

 В июне 2020 на Raspberry pi4 вышло обновление загрузчика, позволяющее нативно грузиться с USB. Без всяких там костылей и манипуляций с картами памяти. Но, загрузчик нужно обновить. Нам понадобится пустая карта памяти и немного времени.

В этой статье рассмотрим:
Установку Ubuntu server 20.10 на USB SSD
Фикс с медленной работой USB 3.0
Что делать, если wi-fi не подключается при загрузке с USB диска.

Подключаем карту памяти к компу. Устанавливаем raspberipi imager
sudo apt install rpi-imager 

Запускаем imager и устанавливаем на карту памяти Ubuntu 20.10. Заходим в раздел boot на карте памяти и редактируем файл network-config Раскоментируем строчки связанными с wi-fi и впишем свои данные.

wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"ssid":
password: "password"

Отмонтируем карту памяти и вставим в Raspberry pi, запустим устройство, ждем минуту другую. 

Заходим на роутер в раздел DHCP клиентов. И ищем там новое устройство. Запоминаем ip адрес и заходим по ssh

ssh ubuntu@192.168.0.10

Пароль: ubuntu

Сразу после подключения необходимо проиндексировать репозиторий и установить необходимое.

sudo apt update
sudo apt install
rpi-eeprom

Распакуем текущую конфигурацию загрузчика в файл

sudo vcgencmd bootloader_config > bootconf.txt
Нам необходимо изменить параметр BOOT_ORDER
sed -i -e '/^BOOT_ORDER=/ s/=.*$/=0xf41/' bootconf.txt
Сгенерируем копию загрузчика с изменениями
rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt /lib/firmware/raspberrypi/bootloader/critical/pieeprom-2020-09-03.bin
Говорим системе перепрошить загрузчик при следующем старте
sudo rpi-eeprom-update -d -f ./pieeprom-new.bin
и перезагружаем устройство
sudo reboot

После полной загрузки устройства, выключаем питание и достаем карту памяти. Теперь можно установить систему на SSD диск, так же с помощью imager.
Так же поправим файл network-config. 

Есть еще решение исправляющее медленную работу через USB 3.0
В кратце: нам нужно узнать idVendor и idProduct нашего SSD диска. Для этого вводим в терминале
sudo lsusb
Видим примерно такой вывод:
Bus 002 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Нас интересуют вот это:
152d:0578
Затем открываем файл /boot/firmware/cmdline.txt
и в самое начало имеющейся строки добавляем:
usb-storage.quirks=152d:0578:u
Строка теперь выглядит примерно так:
usb-storage.quirks=152d:0578:u dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc quiet splash
Сохраняем файл.

Подключаем SSD к raspberry и запускаем.

Возможно запуск пройдет гладко и ваше устройство сразу подключится к вашей wi-fi сети, как это было при запуске с карты памяти. Но в моем случае wi-fi не подключается при загрузке с USB диска. Подключаем raspberry проводом к роутеру и заходим по ssh
Решение следующее:
0. Необходимо убедиться что wi-fi определяется устройством. Для этого вводим:
lshw -C network
Если в выводе у вас два интерфейса, то все ок, переходим дальше. Если интерфейс один, то надо искать проблему в другом месте. Самая распространенная причина - нехватка питания. Попробуйте БП на 2-3 ампера.
1. В конец /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg допишем:
network: {config: disabled}
2. В /etc/netplan/50-cloud-init.yaml после строчки: version: 2 допишем:
renderer: networkd
    wifis:
        wlan0:
            dhcp4: true
            optional: true
            access-points:
                "Ваш SSID":
                    password: "пароль"                
Обратите внимание, что файл в стиле yaml, вначале строк не табуляция, а четыре пробела на каждый уровень вложенности. Сохраним файл
3. Выполним:
sudo netplan generate

sudo netplan apply

reboot

Комментариев нет: