Дата написания: март 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 о котором немного написано там же, в моей статье.
Один из способов установки 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,
даём соответствующие разрешения
Выбираем место расположения установочных файлов, т.е. то место, куда синхронизировали весь каталог со 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 нет и будет выдана ошибка по этому поводу.
Данный способ установки 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 нет и будет выдана ошибка по этому поводу.