debian, radeon, amdgpu-pro & usb flash
Краткое руководство
Создадим загрузочную флешку с Debian GNU/Linux используя вашу локальную Debian систему.
- Подготовьте USB flash. В теории, хватит флешки на 4Gb.
gparted-pkexec /dev/sdb
Или используйте ваш любимый менеджер дисков
Немного продлите жизнь накопителюtune2fs -o journal_data_writeback -c 0 -m 2 /dev/sdb1
Установите grml-debootstrap
apt install grml-debootstrap
Создайте исполняемый скрипт автоматической загрузки и установки проприетарной реализации openCL от разработчиков драйвера AMDGPU-PRO
cat /etc/debootstrap/chroot-scripts/amdgpu.sh
#!/bin/bash # Cкачиваем подходящую версию драйвера wget --referer=http://support.amd.com https://www2.ati.com/drivers/linux/beta/ubuntu/amdgpu-pro-17.40.2712-510357.tar.xz -O /tmp/amdgpu.tar.xz # Распаковываем tar -Jxvf /tmp/amdgpu.tar.xz -C /tmp # Заставляем скрипт установки запуститься на "неподдерживаемой" системе sed -r 's/steamos/debian/g' /tmp/amdgpu-pro-17.40.2712-510357/amdgpu-pro-install > /tmp/amdgpu-pro-17.40.2712-510357/debinstall.sh chmod +x /tmp/amdgpu-pro-17.40.2712-510357/debinstall.sh mv /tmp/amdgpu-pro-17.40.2712-510357/debinstall.sh /tmp/amdgpu-pro-17.40.2712-510357/amdgpu-pro-install # Запускаем установку проприетарной реализации OpenCL /tmp/amdgpu-pro-17.40.2712-510357/amdgpu-pro-install --compute
- Подготовьте USB flash. В теории, хватит флешки на 4Gb.
Установим Debian GNU/Linux в дирректорию в оперативной памяти.
Подготовка
df -h /dev/shm/
Filesystem Size Used Avail Use% Mounted on tmpfs 4.0G 723M 3.3G 18% /dev/shm
Если размер временного раздела меньше 4Gb, увеличим его
mount -o remount,size=4G,noatime,dev /dev/shm/
Иначе - просто перемонтируем с нужными debootstrap-скрипту параметрамиmount -o remount,noatime,dev /dev/shm/
Процесс установки системы
# Расширим список базовых пакетов системы. Здесь можно добавить другие, нужные вам зависимости cp /etc/debootstrap/packages /tmp/grml.pkgs echo "busybox xz-utils console-setup wget ca-certificates network-manager firmware-linux firmware-linux-nonfree firmware-realtek" >> /tmp/grml.pkgs # Предварительно очистим дирректорию установки, в случае предыдущих неудачных попыток. rm -rf /dev/shm/usb/ # Создадим пункт приёма стеклотары mkdir /dev/shm/usb/ # Запустим установку системы grml-debootstrap --release sid --target /dev/shm/usb/ --nokernel --defaultinterfaces --contrib --non-free --hostname usb --password root --packages /tmp/grml.pkgs
- Настройка системы.
Зайдём в свежеустановленную систему и применим необходимые настройкиcd /dev/shm/usb/ mount proc -t proc ./proc mount sys -t sysfs ./sys mount --bind /dev ./dev mount --bind /dev/pts ./dev/pts chroot ./ /usr/bin/env -i HOME=/root TERM="$TERM" /bin/bash --login
# Добавим experimental репозиторий echo "deb http://httpredir.debian.org/debian experimental main contrib non-free" >> /etc/apt/sources.list
Игнорируем ошибку сборки dkms модуля# Установим ядро apt clean && apt autoclean && apt update apt install linux-image-4.15.0-rc8-amd64 linux-headers-4.15.0-rc8-amd64 -y
К сожалению, на данный момен в пакетах прошивок не хватает нескольких файлов для карт, их можно скачать с git репозитория ядра Linux.Error! Bad return status for module build on kernel: 4.15.0-rc8-amd64 (x86_64) Consult /var/lib/dkms/amdgpu/17.40.2712-510357/build/make.log for more information.
# Для Radeon RX550: cd /lib/firmware/amdgpu/ wget --no-check-certificate https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amdgpu/polaris12_ce_2.bin wget --no-check-certificate https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amdgpu/polaris12_me_2.bin wget --no-check-certificate https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amdgpu/polaris12_mec2_2.bin wget --no-check-certificate https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amdgpu/polaris12_pfp_2.bin
# Откроем доступ по ssh (Метод не безопасный, лучше настроить вход в систему по ssh ключам, но это выходит за рамки этого руководства), echo "PermitRootLogin yes" >> /etc/ssh/sshd_config # добавим некоторые параметры ядра sed -i 's%GRUB_CMDLINE_LINUX_DEFAULT="quiet"%GRUB_CMDLINE_LINUX_DEFAULT="verbose amdgpu.vm_fragment_size=9"%g' /etc/default/grub # и монтирования файловых систем. echo "UUID=$(blkid -o value -s UUID /dev/sdb1) / ext4 errors=remount-ro,noatime,nodiratime 0 1 tmpfs /tmp tmpfs rw,size=500m 0 0 tmpfs /var/log tmpfs rw,size=15m 0 0 tmpfs /run tmpfs rw 0 0 tmpfs /var/lock tmpfs rw 0 0" >> /etc/fstab
#Почистим временные файлы rm -rf /tmp/amdgpu*
#Выйдем из chroot и отмонтируем системные директории. exit umount ./dev/pts ./dev ./sys ./proc
На данном этапе возможно установить в систму дополнительно нужный вам софт и настройки ввиду больших задержек при операциях чтения-записи на реальном USB Flash накопителе.
Базовая система готова. Осталось записать её на флешку, установить загрузчик и проверить её работаспособность.
Запись системы на USB накопитель.
# Смонтируем раздел устройства mount -t ext4 -o errors=remount-ro,noatime,nodiratime /dev/sdb1 /mnt # Перенесём на него систему shopt -s dotglob cp -rdfp /dev/shm/usb/* /mnt shopt -u dotglob # Войдём в chroot cd /mnt mount proc -t proc ./proc mount sys -t sysfs ./sys mount --bind /dev ./dev mount --bind /dev/pts ./dev/pts chroot ./ /usr/bin/env -i HOME=/root TERM="$TERM" /bin/bash --login
# Установим загрузчик grub-install /dev/sdb update-grub
# Отмонтируем и вытащим флешку exit cd / umount --recursive /mnt sync && sync eject /dev/sdb
Всё. Пробуем закрузиться с флешки и радуемся полученному результату.
mitya, случайно для всех