LINUX.ORG.RU

Избранные сообщения poshat

пайнбука

Галерея — Скриншоты

pinebook с 64 битным gentoo/wmaker и 32 битным ARM Linux Oberon.

вообще набор комманд aarch64 не имеет ничего общего с наборами инструкций 32 битных ARM, но процессор пайнбука может выполнять оба набора.

>>> Просмотр (1920x1080, 339 Kb)

 , , , ,

noch
()

Firefox Better Web with Scroll — новая модель монетизации от Mozilla

Новости — Mozilla
Группа Mozilla

24 марта, в своём блоге компания Mozilla предложила пользователям Firefox стать участниками тестирования сервиса «Firefox Better Web with Scroll», который нацелен на новую модель финансирования сайтов.

Цель проекта — возможность использования платной подписки для финансирования создания контента. Это должно позволить владельцам сайтов обойтись без рекламы. Сервис организован совместно с проектом Scroll.

Модель выглядит примерно так: пользователь оплачивает подписку на сервис и может просматривать сайты, присоединившиеся к Scroll, без рекламы. Около 70% от полученных средств перечисляется владельцам сайтов (что на 40% превышает их обычный доход от рекламы).

В настоящее время тестирование доступно только для пользователей из США. Чтобы стать участником программы, необходима установка специального расширения в браузер.

>>> Подробности

 , ,

Satori
()

PinePhone BraveHeart Edition

Галерея — Рабочие места

Доехал до меня неделю назад Pinephone Braveheart edition.

Как и следовало ожидать, все существующие прошивки очень сырые. Наиболее отзывчивый интерфейс у ubuntu phone, но не могу сказать что удобный. В LuneOS интерфейс вроде поудобнее, но там не получилось подключиться к wifi с авторизацией.

Камера не заработала из коробки нигде.

То, что печалит больше всего, - энергоэффективность. Ubuntu phone во включенном состоянии (с выключенным экраном, без sim-карты) на полностью заряженном аккумуляторе, садится меньше чем за ночь. Остальные прошивки, думаю, так же.

В целом кажется, что пользоваться им как телефоном в ближайшее время не получится. Пока не придумал, как буду его использовать.

cast @eR

Если кому-то интересно, могу дать в Москве на время поиграться и/или зайти с ним на встречу МЛУГа (@DR_SL, @Goury, они сейчас проводятся?)

>>> Просмотр (4208x3120, 1303 Kb)

 ,

Tanger
()

Porteus Kiosk 5.0.0 - дистрибутив для реализации демонстрационных стендов и терминалов самообслуживания

Новости — Gentoo Linux
Porteus Kiosk 5.0.0 - дистрибутив для реализации демонстрационных стендов и терминалов самообслуживания
Группа Gentoo Linux

2-го марта вышла в свет пятая версия дистрибутива Porteus Kiosk 5.0.0, основанного на Gentoo Linux, и предназначенного для быстрого развертывания демонстрационных стендов и терминалов самообслуживания. Размер образа составляет всего 104 мб.

Дистрибутив включает в себя минимальное окружение, необходимое для запуска веб-браузера (Mozilla Firefox или Google Chrome) с урезанными правами — запрещены изменения настроек, установка дополнений или приложений, закрыт доступ к страницам, не попадающим в белый список. Также имеется предустановленный ThinClient для работы терминала в роли тонкого клиента.

Настройка дистрибутива осуществляется с помощью совмещенного с установщиком специального мастера настройкиKIOSK WIZARD.

После загрузки ОС проводит верификацию всех компонентов по контрольным суммам, а монтируется система в состоянии только чтения.

Основные изменения:

  • Пакетная база синхронизирована с репозиторием Gentoo на 2019.09.08
    • Ядро обновлено до версии Linux 5.4.23
    • Google Chrome обновлен до версии 80.0.3987.122
    • Mozilla Firefox обновлена до версии 68.5.0 ESR
  • Появилась новая утилита для настройки скорости курсора мыши — Скриншот
  • Появилась возможность настройки разных по длительности интервалов смены вкладок браузера в режиме киоскаСкриншот
  • Firefox научили показывать изображения в формате TIFF (через промежуточное преобразование его в формат PDF)
  • Системное время теперь синхронизируется с NTP сервером каждый день (ранее синхронизация работала только при перезагрузке терминала)
  • Добавлена виртуальная клавиатура для облегчения ввода пароля сессии (ранее требовалось подключение физической клавиатуры)

>>> Подробности

 ,

Zhbert
()

Установка MicroG с нуля - руководство по noob

Форум — Mobile

Привет всем. Правильная установка MicroG - это то, с чем у меня некоторое время были проблемы; в основном потому что (1) Я не смог найти надежный способ включить подделку подписи (2) потому что я не смог найти установщик, который сделал то, что я хотел. Это означало, что мне пришлось придерживаться устройств, официально поддерживаемых LineageOS, и установить сборку Lineage for MicroG - что не идеально, поскольку существует множество устройств со стабильными неофициальными ПЗУ.

Вчера мне удалось получить совершенно функциональную установку на Galaxy S6 - вот как. Обратите внимание, что это руководство может очень хорошо работать для любого другого устройства, нет никаких оснований ограничивать его S6.

Что такое microG?

