wiki:articles:pi - Wiki на Slackware.su

Дата написания: март 2017 г.
Автор: Graf

Slackware 14.2 на Raspberry Pi-3 Model B



Собственно сама Raspberry Pi-3 Model B, которая была собрана вот в такой корпус:


и всё это было куплено для демонстрации на 43" телевизоре 12+ камер.
Не долго думая, было решено установить на неё Slackware Linux 14.2 c Х-ми, но без DE. И так как видео сервер у нас основан на ZoneMinder и настроен по моей статье, то на удаленном компьютере ( допустим с IP - 192.168.10.10 ) поставить X-ы c WindowsMaker в качестве DE и ZmNinja или браузер Firefox, предварительно создав пользователя с ограниченными правами, которым будем заходить и забирать картинку по SSH или XDMCP. Как настраивалось такое подключение написано в отдельной статье. Если кто не знает, то ZmNinja - это приложение для просмотра и настройки камер на ZoneMinder о котором немного написано там же, в моей статье.

Установка

Способ №1

Один из способов установки Slackware Linux на Raspberry основывается на ЭТОЙ статье. Я её немного сократил и чуть-чуть дополнил своими замечаниями.
Для начала нам потребуется карта microSD, желательно, от 16 Гб и более, а также компьютер с рабочей ОС Slackware linux (на самом деле SD карту можно подготовить и в других ОС, но других у меня нет :-) ). Я взял SD карту на 16 Гб, которую вставил в ноутбук со Slackware Linux 14.1 и посмотрел как она определилась:

# fdisk -l

Disk /dev/mmcblk0: 15.8 GB, 15836643328 bytes
...
...

Теперь скачаем образ установщика Slackware 14.2 от проекта SARPI, скопируем его на нашу SD карту и проверим результат.

# wget http://sarpi.fatdog.eu/files/rpi3/142/img/sarpi3-installer_slack14.2_fd0.img.xz
# xz -dc ./sarpi3-installer_slack14.2_fd0.img.xz | dd of=/dev/mmcblk0 bs=65536
80+12277 записей получено
80+12277 записей отправлено
 скопировано 106496000 байт (106 MB), 33,5902 c, 3,2 MB/c
...

# fdisk -l
...
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/mmcblk0p1   *          32      205055      102512    c  W95 FAT32 (LBA)
...

Данные скопировались, раздел FAT32 создан, всё хорошо, так и должно быть, именно FAT32. Всё, наша SD карта готова. Теперь нам необходимо скачать саму Slackware 14.2 ARM и определиться, что будем использовать в качестве места исходных данных нашей Slackware 14.2 ARM (сеть, съёмный диск, флешка, ftp и т.д.). Определились? Вот туда и синхронизируем весь каталог со Slackware ARM.

# rsync -Pavv --delete rsync.slackware.pl::slackwarearm/slackwarearm-14.2/ .

Ресурс можно выбрать на свой вкус.

Дальнейшая установка практически ничем не отличается от обычной установки Slackware Linux на компьютер.
Вставляем нашу SD карту в специальный разъём на Raspberry, подключаем клавиатуру, мышь, сетевой кабель и телевизор по HDMI (конечно же, сначала всё можно настроить и на мониторе, а потом подключить телевизор), включаем в розетку. Видим 4 малинки и процесс загрузки.
Дальше как обычно:
cfdisk'ом или fdisk'ом создаем корневой и swap разделы. Раздел FAT32 не трогаем. По окончании вызываем setup, указываем корневой и swap разделы. Соглашаемся на запрос о добавлении найденных разделов FAT или NTFS в /etc/fstab,
 выбираем наш /dev/mmcblk0p1  даём соответствующие разрешения  и монтируем в /boot

Выбираем место расположения установочных файлов, т.е. то место, куда синхронизировали весь каталог со Slackware ARM разделом выше, нужные пакеты и метод установки. По окончании установки пакетов настраиваем мышь, сеть, выбираем автозагружаемых демонов и часовой пояс, вводим пароль рута и на запрос перезагрузки по окончании установки говорим НЕТ!  Попадаем в оболочку и удаляем более ненужные пакеты для освобождения места.

# ROOT=/mnt removepkg kernel_armv7 kernel-modules-armv7

Далее, примонтируем загрузочный раздел и удалим initrd.gz который также занимает много места.

# mount -t vfat /dev/mmcblk0p1 /mnt/boot
# rm /mnt/boot/initrd.gz

Установим пакеты с прошивками и ядром для Raspberry Pi

ROOT=/mnt installpkg /rpi-extra/kernel* /rpi-extra/sarpi*