Проект microG является «клоном свободного программного обеспечения собственных библиотек и приложений Google». Более конкретно, это поле FLOSS (бесплатное / бесплатное программное обеспечение с открытым исходным кодом), которое позволяет приложениям, разработанным для служб Google Play, работать в системах, где службы Play недоступны. Он предоставляет все необходимые API-интерфейсы, предоставляемые сервисами Google Play, чтобы приложения, работающие с ним, могли нормально работать.

Как установить MicroG

Установка MicroG не так проста, потому что она должна стать частью системы, будет гораздо проще использовать ПЗУ, на котором она уже установлена. После успешной установки и внедрения каждый может использовать microG и поддерживать его в актуальном состоянии.

Шаг 01 - Перейдите в Настройки> Настройки Emteria и затем включите «Подмена подписи».

Шаг 02 - Откройте F-Droid и добавьте хранилище microG microgdownload.com для загрузки файлов, связанных с microG.

Шаг 03 - следуйте инструкциям по установке на странице загрузки

Вот и все. Кажется, все работает, и все проверено в приложении настроек MicroG.

Надеюсь, что это окажется полезным!

 ,

stepzzzz
()

PeerTube 2.1 — свободная децентрализованная система видеовещания

Новости — Open Source
PeerTube 2.1 — свободная децентрализованная система видеовещания
Группа Open Source

12 февраля состоялся релиз системы децентрализованного видеовещания PeerTube 2.1, развиваемой как альтернатива централизованным платформам (таким как YouTube, Vimeo), работающая по принципу «peer-to-peer» — контент хранится непосредственно на машинах пользователей. Исходный код проекта разрабатывается на условиях лицензии AGPLv3.

( читать дальше... )

В настоящее время в федеративной сети видеовещания PeerTube насчитываются около 300 серверов, основанных и поддерживаемых добровольцами.

>>> Обсуждение на OpenNET

>>> Обсуждение на HN

>>> Обсуждение на Reddit

>>> Подробности

 ,

Zhbert
()

Использование ProtonVPN без заворачивания всего трафика

Форум — Admin

Как заюзать ProtonVPN только для браузерного трафика? Думаю о создании и запуске docker-контейнера, в котором будет openvpn и socks5-прокси, адрес этого прокси пропишу в настройках браузера.

Реально ли такое? И можно ли как-то проще?

 , ,

kinkstarter
()

Второй кандидат в релизы libmdbx v1.0 после пяти лет разработки

Новости — Open Source
Группа Open Source

Библиотека libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе дерева B+ без упреждающей журнализации, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

Описание отличий и усовершенствований libmdbx относительно LMDB заслуживает отдельной статьи (планируется публикации на «Хабре» и «Medium»). Здесь же уместно упомянуть самые важные и заметные:

( читать дальше... )

 , , , mdbx,

Deleted
()

u-boot некорректно исполняет boot.scr

Форум — Development

Поставил задачу - сделать загрузочную SD-карту для Orange Pi Zero с u-boot и ядром 4.15 (для дистрибутива Ubuntu 18.04 LTS)

Имеющиеся дистрибутивы на оф.сайте Orange Pi плохо поддерживаются и практически не обновляются.