Теперь у нас точно установлена Slackware ARM с ядром 4.9.*. После завершения можно перезагрузиться.
После перезагрузки обязательно синхронизируйте время, например:

# ntpdate 0.ru.pool.ntp.org

Обновления и русификация

Для обновления ядра и прошивок предлагается 2 способа, при помощи rpi-update и путем скачивания последних пакетов SARPI.
rpi-update достаточно скачать, сделать запускаемым и запустить.

# wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && chmod +x /usr/bin/rpi-update

// для ядер 4.9.* //
# BRANCH=next rpi-update

// для ядер 4.4.* //
# rpi-update

Но данный способ обновления неконтролируемый и предназначен для использования только с Raspbian. Хотя у меня обновление таким способом прошло без ошибок, я бы не рекомендовал им пользоваться, разве только в качестве тестирования и выявления ошибок и, в таком случае, вы всегда должны быть готовы к краху системы.

Способ обновления при помощи готовых пакетов от проекта SARPI самый, как говорится, Slackware'ный :). Скачиваем последние версии System Packages и обновляем при помощи upgradepkg. Всё, ядро и прошивки обновлены.

Остался открытым вопрос обновления пакетов при помощи slackpkg. Как бы я не пытался и не выворачивался, но обновить пакеты у меня так и не получилось. В разные моменты времени моя Raspberry перезагружалась, оставляя после себя множество кривых ссылок и ругательств на библиотеки. Если кто-то возьмётся за обновление пакетов, имейте ввиду, что все пакеты связанные с ядром нужно внести в чёрный список или убирать звёздочки(*) вручную при upgrade-all, так как в репозиториях используется версия ядра 4.4.*. Да, и не забудьте убрать символ комментария со ссылки на репозиторий в /​etc/​slackpkg/​mirrors.

Русифицировал своим скриптом, получилось, несмотря на то, что lilo нет и будет выдана ошибка по этому поводу.

Способ №2

Данный способ установки Slackware Linux на Raspberry основывается на ЭТОЙ статье.
Для начала нам потребуется карта microSD, желательно, от 16 Гб и более, а также компьютер с рабочей ОС Slackware Linux. Я взял SD карту на 16 Гб, которую вставил в ноутбук со Slackware Linux 14.1 и посмотрел как она определилась:

# fdisk -l

Disk /dev/mmcblk0: 15.8 GB, 15836643328 bytes
...
...

Скачиваем последнюю стабильную версию образа Raspbian на сегодня это 2017-03-02-raspbian-jessie-lite.zip и распаковываем из архива файл 2017-03-02-raspbian-jessie-lite.img.

Смотрим как разбит образ.

# fdisk c -l ./2017-03-02-raspbian-jessie-lite.img

Диск ./2017-03-02-raspbian-jessie-lite.img: 1393 МБ, 1393557504 байт
255 heads, 63 sectors/track, 169 cylinders, всего 2721792 секторов
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb2455b06

                         Устр-во Загр     Начало       Конец       Блоки   Id  Система
./2017-03-02-raspbian-jessie-lite.img1            8192      137215       64512    c  W95 FAT32 (LBA)
./2017-03-02-raspbian-jessie-lite.img2          137216     2721791     1292288   83  Linux

Обратите внимание на начальные секторы разделов: 8192 и 137216. Нам нужно умножить их на 512 , чтобы получить смещение в байтах для настройки loop устройства. Это делается с помощью $((8192 * 512)) и $((137216 * 512)). Вам нужно будет изменить эти значения, если схема разбиения образа будет другой.

Создадим архив /tmp/raspbian_boot_stuff.tgz, содержащий лишь нужные нам каталоги.

# losetup -o $((8192 * 512)) /dev/loop0 ./2017-03-02-raspbian-jessie-lite.img
# losetup -o $((137216 * 512)) /dev/loop1 ./2017-03-02-raspbian-jessie-lite.img
# mount -o ro /dev/loop1 /mnt/floppy/
# mount -o ro /dev/loop0 /mnt/floppy/boot
# cd /mnt/floppy/
# tar vcpzf /tmp/raspbian_boot_stuff.tgz boot lib/modules/ lib/firmware opt/vc

При помощи fdisk создадим разделы на SD карте:
100 Mb - под раздел FAT32;
2 Gb - под swap раздел;
и всё остальное пространство под ext4 для корня.
В итоге получим:

Disk /dev/mmcblk0: 15.8 GB, 15836643328 bytes
4 heads, 32 sectors/track, 241648 cylinders, всего 30930944 секторов
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd8111543

 Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/mmcblk0p1   *        2048      206847      102400    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          206848     4401151     2097152   82  Linux своп