Orange Pi Zero (https://linux-sunxi.org/Xunlong_Orange_Pi_Zero), SoC Allwiner H2+ 1 ГГц, ОЗУ 256 Мб

1. ПОДГОТОВКА

Собрал загрузчик из последней ревизии главной ветки проекта u-boot git clone --depth 1 --single-branch --branch master https://github.com/u-boot/u-boot.git

В целях отладки перед сборкой установил в .config параметр CONFIG_LOGLEVEL=8 (вместо стандартного 4).

Получил на выходе:

u-boot-sunxi-with-spl.bin – загрузчик

sun8i-h2-plus-orangepi-zero.dtb – древовидное описание устройства

Собрал ядро Linux версии 4.15 (с этой версией, согласно Википедии, работает LTS дистрибутив Ubuntu 18.04).

Получил на выходе:

uImage – образ ядра

Составил boot.cmd следующего содержания:

echo BOOT.SCR BEGIN
#setenv machid 1029
setenv bootargs console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p2 init=/sbin/init rootwait rootfstype=ext4 panic=10 consoleblank=0 enforcing=0 loglevel=7
load mmc 0 0x42000000 uImage
load mmc 0 0x43000000 sun8i-h2-plus-orangepi-zero.dtb
bootm 0x42000000 - 0x43000000

Преобразовал это в boot.scr mkimage -C none -A arm -T script -d boot.cmd boot.scr

2. ЗАПИСЬ

Записал на флешку с помощью dd u-boot-sunxi-with-spl.bin

На первый раздел с «загрузочным» флагом скопировал файлы: uImage, sun8i-h2-plus-orangepi-zero.dtb, boot.cmd

3. ПРОВЕРКА

Первая загрузка. Вывод консоли контролирую через последовательный порт.

U-Boot SPL 2020.01-rc3 (Nov 19 2019 - 19:19:59 +0300)
DRAM: 256 MiB
Trying to boot from MMC1


U-Boot 2020.01-rc3 (Nov 19 2019 - 19:19:59 +0300) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi Zero
DRAM:  256 MiB
MMC:   mmc@1c0f000: 0, mmc@1c10000: 1
Loading Environment from FAT... *** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   phy interface0
eth0: ethernet@1c30000
starting USB...
Bus usb@1c1a000: USB EHCI 1.00
Bus usb@1c1a400: USB OHCI 1.0
Bus usb@1c1b000: USB EHCI 1.00
Bus usb@1c1b400: USB OHCI 1.0
scanning bus usb@1c1a000 for devices... 1 USB Device(s) found
scanning bus usb@1c1a400 for devices... 1 USB Device(s) found
scanning bus usb@1c1b000 for devices... 1 USB Device(s) found
scanning bus usb@1c1b400 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
395 bytes read in 4 ms (95.7 KiB/s)
## Executing script at 43100000
BOOT.SCR BEGIN
Wrong Image Format for bootm command
ERROR: can't get kernel image!
SCRIPT FAILED: continuing...
15297 bytes read in 8 ms (1.8 MiB/s)

Device 0: unknown device
_sun8i_emac_eth_init: Timeout
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/01-02-42-c1-50-2c-d1
ethernet@1c30000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
*** ERROR: `serverip' not set
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000000

Провал!

Почему-то команды из boot.scr на копирование файлов в память устройства fatload игнорируются, но echo и bootm выполняются.

После неудачной загрузки получаю управлению в консоли и пробую проверить память по адресу, куда должно было загрузиться ядро. потом вручную загружаю ядро и снова читаю контрольную сумму.

=> crc32 0x42000000 0x3a1570
crc32 0x42000000 0x3a1570
crc32 for 42000000 ... 423a156f ==> aa7c90eb
=> fatload mmc 0 0x42000000 uImage
fatload mmc 0 0x42000000 uImage
3806576 bytes read in 198 ms (18.3 MiB/s)
=> crc32 0x42000000 0x3a1570
crc32 0x42000000 0x3a1570
crc32 for 42000000 ... 423a156f ==> dccd4918

dccd4918 – это правильная контрольная сумма. Т.е. загрузка в память из boot.scr действительно не выполнялась, а вручную файл в память загружается нормально.

Если в самом начале загрузки перехватить управление в u-boot и проверить доступ к SD-карте – всё ОК, доступ есть (да и boot.scr u-boot без проблем берет с карты).

=> fatls mmc 0
fatls mmc 0
    15297   sun8i-h2-plus-orangepi-zero.dtb
  3806576   uImage
      395   boot.scr

3 file(s), 0 dir(s)

Пробую ручную загрузку - ядро загружается и происходит нормальный старт!!!

U-Boot SPL 2020.01-rc3 (Nov 19 2019 - 19:19:59 +0300)
DRAM: 256 MiB
Trying to boot from MMC1


U-Boot 2020.01-rc3 (Nov 19 2019 - 19:19:59 +0300) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi Zero
DRAM:  256 MiB
MMC:   mmc@1c0f000: 0, mmc@1c10000: 1
Loading Environment from FAT... *** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   phy interface0
eth0: ethernet@1c30000
starting USB...
Bus usb@1c1a000: USB EHCI 1.00
Bus usb@1c1a400: USB OHCI 1.0
Bus usb@1c1b000: USB EHCI 1.00
Bus usb@1c1b400: USB OHCI 1.0
scanning bus usb@1c1a000 for devices... 1 USB Device(s) found
scanning bus usb@1c1a400 for devices... 1 USB Device(s) found
scanning bus usb@1c1b000 for devices... 1 USB Device(s) found
scanning bus usb@1c1b400 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  2 
 0 
=> fatload mmc 0 0x42000000 uImage
fatload mmc 0 0x42000000 uImage
3806576 bytes read in 198 ms (18.3 MiB/s)
=> fatload mmc 0 x 0x43000000 sun8i-h2-plus-orangepi-zero.dtb
fatload mmc 0 0x43000000 sun8i-h2-plus-orangepi-zero.dtb
15297 bytes read in 7 ms (2.1 MiB/s)
=> bootm 0x42000000 - 0x43000000
bootm 0x42000000 - 0x43000000
## Booting kernel from Legacy Image at 42000000 ...
   Image Name:   Linux-4.15.0
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3806512 Bytes = 3.6 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
   Booting using the fdt blob at 0x43000000
EHCI failed to shut down host controller.
   Loading Kernel Image
   Loading Device Tree to 49ff9000, end 49fffbc0 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.15.0 (slarti@RUMP) (gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1)) #2 SMP Tue Nov 19 21:05:53 MSK 2019
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Xunlong Orange Pi Zero
...
[    2.166572] [<c0150380>] (cpu_startup_entry) from [<401017ac>] (0x401017ac)
[    2.173537] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Учитывая отсутствие второго раздела на SD-карте, ловлю Kernel Panic - это нормально.

Пробовал в boot.cmd менять fatload на load – безрезультатно, пробовал указывать вместо «mmc 0» адрес с разделом «mmc 0:1» – безрезультатно.

printenv ниже:

arch=arm
baudrate=115200
board=sunxi
board_name=sunxi
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=fel mmc0 usb0 pxe dhcp
bootargs=console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p2 init=/sbin/init rootwait rootfstype=ext4 panic=10 consoleblank=0 enforcing=0 loglevel=7
bootcmd=run distro_bootcmd
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_fel=if test -n ${fel_booted} && test -n ${fel_scriptaddr}; then echo '(FEL boot)'; source ${fel_scriptaddr}; fi
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcmd_usb0=devnum=0; run usb_boot
bootdelay=2
bootfstype=fat
bootm_size=0xa000000
console=ttyS0,115200
cpu=armv7
dfu_alt_info_ram=kernel ram 0x42000000 0x1000000;fdt ram 0x43000000 0x100000;ramdisk ram 0x43300000 0x4000000
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
eth1addr=12:42:c1:50:2c:d1
ethact=ethernet@1c30000
ethaddr=02:42:c1:50:2c:d1
fdt_addr_r=0x43000000
fdtcontroladdr=4bf59080
fdtfile=sun8i-h2-plus-orangepi-zero.dtb
fileaddr=43000000
filesize=3bc1
kernel_addr_r=0x42000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmc_bootdev=0
partitions=name=loader1,start=8k,size=32k,uuid=${uuid_gpt_loader1};name=loader2,size=984k,uuid=${uuid_gpt_loader2};name=esp,size=128M,bootable,uuid=${uuid_gpt_esp};name=system,size=-,uuid=${uuid_gpt_system};
preboot=usb start
pxefile_addr_r=0x43200000
ramdisk_addr_r=0x43300000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x43100000
serial#=02c00042c1502cd1
soc=sunxi
stderr=serial
stdin=serial,usbkbd
stdout=serial
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
uuid_gpt_esp=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
uuid_gpt_system=69dad710-2ce4-4e3c-b16c-21a1d49abed3

Environment size: 4665/131068 bytes 
ВОПРОС: почему не выполняются fatload из boot.scr? При этом echo и bootm выполняются исправно.

 , ,

yohabi
()

PineTime — свободные смарт-часы за 25$

Новости — Hardware and Drivers
Группа Hardware and Drivers

Сообщество Pine64, недавно анонсировавшее производство свободного смартфона PinePhone, представляет свой новый проект — смарт-часы PineTime.

Основные возможности часов:

  • Мониторинг сердечного ритма.
  • Емкая батарея, которой хватит на несколько дней.
  • Настольная док-станция для зарядки часов.
  • Корпус из цинкового сплава и пластика.
  • Наличие WiFi и Bluetooth.
  • Чип Nordic nRF52832 ARM Cortex-M4F (на частоте 64MHz) с поддержкой технологий Bluetooth 5, Bluetooth Mesh, проприетарным стеком ANT на 2,4 GHz и NFC-A.
  • Точные характеристики RAM и Flash-памяти пока не подтверждены, но, скорее всего, это 64KB SRAM и 512KB Flash.
  • Сенсорный экран 1.3" 240x240 IPS LCD.
  • Встроенная вибрация для уведомлений.

Предполагаемая цена — всего 25$.

В качестве основной операционной системы предлагается использовать «ОС реального времени» с открытыми исходниками - FreeRTOS. Так же в планах адаптировать ARM MBED. Но сообщество получит возможность адаптировать и другие известные системы для смарт-часов.

По словам Pine64: «Мы позволим сообществу и разработчикам развивать проект в нужном направлении».

>>> Подробности

 , , , ,

fail2ban
()

Вышел NGINX Unit 1.11.0

Новости — Open Source
Группа Open Source

19 сентября 2019 года состоялся релиз сервера приложений NGINX Unit 1.11.0.
Основные особенности:


  • В сервер встроена возможность самостоятельной отдачи статического контента без обращения к внешнему серверу http. В итоге сервер приложений хотят превратить в полноценный веб-сервер со встроенными средствами построения веб-сервисов. Для раздачи контента достаточно указать в настройках корневой каталог

    ( читать дальше... )

>>> Подробности

 ,

Zhbert
()

Почему вы выбрали slackware

Форум — Desktop

Интересует мнение людей, которые выбрали slackware в качестве основного дистрибутива дома/на работе/на сервере. Почему сделали такой выбор? Интересуюсь в первую очередь потому, что есть желание себе поставить на десктоп. Для меня пока не понятно, как слакваристы организовывают установку нужного софта на всех компах со всеми зависимостями и как организовывают обновление с пересборкой сразу везде (локальный репозиторий?). В общем, слакваристы, делитесь впечатлениями. Интересует _только_ стабильная ветка. Судя по всему для работы с моим железом придется обновлять ядро до 4.18+.

Хейтеров и ненужнистов просьба держаться от топика подальше. Не разводите срач. Заранее спасибо.

 

SothaSil
()

посоветуйте прокси для телеграм

Форум — General

ЛОР, посоветуй работающий прокси-сервер для телеграмма (адрес). Использую telegram-desktop-1.8.1, без прокси - не коннектит.

Может быть кто-то запилил себе проксю на VPS и готов поделиться полосой?

Также прошу описать угрозы при работе через недоверенный прокси.

 , ,

legolegs
()

Опубликована полная спецификация смартфона Librem 5

Новости — Hardware and Drivers
Группа Hardware and Drivers

Компания Purism опубликовала полную спецификацию Librem 5.

Основное железо и характеристики:

  • Процессор: i.MX8M (4 ядра, 1.5GHz), GPU поддерживает OpenGL/ES 3.1, Vulkan, OpenCL 1.2;
  • Оперативная память: 3 ГБ;
  • Внутренняя память: 32 ГБ eMMC;
  • Разъем MicroSD (поддержка карт памяти до 2 ТБ);
  • Экран 5.7" IPS TFT с разрешением 720x1440;
  • Съемная батарея 3500 мАч;
  • Wi-Fi: 802.11abgn (2.4ГГц + 5ГГц);
  • Bluetooth 4;
  • Фронтальная камера: 8 мегапикселей, задняя камера: 13 мегапикселей;
  • Порт USB 3.0 Type C (передача данных, зарядка, видеовыход);
  • Комбинированный разъем jack 3.5мм (микрофон, наушники);
  • GPS (Teseo LIV3F GNSS), гироскоп, акселерометр.

Возможны 2 варианта модемов сотовой связи:

  • Gemalto PLS8 3G/4G на разъеме M.2;
  • Broadmobi BM818.

Особенностью телефона являются 3 физических выключателя: Wi-Fi + Bluetooth, сотовая связь, камера + микрофон. Если три выключателя в положении «выключено», то выключается GPS.
Софт представлен полностью открытым Linux-дистрибутивом PureOS c двумя оболочками: GNOME и Plasma Mobile. Заявлена пожизненная поддержка ОС (Lifetime updates).
Загрузчик не заблокирован - возможна установка любого стороннего дистрибутива Linux или другой ОС.

Продажа устройства будет объявлена в 3 квартале 2019 года.

>>> Подробности

 , ,

anonymous
()

Не работает expires max nginx

Форум — General

Помогите понять почему не работает expires max в nginx. Есть связка nginx+php-fpm+memcache, но почему то не работает кэширование. developers.google.com говорит, что статика не кешируется.

Сам конфиг nginx:

server {
        listen 80;
        listen [::]:80;
        server_name .example.com;
#       return 301 https://example.com$request_uri;
}

server {

    fastcgi_pass_header Last-Modified;

    gzip on;
    gzip_comp_level 3;
    gzip_types application/x-javascript application/javascript text/css;

    pagespeed on;
    pagespeed RewriteLevel OptimizeForBandwidth;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;
    pagespeed LoadFromFile "https://example.com" "/home/www/example.com/www/";
    pagespeed FetchHttps enable;

    pagespeed EnableFilters collapse_whitespace,rewrite_css,rewrite_js,combine_css,combine_javascript,prioritize_critical_css,insert_dns_prefetch;
    pagespeed DisableFilters convert_to_webp_animated,convert_jpeg_to_webp,convert_to_webp_lossless,recompress_webp;
    pagespeed EnableFilters in_place_optimize_for_browser;
    pagespeed InPlaceResourceOptimization on;
    pagespeed EnableFilters extend_cache;
    pagespeed EnableCachePurge on;
    pagespeed ImplicitCacheTtlMs 1209600000;
    pagespeed ImagePreserveURLs on;

    keepalive_timeout   70;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_stapling on;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         "HIGH:!RC4:!aNULL:!MD5:!kEDH";

    listen              443 ssl http2;
    server_name .example.com;
    charset off;
    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;
    set $root_path /home/www/example.com/www;
    root $root_path;

    set $php_sock unix:/var/run/php-fpm/php-fpm.sock;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    client_max_body_size 1024M;
    client_body_buffer_size 10M;
    client_body_timeout 60;
    send_timeout 60;
    index index.php;
    autoindex off;
    error_page 404 /404.php;

        if (!-e $request_filename) {
                rewrite  ^(.*)$  /bitrix/urlrewrite.php last;
        }

        location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
                expires 7d;
        }

        if ($host = 'www0.example.com') {
                return 301 https://example.com$request_uri;
        }

        location @bitrix {
                add_header Cache-Control "private, max-age=1209600";
                fastcgi_pass    $php_sock;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
        }

        location ~* /bitrix/admin.+\.php$ {
                pagespeed off;
                try_files       $uri @bitrixadm;
                fastcgi_pass    $php_sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PHP_ADMIN_VALUE "max_execution_time = 1200";
                fastcgi_read_timeout 1200;
                fastcgi_send_timeout 1200;
                include fastcgi_params;
        }

        location @bitrixadm {
                fastcgi_pass    $php_sock;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root/bitrix/admin/404.php;
        }

        location = /favicon.ico {
                log_not_found off;
                access_log off;
                expires 7d;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        # ht(passwd|access)
        location ~* /\.ht  { deny all; }

        # repositories
        location ~* /\.(svn|hg|git) { deny all; }

        # Player options, disable no-sniff
        location ~* ^/bitrix/components/bitrix/player/mediaplayer/player$ {
          add_header Access-Control-Allow-Origin *;
        }

        location ~* ^.+\.(jpg|jpeg|gif|png|svg|ttf|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
                access_log /var/log/nginx/example.com-access.log;
                expires max;
                error_page 404 /404.html;
                try_files $uri /404.html;
        }

        location ~ \.php$ {
                pagespeed off;
                try_files       $uri @bitrix;
                fastcgi_pass    $php_sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

 ,

perrfect
()

NodeJS серебрянная пуля?

Форум — Web-development

Всем привет, сам занимаюсь WEB разработкой уже более 5 лет и споры вокруг противников и сторонников NodeJS в последнее время озадачили меня вопросом, а правда ли NodeJS является серебрянной пулей в WEB программировании или все же это не кому не нужная технология «бум» которой вскоре утихнет как это произошло в свое время с языком Perl о котором ранее статей в день не подавались подсчетам, а сейчас за год найти 2-4 нормальных статей является достижением века.. Ну да ладно, суть не в этом, как вы относитесь сами к NodeJS и какие его достоинства и недостатки можете написать? Мое лично мнение что использование 1 стека технологии под «все» не является верным т.к. 1 язык не может решать хорошо все проблемы, из-за чего языков и «расплодилось» как анимешников после распада совка. Даже Erlang не является эталонном во многих сферах, а фанатики NodeJS с пеной у рта доказывают что их «Божество» даже круче Erlang'a в плане работы с «большим» количеством коннектов. Пишите свои мысли по этому поводу

 , , , ,

HasKup9012
()

Android, зонды, безопасность, СПО, паранойя

Форум — Mobile

Disclaimer1: Проблема с данным маном в том, что местной аудитории, например, плевать на ведроид, а тому же 4pda наплевать на фанатичный СПО и избавление от зондов. Рискнем и запостим здесь.

Disclaimer2: Все описанное является суммой наклопленного мной опыта вперемешку с моим личным мнением. Пишите комменты, будем улучшать-дополнять-чинить

Уровень прошивки

Практически все стоковые прошивки на сегодняшний день идут с gapps (Google Apps). Что же это за зверь:

  • Любое приложение (даже не требуещее никаких прав) может с ним общаться.
  • Gapps имеют доступ к сети.
  • Gapps позволяют Google в любой момент установить/удалить с вашего телефона любое приложение.
  • Gapps постоянно держат открытое сетевое соединение с серверами гугла (для нужд push-нотификаций).
  • Gapps — нереальное огромное количество кода. Стоковый образ (если верить opengapps) будет весить около 700Мб.

ААААА, как это удолить этот рассадник потенциальных уязвимостей и жора батарейки?

Сложный вопрос, на самом деле. Есть три варианта действий:

  • Новый и простой, и профитный способ. Появилась прошивка «LingeageOS for microG». Если ваше устройство поддерживает её, просто ставьте её и наслаждайтесь. Fdroid+MicroG+пуши+signature spoofing+unlp+OTA-обновления из коробки
  • Самый простой способ. Если ваш андроид достаточно старый (на достаточно новом не удастся отключить самый главный компонент gapps), из Настройки->Приложения отключите все, связанное с Google (особенно, Google Service Frameworks):
    • root не требуется;
    • push-уведомления работать не будут;
    • на устройстве останется огромная и потенциальная куча гугловского дерьма, хоть и менее активная.
  • Способ посложнее. Накатываем root и вручную удаляем все пакеты и библиотеки, требуемые гуглу:
    • требуется root и разблокировка загрузчика;
    • минимальное количество зондов без смены прошивку на полностью опенсорсную;
    • увы, в последних версиях андроида вам, скорее всего, придется оставить несколько пакетов (вроде GoogleSetupWizard), иначе система не загрузится.
  • Самый профитный способ. Ставим альтернативную прошивку (или мотаем до следующей секции и покупаем устройство с пгавославной прошивкой без зондов из коробки). Наслаждаемся.
    • Требуется root, разблокировка загрузчика, шаманство и местами смена устройства.

Я тут начал наслаждаться, но вдруг понадобились пуши, да и Uber требует зонды. Что делать?

Вдоль

Попробовать поставить MicroG, свободную реализацию клиентской части гуглозондов. Самая больная часть: помимо собственно MicroG вам нужно будет запилить себе Signature Spoofing. Коротко говоря, это обход защитного механизма, не позволяющего прикидываться gapps'ами кому попало. Для этого необходимо либо патчить прошивку при помощи Xposed/Needle/Haystack, либо использовать совместимую прошивку (смотрите список, по ссылке, их стало очень много). Все подробности по той ссылке.

MicroG позволяет завести пуши, сервисы геолокации (со множеством бекендов, ищите nlp location backend в f-droid) и большое количество софта (когда я в последний раз тыкал, работали даже покемоны).

Уровень софта

Без гуглозондов жить есть!

https://f-droid.org/ — каталог с опенсорсным софтом.

Предлагаю вам следующий список приложений, способный заменить типичный набор проприетари из типичной вендорской прошивки. Аналогичный список: https://github.com/Datenschutz/awesome-FOSS-apps

  • Yalp store. Позволяет ставить приложения из Google Play (да, иногда это все-таки нужно), в том числе через общий аккаунт. Не требует зондов.
    • Позволяет так же выкачивать купленные приложения (но не факт, что они заработают: они при работе могут проверять лиценизию через gapps, возможно, тут может помочь microg).
    • Альтернативно, воспользуйтесь моим решением для выкачивания софта прямо в свой репозиторий f-droid.
  • K-9 Mail. Почтовый клиент.
  • DAVDroid. Синхронизация контактов с owncloud/nextcloud.
  • Gadgetbridge. Синхронизация с умными часами и браслетами (pebble, mi band и некоторые другие)
  • NewPipe. Клиент для YouTube. Умеет воспроизводить видео в фоновом режиме как музыку, загружать файлы.
  • Odyssey. Просто материальный музыкальный плеер, но в последнее время очень нужный, т.к. вендоры повадились заменять в прошивке плеер на Google Music.
  • Набор простых и красивых затычек для различных приложений — simple mobile tools.
  • Файрволл AFWall+ файрволл (имеет Xposed модуль для расширения возможностей)
  • Amplify Battery Extender.
  • DNS66.
  • KDE Connect.
  • OpenKeychain.
  • OpenVPN FOSS.
  • Картография и навигация: Maps.Me (приз симпатий от комментаторов), OsmAnd (приз глюкалова от меня, но щито поделать).
  • Список стал очень жирным. Пока новые элементы не добавляю, думаю над критериями включения в него софта.

Если вы будете ставить проприетарный софт, помните о следующем:

  • Желательно зайти в настройки приложения и вручную запретить доступ ко всем ненужным разрешениям, дабы не промахнуться в нужный момент.
  • Отключите приложению фоновый доступ к сети (если у вас свежий Android) или вообще доступ к сети (если у вас стоит файрволл).
  • Малвари вроде «Сбербанк Онлайн» вообще лучше создать отдельный аккаунт на телефоне.
  • Яндексовским приложениям нельзя давать доступ к местоположению. Вообще никаким — все сливают.
  • Проприетарь может читать названия аккаунтов, даже не принадлежащих ей. Называйте их максимально обще, т.е. вместо «sportloto@syncserver.com» делайте «contacts sync».

Права суперпользователя

Читая васянский 4pda вы часто можете увидеть «ну и накатываем SuperSU.zip». Не делайте этого. Есть прекрасный опенсорсный superuser, совместимый со свежими ведроидами. Нужно лишь поставить zip (используйте beta на android >=6) и apk.

Если ваша прошивка основана на LineageOS, то все еще проще. Где-то рядом с загрузками в директории extra должен валяться zip, включающий встроенные и интегрированные в прошивку права суперпользователя. Профит.

XPosed

XPosed — опенсорсный фреймворк для низкоуровневых хаков.

  • Не доступен для свежих андроидов.
  • Позволяет заставить не увидеть root всякие «Сбербанки Онлайн».
  • Имеет кучу некрофильских и неопенсорсных модулей. Осторожнее.
  • Легким движением руки может окирпичить прошивку.
  • Полезные модули:
    • PlayPermissionsExposed
    • YouTubeAdAway (но все-таки советую использовать NewPipe, LightTube, WebTube, SkyTube или MiniTube. Тысячи их!)
    • XPrivacy — по своей сути это «песочница» для любого, даже системного, ПО. Xprivacy применяет правила ко всему ПО. Эти правила можно создавать самому или качать готовые. То есть, к примеру, если установлено нечто местами полезное, но попутно показывающее свою рекламу, Xprivacy можно просто запретить этому ПО доступ в сеть. Или если очередная косынка хочет интернет, список контактов, доступ к микрофону и камере, то с Xprivacy это легко и просто запрещается конкретно этой гадости и она даже будет при этом работать не имея доступа к тому, что ей будет запрещено.

Уровень устройства

Тут тоже всё плохо. Выбор:

  • Рандомный флагман с хорошей поддержкой LineageOS (CyanogenMod). Поддержка, вероятно, будет хорошей, секьюрити-апдейты будут приходить долго (например, для htc desire hd цианоген обновлялся до самого конца — декабря 2016 года), но вот версия андроида, скорее всего, застрянет. Обычно дорого. Можно искать по списку официально поддерживаемых линейкой устройств.
  • OneplusOne / Wileyfox Swift 1. Поставлялись с CyanogenOS, имеют хорошее коммьюнити разработчиков, будут долго обновляться в софтовой части. В железной — все плохо. 1+1 уже довольно старый и хорошие запчасти купить сложно. Wileyfox изначально имел несколько проблем, в т.ч. слабенькую батарейку. Компенсируется ценой, местами можно найти новое в продаже. Довольно бюджетно.
  • Fairphone 2. Очень дорого, очень хорошо. Но это в теории, как там на практике — хз, не пользовался, отпишитесь.
  • Рандомный телефон с официальным портом los. Сойдет, главное, чтобы фатальных багов в порте не было. Долгой жизни порта не ждите.
  • Рандомный телефон с васянским los. Совсем плохо, но если телефон уже куплен, ничего не поделать.
  • Рандомный телефон с васянским ведроидом, основанным на стоковой прошивке / без исходников / проч. Лучше такое не ставить, а подготовить прошивку самостоятельно, смотрите выше и ниже.

Следует также заметить, что:

  • Существует несколько устройств с CyanogenOS, без доступной Cyanogenmod. В комплекте идут сервисы microsoft, gapps и много разной другой блотвари. Исходники обычно зажабены. Пример устройств: Wileyfox Spark, Wileyfox Swift 2(|+|x).
  • Выбирая устройство, так же загляните на его страничку на 4pda. Ресурс хоть и васянский, но очень полезный: можно увидеть список доступных прошивок, FAQ по типичным проблемом, список самых вероятных заводских проблем (которые можно проверить еще перед покупкой).

Уровень физической безопасности

Для чего нужна физическая безопасность:

Допустим, ваш девайс попал в руки злоумышленнику.

  • Во-первых, вы хотите, чтобы он не имел никакой возможности прочитать важные файлы с вашего телефона (кейз ФБ-1).
  • Во-вторых, вы хотите узнать, не добавил ли он кейлоггеров в ваш загрузчик (кейз ФБ-2).

Сразу скажу: всё плохо. Вам может показаться, что заботливые производители позаботились о вас, залочив загрузчик вашего телефона и не позволяя его разблокировать, не удалив все данные с телефона.

Я бы на вашем месте на это не рассчитывал.

  • Аппаратные защиты часто не надежны и опираются на принципах безопасности через неясность, в них переодически находят уязвимости
  • На прекрасных, казалось бы, телефонах Xiaomi вы не сможете разблокировать загрузчик, если с Xiaomi что-либо случится: разблокировка производится с участием интернета при помощи (работающей только под Windows) программы, требующей их аккаунта и доступа к интернету. У HTC похожая ситуация, но в несколько более мягких условиях.
    • Скорее всего, это доставит неудобств именно вам, а не злоумышленнику
  • Всякие проприетарные системы полнодискового шифрования тоже не выдерживают проверок специалистами.

Выводы:

  • Для хранения ваших секретных файлов в безопасности от ФБ-1 используйте, к примеру, Secrecy.
  • «Таблеток» от ФБ-2 на сегодняшний день нет. Промбируйте телефон при помощи скотча и волос и не расставайтесь с ним.
  • Лучше все-таки не хранить никакие важные данные на телефоне.

Модули сотовой связи

В каждом мобильном телефоне, почти каждом планшете есть GSM-модуль мобильной связи. Это —

  • Фактически отдельное устройство, обычно имеющее максимальный доступ к процессору, памяти и переферии. Зачем это делают — черт знает. Возможны исключения, нужно уточнять в каждом отдельном случае.
  • Идентифиционный модуль, который постоянно разговаривает с воздухом.
  • Куча проприетарного кода, который никто не анализировал. В тех немногих случаях, когда анализировали — находили кучу всего интересного.
  • Работает это все на протоколах, местами разработанные в 80-х годах.

Так что тут все настолько плохо, что я даже предложить ничего не могу. Страдайте.

Вроде, все, что хотел сказать. Выдыхаю

 , , , ,

derlafff
()

openwrt pppoe ipv6 DHCP-PD

Форум — General

Всем доброго времени суток, сижу и туплю казалось бы на ровном месте. Провайдер ЭР-Телеком (торговая марка Дом.ru). Не могу запустить на роутере (openwrt OpenWrt Barrier Breaker 14.07-rc3 / LuCI Trunk (svn-r10467) ) ipv6.

В ноябре 2013 года провайдер ЭР-Телеком (торговая марка Дом.ru) запустил нативную поддержку протокола IPv6 в 29 городах, в том числе и в Волгограде (AS39435). Подключение происходит как и прежде через PPPoE, а для выдачи адреса IPv6 используется DHCP-PD (Prefix Delegation). При этом предоставляется один динамический префикс /64. Реализовать статику и обратные зоны обещают в начале 2014 г. В связи с особенностями реализации подключения, безкостыльное использование IPv6 возможно только через маршрутизатор.

Докрутил до такого конфига:

config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0'

config globals 'globals' option ula_prefix 'fd34:6e16:f7bc::/64'

config interface 'lan' option ifname 'eth0.1' option force_link '1' option type 'bridge' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60'

config interface 'wan' option _orig_ifname 'eth0.2' option _orig_bridge 'false' option ifname 'eth0.2' option proto 'pppoe' option username '' option password '' option ipv6 '1'

config interface 'wan6' option _orig_ifname '@wan' option _orig_bridge 'false' option proto 'dhcpv6' option ifname 'eth0.2' option reqprefix 'auto' option reqaddress 'try'

config switch option name 'switch0' option reset '1' option enable_vlan '1'

config switch_vlan option device 'switch0' option vlan '1' option ports '0t 2 3 4 5'

config switch_vlan option device 'switch0' option vlan '2' option ports '0t 1'

Как понимаете роутер по ipv6 не получает подсеть.:(

qtmake
()

Debian на планшете с Allwinner A13

Галерея — Скриншоты

Таки поставил на него Linux. На скриншоте Debian с Enlightenment. Особых трудностей не возникло, кроме того, что из-за криворуких мейнтейнеров из аура (не собирался gcc под arm) ядро пришлось собирать на убунте. В общем, пока неюзабельно. Что нужно сделать:

  • заставить тачскрин работать как тачскрин
  • заставить работать хоть какое-то энергосбережение
  • включить аппаратное ускорение - драйвер для видеокарты вроде как собрался вместе с ядром, но профита от него нету.

Еще не завелся Wi-Fi, но думаю, собрать ядреные модули не проблема. Если не считать эти проблемы, то все просто прекрасно. Режим Tablet в E17 таки конфетка.

>>> Просмотр (800x480, 182 Kb)

 , ,

Extraterrestrial
()

exynos4412 prime как домашний сервак, детали и больше тестов

Форум — Talks

Собственно, кому тут были интересны детали - ловите

Для Ъ: по ссылке описание доводки odroid-x2 до работы домашним серваком.

 , ,

AiFiLTr0
()