/dev/mmcblk0p3         4401152    30930943    13264896   83  Linux

Форматируем необходимые разделы и по окончании примонтируем их.

# mkfs -t vfat /dev/mmcblk0p1
# mkfs -t ext4 /dev/mmcblk0p3

# mount -o noatime /dev/mmcblk0p3 /mnt/hd
# mkdir /mnt/hd/boot
# mount -o noatime /dev/mmcblk0p1 /mnt/hd/boot

Скачиваем последний образ Slackware ARM miniroot.

# wget ftp://ftp.slackware.pl/pub/slackwarearm/slackwarearm-devtools/minirootfs/roots/slack-14.2-miniroot_01Jul16.tar.xz

Копируем всё из ./slack-14.2-miniroot_01Jul16.tar.xz и /tmp/raspbian_boot_stuff.tgz в /mnt/hd.
по окончании копирования приводим /mnt/hd/etc/fstab к виду:

proc            /proc           proc    defaults        0       0
/dev/mmcblk0p1  /boot           vfat    errors=remount-ro          0       2
/dev/mmcblk0p3  /               ext4    errors=remount-ro,noatime  0       1
/dev/mmcblk0p2  none            swap    sw                0       0

Изменяем /mnt/hd/boot/cmdline.txt получая строку:

dwc_otg.lpm_enable=0 console=tty1 nofont root=/dev/mmcblk0p3 rootfstype=ext4 rootwait ro

В /mnt/hd/etc/inittab комментируем строку.

# Local serial lines:
#s0:12345:respawn:/sbin/agetty 115200 ttyS0 vt100

Сразу же можно настроить сеть в /mnt/hd/etc/rc.d/rc.inet1.conf, DNS в /mnt/hd/etc/resolv.conf, имя компьютера в /mnt/hd/etc/HOSTNAME и многое другое.
Отмонтируем SD карту:

# umount /mnt/hd/boot
# umount /mnt/hd

Теперь нам необходимо скачать саму Slackware 14.2 ARM, например, на флешку или съёмный диск, допустим, с пустым разделом /dev/sdc1.

# mkdir /mnt/flash
# mount /dev/sdc1 /mnt/flash
# rsync -Pavv --delete rsync.slackware.pl::slackwarearm/slackwarearm-14.2/ /mnt/flash/
# umount /mnt/flash

Всё, дерево Slackware 14.2 ARM скопировано на флешку.

Читаем или сохраняем файл slack-14.2-miniroot_details.txt, из которого нам понадобятся строки:

The login details are:
User....: root
Password: uO3m8dA7,wnRXOu

и вставляем SD карту в специальный разъём на Raspberry, а флешку в USB разъём, дожидаемся загрузки и входим как root.
Меняем пароль root на более приемлемый

# passwd root

Всё, мы получили полностью рабочую систему, правда, сильно урезанную. Далее будем считать, что сеть настроена, если «нет», то запустите netconfig или настройте вручную. Теперь установим нашу временную зону при помощи timeconfig и синхронизируем время, например:

# ntpdate 0.ru.pool.ntp.org

При помощи fdisk -l посмотрим как определилась наша флешка, скорее всего, как /dev/sda и разделом /dev/sda1 с деревом Slackware 14.2 ARM. Вот с неё и доустановим необходимые пакеты. Для этого примонтируем её и перейдём в каталог с пакетами Slackware.

# mount /dev/sda1 /mnt/hd
# cd /mnt/hd/slackware

Далее можно пройтись вручную по каждому каталогу и установить только те пакеты, который вы считаете нужными при помощи upgradepkg –install-new название_файла. Но если нужно установить полный набор, равный «full install» при обычной установке Slackware, то можно воспользоваться скриптом из UPGRADE.TXT.

#!/bin/sh
 for dir in a ap d e f k kde l n t tcl x xap xfce y ; do
  ( cd $dir ; upgradepkg --install-new *.t?z )
 done

Но учтите, что в таком случае у вас поменяется версия ядра и прошивок на меньшую, а также будут переустановлены существующие в системе пакеты. Для моих целей я установил лишь пакеты из a, ap, d, l, n и x. А после установки удалил ненужное при помощи pkgtool.

Обновления и русификация

Обновляемся при помощи slackpkg. Убираем символ комментария со ссылки на репозиторий в /etc/slackpkg/mirrors и

# slackpkg update
# slackpkg update gpg
# slackpkg upgrade-all

Русифицировал своим скриптом, получилось, не смотря на то, что lilo нет и будет выдана ошибка по этому поводу.



Обсуждаем на форуме

Печать/экспорт
QR Code
QR Code wiki:articles:pi (generated for current page)