LINUX.ORG.RU

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

Live Programming In Modern Smalltalk

Форум — Development

Всем привет,

Делюсь курсом, который я организовал и провёл для своей команды и коллег. Вероятно кому-то будет интересно.

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

Материалы | Записи занятий

 , ,

yoghurt
()

Buttplug 1.0

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

Тихо и незаметно, поcле 3,5 лет разработки, состоялся первый мажорный релиз Buttplug – комплексного решения для разработки программного обеспечения в сфере дистанционного управления интимными устройствами с поддержкой различных способов подключения к ним: Bluetooth, USB и последовательные порты с помощью языков программирования Rust, C#, JavaScript и TypeScript.

Начиная с этой версии, имплементации Buttplug на C# и JavaScript отбрасываются в пользу соответствующих им библиотек, которые взаимодействуют с единственной оставшейся имплементацией на Rust посредством FFI, что позволило начать разработку библиотек для Python, C++, языков на платформе JVM и Unreal Engine.

Buttplug поддерживает управление с клавиатур, джойстиков и контроллеров виртуальной реальности, а также синхронизацию с фильмами посредством плагинов к VLC и Kodi.

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

 adult, , , ,

Princesska
()

Делаю одноплатный компьютер из WIFI-Роутера.. Нужна помощь с Драйвером «atyfb»

Форум — Linux-hardware

Так... Для начала немного предыстории...

Думаю здесь уже многие наверно 'слышали' про такую штуку как «raspberry pi 4 compute module + io board» который вышел пару месяцев назад. (Если нет вкратце объясню... это одноплатный компьютер на ARM процессоре в последнюю модификацию которого была добавлена поддержка PCIe x1).

Так-вот сейчас youtube переполнен роликам в которых народ тычет е PCIe x1 слот на этом компьютере всякую хрень. По типу: Звуковые карты, карты видео захвата, raid -контроллеры, nvme ссд-шки, видеокарты... короче все что можно засунуть, уже туда суют! И как вы думайте что из того списка мозолит больше всего глаза ютуберов? Если кто-то подумал о видеокартах...То поздравляю.. вы угадали! честно говоря я сам не совсем понимаю зачем пихать в одноплатный компьютер GTX1650... но сам факт того что  целая куча народа пытается заставить грёбаною видеокарту работать на ARM процессоре заставил меня задуматься... Неужели это так сложно? немного подумав.. мне захотелось тоже попробовать... И я решил купить этот «raspberry pi 4 compute module + io board» но как оказалось его в наличии нигде нет... Становись в очередь и жди 3 месяца или покупай у перекупщиков на ebay в 2 раза дороже... Мдя... Не мой вариант!...

И тут моему взору пал старенький роутер Asus WL-500g... и сразу-же вспомнилось, что там стоит WIFI в MiniPCI слоте... Ну тут вы уже наверное поняли к чему я клоню... Моя больная фантазия увидела в этом, и так уже измученном жизнью роутере видеокарту =) Я уже ранее ему сделал 2 модификации...1я - увеличил объем оперативной памяти с 32Мб до 128Мб (перепаял 2 чипа), 2я - Установил туда debian 7 на ядре от openwrt. Ну думаю настало время 3-тий завершающий модификации по добавлению видеокарты, звуковой карты, клавы и мыши... И воля вот вам одноплатный компьютер на MIPS процессоре =) Думаю ресурсов должно хватить для запуска рабочего стола, doom и эмулятора денди =)

В общем задачу я себе поставил подключить к роутеру видеокарту! ПРИСТУПАЮ!... 1-вым делом начал искать видеокарту для слота miniPCI... нашел одну... MS-9513 ATI Rage XL 8Mb... даже не знал что такое существует... Но к сожалению в продаже я её, нигде не нашел... но зато нашел информацию о том что этот чип должен работать на mips процессорах а это важно в моём случае! Раз уж я не могу приобрести эту карточку то в голову приходит вариант номер 2 переходник miniPCI to PCI и их тоже как назло в продаже нет! (Китайцы где же вы, когда вы так нужны?...) В общем так как я с электроникой на ты! Я решил сделать переходник самостоятельно... всего то нужно было прочитать страниц 40 pci документации и нарисовать в CAD программе переходник... За 2 дня не сильного напряга нарисовал переходник и заказал его на производстве печатных плат у китайцев.... Жду 2 недели... Но не расслабляюсь так как мне еще нужно найти видеокарту ATI Rage XL 8Mb для обыкновенного PCI слота но с ключом на 3.3в что скажу вам не так-то уж и просто так-как практически все карточки 5 вольтовые... Хоть это не составило большого труда.. нашёл её на ближайшей компьютерной барахолке.. за 7$.. Спустя неделю ко мне таки пришли платы «Фотка-1» от китайцев... Спаял одну засунул в роутер «Фотка-2» и воткнул в неё для начала сетевую плату, её не жалко спалить если я где то накосячил с разводкой платы.... Заработало с первого раза! даже модуль ядра подхватило что меня довольно сильно удивило...

Ладно приступаю ко второму этапу сую туда видеокарту «Фотка-3» и запускаю... Плату на шине pci видит! Ура! но картинки нет =( собственно ожыдаеммо модуля ядра веть тоже нет... пересобрал ядро добавил поддержку графики и драйвера atyfb и mach64... Залил в роутер и что вы думайте? Кирпич! Все-таки это не так то и просто заставить из коробки работать видюху на другой архитектуре процессора как минимум из за отсутствия bios который читает rom видюхи и инициализирует регистры в самой видеокарте для работы в так называемом режиме video_bios....

Собственно на этом этапе я и застрял и уже сижу две недели  Кое как настроил earlyprintk и и наконец то получил Kernel Panic который openwrt от меня дня 4 прятал...

CFE version 1.0.37 for BCM947XX (32bit,SP,LE)
Build Date: ▒| 10▒▒ 12 22:21:19 CST 2006 (root@localhost.localdomain)
Copyright (C) 2000,2001,2002,2003 Broadcom Corporation.

Initializing Arena
Initializing Devices.
et0: Broadcom BCM47xx 10/100 Mbps Ethernet Controller 3.90.7.0
rndis0: Broadcom USB RNDIS Network Adapter (P-t-P)
CPU type 0x29006: 264MHz
Total memory: 134217728 KBytes

Total memory used by CFE:  0x80800000 - 0x8089AF40 (634688)
Initialized Data:          0x808313D0 - 0x80833790 (9152)
BSS Area:                  0x80833790 - 0x80834F40 (6064)
Local Heap:                0x80834F40 - 0x80898F40 (409600)
Stack Area:                0x80898F40 - 0x8089AF40 (8192)
Text (code) segment:       0x80800000 - 0x808313D0 (201680)
Boot area (physical):      0x0089B000 - 0x008DB000
Relocation Factor:         I:00000000 - D:00000000

Device eth0:  hwaddr 00-1B-FC-E2-9F-10, ipaddr 192.168.1.200, mask 255.255.255.0
        gateway not set, nameserver not set
Null Rescue Flag.
Reading :: TFTP Server.
Failed.: Timeout occured
Loader:raw Filesys:raw Dev:flash0.os File: Options:(null)
Loading: .. 3712 bytes read
Entry at 0x80001000
Closing network.
Starting program at 0x80001000
[    0.000000] Linux version 3.18.109 (openwrt@debian) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r49632) ) #5 Fri Dec 18 20:38:41 EET 2020
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00029006 (Broadcom BMIPS3300)
[    0.000000] bcm47xx: Using ssb bus
[    0.000000] ssb: Found chip with id 0x4704, rev 0x09 and package 0x00
[    0.000000] Unsupported SPROM revision 0 detected. Will extract v1
[    0.000000] ssb: Sonics Silicon Backplane found at address 0x18000000
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x00000000-0x07ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00000000-0x07ffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x07ffffff]
[    0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
[    0.000000] Primary data cache 16kB, 2-way, VIPT, cache aliases, linesize 16 bytes
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line:  earlyprintk noinitrd console=ttyS0,115200
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 125892K/131072K available (2829K kernel code, 126K rwdata, 560K rodata, 184K init, 282K bss, 5180K reserved, 0K cma-reserved)
[    0.000000] NR_IRQS:128
[    0.000000] MIPS: machine is Asus WL500GP V1
[    0.000000] Console: colour dummy device 80x25
[    0.000000] Calibrating delay loop... 262.96 BogoMIPS (lpj=1314816)
[    0.070000] pid_max: default: 32768 minimum: 301
[    0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.080000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.090000] NET: Registered protocol family 16
[    0.300000] DMA-API: preallocated 65536 debug entries
[    0.300000] DMA-API: debugging enabled by kernel config
[    0.310000] Switched to clocksource MIPS
[    0.640000] PCI host bridge to bus 0000:00
[    0.650000] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff]
[    0.650000] pci_bus 0000:00: root bus resource [io  0x0100-0x07ff]
[    0.660000] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    0.670000] ssb: PCI: Fixing up bridge 0000:00:00.0
[    0.670000] ssb: PCI: Fixing up device 0000:00:00.0
[    0.680000] ssb: PCI: Fixing latency timer of device 0000:00:00.0 to 168
[    0.690000] pci 0000:00:02.0: BAR 0: assigned [mem 0x40000000-0x40ffffff]
[    0.700000] pci 0000:00:02.0: BAR 6: assigned [mem 0x41000000-0x4101ffff pref]
[    0.710000] pci 0000:00:02.0: BAR 2: assigned [mem 0x41020000-0x41020fff]
[    0.710000] pci 0000:00:02.0: BAR 1: assigned [io  0x0400-0x04ff]
[    0.720000] pci 0000:00:03.2: BAR 0: assigned [mem 0x41021000-0x410210ff]
[    0.720000] pci 0000:00:03.0: BAR 4: no space for [io  size 0x0020]
[    0.730000] pci 0000:00:03.0: BAR 4: failed to assign [io  size 0x0020]
[    0.740000] pci 0000:00:03.1: BAR 4: no space for [io  size 0x0020]
[    0.740000] pci 0000:00:03.1: BAR 4: failed to assign [io  size 0x0020]
[    0.760000] NET: Registered protocol family 2
[    0.760000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.770000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.780000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.780000] TCP: reno registered
[    0.790000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.790000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.800000] NET: Registered protocol family 1
[    0.870000] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.880000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.890000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.900000] msgmni has been set to 245
[    0.900000] io scheduler noop registered
[    0.910000] io scheduler deadline registered (default)
[    0.910000] PCI: Enabling device 0000:00:02.0 (0080 -> 0083)
[    0.920000] ssb: PCI: Fixing up device 0000:00:02.0
[    0.920000] atyfb: using auxiliary register aperture
[    0.930000] atyfb: 3D RAGE XL (Mach64 GR, PCI-33) [0x4752 rev 0x27]
[    0.940000] atyfb: 512K SGRAM (1:1), 14.31818 MHz XTAL, 230 MHz PLL, 83 Mhz MCLK, 63 MHz XCLK
[    0.940000] atyfb: Unsupported xclk source:  5.
[    0.950000] Data bus error, epc == 80193240, ra == 801931fc
[    0.950000] Oops[#1]:
[    0.950000] CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.109 #5
[    0.950000] task: 8781c9b8 ti: 8781e000 task.ti: 8781e000
[    0.950000] $ 0   : 00000000 10008800 c004a400 00800000
[    0.950000] $ 4   : 00000064 00000000 86d522e8 0000096d
[    0.950000] $ 8   : 0000002e 73206b6c 6372756f 20203a65
[    0.950000] $12   : 64657472 0000000e 00000000 6c637820
[    0.950000] $16   : 86d522e8 86d52000 80364290 8031d358
[    0.950000] $20   : 86d52778 40000000 80360000 41020000
[    0.950000] $24   : 00000002 00000000
[    0.950000] $28   : 8781e000 8781fbf0 80320000 801931fc
[    0.950000] Hi    : 00000000
[    0.950000] Lo    : 0009fe98
[    0.950000] epc   : 80193240 aty_init+0x630/0x9b0
[    0.950000]     Not tainted
[    0.950000] ra    : 801931fc aty_init+0x5ec/0x9b0
[    0.950000] Status: 10008803 KERNEL EXL IE
[    0.950000] Cause : 0080001c
[    0.950000] PrId  : 00029006 (Broadcom BMIPS3300)
[    0.950000] Modules linked in:
[    0.950000] Process swapper (pid: 1, threadinfo=8781e000, task=8781c9b8, tls=00000000)
[    0.950000] Stack : 0000005a 00000200 0000004b 80364290 8031d358 000000e6 00000053 0000003f
          00000400 800484d0 00000006 00000001 00000000 00000000 00000093 00000000
          00000037 00000006 803b68b2 00000006 10008801 00000037 00000000 00000000
          00000000 800491b4 00000000 00000006 00000006 003fffff 00000000 00000000
          00000000 00000000 803b68b2 00000037 00000000 8008b77c 00000001 000000d0
          ...
[    0.950000] Call Trace:
[    0.950000] [<80193240>] aty_init+0x630/0x9b0
[    0.950000] [<80193854>] atyfb_pci_probe+0x294/0x5b0
[    0.950000] [<8016edb8>] pci_device_probe+0x68/0xd0
[    0.950000] [<801c1958>] driver_probe_device+0xcc/0x218
[    0.950000] [<801c1b84>] __driver_attach+0x7c/0xb4
[    0.950000] [<801bfea0>] bus_for_each_dev+0x98/0xa8
[    0.950000] [<801c108c>] bus_add_driver+0x104/0x1ec
[    0.950000] [<801c2050>] driver_register+0xac/0x100
[    0.950000] [<80382748>] atyfb_init+0x60/0x314
[    0.950000] [<8000a4f8>] do_one_initcall+0x148/0x204
[    0.950000] [<80372cd4>] kernel_init_freeable+0x150/0x208
[    0.950000] [<80005f0c>] kernel_init+0x10/0x114
[    0.950000] [<800014a8>] ret_from_kernel_thread+0x14/0x1c
[    0.950000]
[    0.950000]
Code: 10400006  3c028036  8e020348 <8c4300a0> 34630010  ac4300a0  3c028036  244242c8  ae2202b0
[    1.160000] ---[ end trace 012648158a1832d7 ]---
[    1.170000] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    1.170000]
[    1.170000] Rebooting in 100 seconds..
Как оказалось проблема с отсутствием информация о режимах работы видеокарты... И тут я торчу уже неделю,... пытаясь подобрать режим... пробовал разные методы: Добавлял в boot params video=atyfb:pll:235,mclk:80,xclk:63 частоты которые я взял с простого компьютера установив туда эту карточку. А так же пробовал писать непосредственно в регистры видеокарты... безрезультатно.. Но где-то в один прекрасный момент после 300тый перезагрузки устройства я наконец то получил ошибку на мониторе «Фотка-4»!!! Уря!!! Но счастье продлилось не долго после того как я передернул питание картинка больше не появлялась...

Так а теперь к делу... Умный человек! который прочел моё повествование подскажи мне пожалуйста что я делаю не так? =) как исправить эту гребаною ошибку?

[    0.940000] atyfb: Unsupported xclk source:  5.
[    0.950000] Data bus error, epc == 80193240, ra == 801931fc
Я не программист и не не могу понять исходники драйвера для того чтобы определить то чего ему не хватает... судя по тому что я получил изображения сам того не понимая... методом тыка.. тут скорее всего нужно указать каких-то 2 параметра до которых сам я допереть не могу ...

 , , ,

Architector120
()

MINIX-NE

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

Привет, ЛОР.

В посте полугодичной давности я рассказал о том, как я возился с монохромным монитором от МежДелМаша, подключая его к IBM PS/2. Теперь же я хочу поделиться с вами совсем-таки недавним моим успехом уже софтверного характера, впрочем всё так же занимающим своё заслуженное место в одном из разделов Специальной олимпиады, а именно, — я модифицировал древний MINIX 1.7.5 под нужды своего компьютера, дабы использовать все основные возможности железа. Но начну я своё изложение всё-таки с описания характеристик, ибо именно оно является основным лимитирующим фактором.

Итак, на фото один IBM 8530 (PS/2 Model 30 286) со следующими параметрами

  • Процессор от SIEMENS, клон Intel 80286, 16-bit
  • Память 1 Мб (разбита на 640k+384k)
  • VGA на материнке
  • PS/2 клавиатура и мышь
  • Три ISA слота (мне повезло не возиться с MCA)
  • Compact Flash XT Lite adapter rev 4.1
  • Ethernet от SMC (WD8390 совместимая карта с RJ-45 и BMC)
  • EGA видеокарта от ATI с поддержкой MDA и CGA режимов

Делловский монитор подключён к VGA из материнки, а вот с монохромным монитором пришлось повозиться, сделав переходник с MDA DB-9 на DB-15, плюс выцыганить питание с разъёма для флоппи, ибо IBM решили убрать молексы из дизайна, и запитывать диски с материнки.

Ситуация с подключением двух мониторов довольна нестандартна для конца 80х, однако именно для этой цели адресное пространство у монохромного адаптера и у цветного графического (от которого наследуется текстовый режим VGA) разные, а значит в теории можно использовать VGA+MDA. Однако обычно программы для MS-DOS на это не затачивались, и профита от такой схемы для меня не должно было быть, если бы не…

Если бы не старый MINIX. Версии вплоть до 2.0.4 позволяли в теории запустить полноценный UNIX даже на IBM PC XT с 640k RAM. Однако же найти подходящую именно для меня конфигурацию MINIX оказалось задачей трудной. Я перебрал сначала версию MINIX для MS-DOS, но 1 MB памяти для неё было явно мало (что и не удивительно, ведь MINIX для DOS создаёт виртуальный диск в RAM). В итоге я смог установить в QEMU MINIX 1.7.5 на один из разделов Compact Flash, и потом даже запустить уже на самом PS/2.

Правда, путь к первой введённой в терминале команде был тернист. Во-первых, MINIX подвешивал клавиатуру при загрузке. Причину удалось установить, загрузившись в режиме совместимости с i8086, откуда подозрения сразу пали на злосчастную линию A20, которая управляется контроллером клавиатуры в AT-клонах для совместимости с i8086. В исходном коде kernel/klib88.s A20-линия выставлялась в соответствии с мануалами, вот только оказалось, что для IBM PS/2 появился специальный контроллер для управления A20, а посему код для ядра пришлось сразу же патчить. По итогам доступная память с 640k в режиме совместимости увеличилась до установленной памяти в 1 MB, плюс защищённый режим с его плюсами (ну и минусами тоже, об этом чуть позже).

Следующим шагом было реализации возможности работать одновременно в двух виртуальных tty, используя два монитора. В коде kernel/console.c такой абстракции как монитор или экран не было, поэтому пришлось долго провозиться с возникающими гонками за внутренние переменные, однако усилия были вознаграждены, и теперь я мог например вывести на один экран какой-нибудь man, и параллельно редактировать файл на другом, переключаять по Alt-<- Alt–>.

Ещё одна из проблем оригинального MINIX — он отказывался работать с CF-XT адаптером. Одно время я был удовлетворён работой драйвера, который вызывает функции BIOS int 13h через аппаратный сброс, пока я не захотел наконец-то разобраться с сетевым драйвером (благо он как раз для WD8390 совместимых карт уже был в исходниках). При включении Ethernet в параметрах ядра загрузка зависала на моменте инициализации драйвера диска (забавно, не правда ли?) Вместо того, чтобы пофиксить баг, я решили подойти к вопросу радикально и переписать стандартный драйвер IDE контроллера, чтобы он стал поддерживать CF-XT-lite. И это было увлекательно. Главной подсказской для меня стала принципиальная схема адаптера, потому что сходу отображение адресов CF на шину не гуглилось, и оказалось, что не на все вопросы необходимо искать ответ в Интернете, тем более когда достаточно просто взглянуть глазами на схему платы. Конечно, документация к CF и исходники XTIDE BIOS мне тоже помогли. В процессе переписывания драйвера в момент, когда я наконец-то разобрался с адресами, и драйвер стал идентифицировать устройство, я умудрился несколько раз испортить корневой раздел, но спасали бэкапы и Linux, который до сих пор поддерживает старую добрую MINIX FS.

Как итог: старый MINIX прекрасно себя чувствует на старой же машине с 16-bit разрядностью и 1 MB памяти, при этом позволяет выходить во внешний мир с помощью telnet и ftp и поддерживает мультизадачность. Сейчас я ковыряюсь с httpd сервером, который уже скомпилировался и запускается, но пока возвращает только 403 и 404 (причём делает это он секунд за пять, если не медленнее). Остались ещё мелкие недочёты по типу не работающего SIGTERM по Ctrl-C и мигающего сразу в двух экранах курсора (это сбивает с толку, потому что не знаешь, на какой экран сейчас перенаправлен ввод). Из глобального хочется сделать frame buffer хотя бы для VGA, а то и для обоих мониторов (попробовать видеокарту ATI в режиме Hercules). Другая возможная ветка развития — создание дистрибутива для старых компов и эмуляторов типа даже pcjs.org, чтобы у энтузиастов была возможность попробовать настоящий UNIX на своём ретро железе.

P.S. Да, чуть не забыл. На фото на левом мониторе telnet на какую-то из BBSок, на правом — стандартные UNIX команды и вывод кусочка ядра на экран.

>>> Просмотр (4000x3000, 4288 Kb)

 , , ,

luke
()

Переехал на кучу утилит переписаных на Rust

Форум — Talks

Тег «угадай автора по заголовку».

Q: Зачем?

A: Ради эксперимента, повысится комфорт пользования терминалом или нет.

Q: Причем тут Rust?

A: Ни при чем, но из-за нативности и отсутствия GC на нем толпа людей побежала переписывать что ни попадя. С таким же успехом можно было бы и npm install, но тормозило бы. Ближе opam install или go get

Теперь мой терминал по истине свистит и пердит. Даю список если кому надо.

  • alacritty - GPU ускоренный терминал.
  • alias cat=bat- cat с хорошей подсветкой синтаксиса и нумерацией строк и пейджером.
  • broot - навигатор по каталогам, который одновременно показывает дерево, но адекватно себя ведет с громадными каталогами, показывая их по чуть-чуть.
  • dust - утилита для исследования места занимаемого каталогами, сортирует деревья файлов начиная с самых больших каталогов.
  • alias ls="exa -l --group-directories-first" ls с хорошими дефолтами, tree встроено.
  • rip Утилита для удаления файлов с разными удобными фичами и восстановлением
  • hors "How do I parse float in javascript?" - находит короткий ответ в интернетах и отвечает. Чуть лучше работает чем оригинал - howdoi.
  • mdcat - cat для Markdown, для отображения удобочитаемой формы документа. Ссылки делает сносками.
  • alias grep=rg - очень быстрый и удобный grep
  • starship - shell command prompt, показывает кучу полезной информации в зависимости от контекста, например git branch если в репозитории, версии софта и ЯП если в каталогах с сорцами, hostname если зайти по ssh.
  • tokei - сборщик статистики по ЯП и строкам кода в деревьях исходников.
  • hyperfine - бенчмарк утилита, time на стероидах.
  • tldr- сокращенная версия man, показывает как чем пользоваться в примерах, а не выдавая полную справку. Страницы поддерживаются сообществом для громадного количества утилит. Изначальный проект - https://tldr.sh/
  • topgrade - универсальная утилита обновления. При запуске пытается обновить все что видит - системные пакеты, vim пакеты и так далее.
  • runiq - быстрый sort | uniq с разными алгоритмами внутри.
  • fd - быстрый и удобный find, удобно чтобы не вспоминать заковыристые ключи
  • fselect - поисковик файлов с SQL-like языком запросов
  • sd - как sed, только интуитивный
  • i3status-rs - Сразу i3status+i3blocks. Плюс батарейки к i3blocks, которые как я понял автор решил убрать.
  • onefetch - Вроде neofetch, но для сорцов. Просто запустите эту штуку с корня любого git репа, клонированого локально
  • wasmtime - JIT runtime для WASI стандарта. Пускалка WebAssembly приложений.
  • scriptisto - «shebang-интерпретатор» для компилируемых языков, прозрачно собирает и кеширует нативные сборки кода

Что не зашло совсем

Все вышеперечисленое ставится через cargo install <package_name> (кроме alacritty), название смотрите на страницах. Сам cargo и Rust ставятся через

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

P.S. Призываю остальных взять ЯП вашей секты и поставить такой эксперимент и отписаться. Да-да, расскажите как вы пользовались ls на Java. Пользователей emacs прошу не беспокоить

 , , ,

vertexua
()

Вышел открытый клиент Ultima Online OrionUO на Linux/MacOS

Новости — Игры
Вышел открытый клиент Ultima Online OrionUO на Linux/MacOS
Группа Игры

Открытый клиент Ultima Online OrionUO готов под MacOS и Linux, спустя 21 год мы можем запустить нативный Ultima Online на Linux и MacOS! С дополнительными плюсами вроде 60+ фпс и изменения размера окна.

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

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

 , , , ultima online,

sharabdin
()

Realtime раздел у XFS. Файлы отдельно, inode'ы отдельно.

Форум — Admin

Уважаемый pon4ik, поднял недавно тут тему как сделать так, чтобы «ФС ... хранила бы метаданные на одном диске, а сами данные на втором. Т.е. пока происходят всякие listdir и fstat не было обращений к харду и он мог сладко спать.»

Я вспомнил, что об XFS слышал подобное, быстро нагуглил пару ссылок про realtime раздел и кинул в коментариях. Но так-как я XFS-boy, то полез смотреть как оно реализовано. Рапортую). Realtime раздел у XFS — это дополнительный раздел на который пишутся только данные (не inode'ы и не лог — первые пишутся на основной раздел, вторые или на него же или на отдельный раздел, если указать). Соответственно можно вынести данные в больших файлах с последовательным доступом на один раздел, а все IOPS'затратные операции на другой раздел на SSD или даже в оперативке (если сохранность данных нужна только до перезагрузки, бывает такое).

Как реализовать:

mkfs.xfs -r rtdev=/dev/sdb /dev/sdc
или
mkfs.xfs -l logdev=/dev/sdd -r rtdev=/dev/sdb /dev/sdc

Где:
/dev/sdb — realtime раздел (только файлы и только если об этом «попросить», об этом ниже)
/dev/sdc — основной раздел (файлы, inode'ы, log)
/dev/sdd — раздел для log'а ФС

Лог раздел имеет ограничение по размерам. Поэтому легче его не выносить, учитывая что мы и так выносим от «главного» раздела файлы.

Далее монтируем:

mount -o rtdev=/dev/sdb /dev/sdc /mnt
или
mount -o logdev=/dev/sdd,rtdev=/dev/sdb /dev/sdc /mnt

Как заставить систему писать файлы на realtime раздел? Есть 3 варианта:

  • 1. Опция
    mkfs.xfs -d rtinherit=1
     — это недокументированная опция, которая говорит, что на созданной ФС все файлы будут писаться на Realtime раздел.
  • 2. Команда
    xfs_io -c "chattr +t" /mnt/
     — ставит на директорию атрибут «realtime inheritance». Все файлы созданные после этого в директории будут записаны в rt раздел. Атрибут можно ставить на директорию в которую примантирована ФС (и даже на ней атрибут сохраняется после перемонтирования).
  • 3. Команда
    xfs_io -c "chattr +r" /mnt/file_name
     — ставит на файл атрибут «the realtime». Файл должен быть создан пустым для этого (touch /mnt/file_name подходит).

Какова стабильность решения? После обсуждения год назад патчей для realtime разделов (подробнее тут: https://patchwork.kernel.org/patch/9933237/ ), началось активное тестирования этого функционала в XFS, были исправлены несколько багов, а в xfstests добавлен функционал по тестированию ФС с realtime разделом.

 , , , ,

chaos_dremel
()

Динамические библиотеки, конспект

Форум — Development

Привет. Так вышло, что пришлось основательно разобраться в теме и пока память свежа изложил всё в виде небольшой памятки. Удобно по прошествии некоторого времени освежить память прочитав небольшой конспект. Вообще, по-хорошему, блог что ли какой завести )). Просьба - не флудить, ссылки/комментарии/дополнения по теме приветствуются. ЗЫ: подразумевается, что либы -fpic

1. Утилиты readelf, objdump. Читать man elf, man ld.so. N в именах структор
   подразумевает 32 или 64.
2. Структура ELF файла:
   1. заголовок (смещение 0, struct ElfN_Ehdr). Readelf::ELF Header
   2. program header table (массив struct ElfN_Phdr). Содержит информацию о том
      как отображать секции в память процесса. Readelf::Program Headers
   3. section header table (массив struct ElfN_Shdr). Readelf::Section Headers
3. link_map   
3.1. Загруженные в память модули попадают в список (массив) из struct link_map.
     Списков может быть много, каждый список - "пространство имён". Для
     загрузки модулей в неглобальный список (создание нового) используется
     dlmopen().
3.1. Получать link_map модуля через dlinfo() или dladdr1():
     [--code--]
     #define _GNU_SOURCE
     #include <link.h>
     #include <dlfcn.h>
     #include <stdio.h>
     int main()
     {
        static char addr_in_mod;
        Dl_info __info;
        struct link_map *lm;
        if(dladdr1(&addr_in_mod, &__info, (void*)&lm, RTLD_DL_LINKMAP) != 0) {
           printf("link_map:\n");
           struct link_map *i = lm;
           for(; i->l_prev != NULL; i = i->l_prev);
           for (; i != NULL; i = i->l_next)
              printf("addr diff=%p  name=%s%s",(void*)i->l_addr,  i->l_name, i==lm?"  <--cur\n":"\n");
        }
     }
     //output:
     //link_map:
     //addr diff=0x41f000  name=  <--current module
     //addr diff=0xb7fc4000  name=linux-gate.so.1
     //addr diff=0xb7fa3000  name=/lib/libdl.so.2
     //addr diff=0xb7dc5000  name=/lib/libc.so.6
     //addr diff=0xb7fc6000  name=/lib/ld-linux.so.2
     [/--code--]
3.2. Во время переразмещений символ ищется в модулях указанных в link_map
     списке начиная от начала списка т.е. порядок важен, "gcc -ls1 -ls2"
     libs1.so находится в списке раньше, чем libs2.so.
3.3. При добавлении библиотеки через LD_PRELOAD, она попадает перед остальными
     разделяемыми библиотеками в глобальном link_map списке.
3.4. Опция RTLD_DEEPBIND для dlopen - собственные символы модуля приоритетнее
     символов из вышестоящих в link_map списке модулей.
     Собственные символы загружаемой библиотеки содержат:
      1. символы из самой загружаемой библиотеке
      2. символы из библиотек, которые были слинкованы с загружаемой из
         командной строки (у первых приоритет выше).
3.5. При загрузки через dlopen, библиотеки добавленные с флагом RTLD_GLOBAL
     имеют приоритет над RTLD_LOCAL, не смотря на то, что находятся в link_map
     списке позже (не относится к получению void f() через dlsym()). Например:
     [--code--]
     // предоставляет void f(), ссылается на void f().
     dlopen("lib1.so", RTLD_LOCAL);
     // предоставляет void f().
     dlopen("lib2.so", RTLD_GLOBAL);
     // при ленивом переразмещении, lib1.so будет ссылаться на lib2.so::f().
     [/--code--]
4. RTLD_GLOBAL - символы из загруженного модуля будут участвовать в
   переразмещениях для заргуженных в дальнейшем библиотек. RTLD_LOCAL - не будут.
   Если lib2.so линкуется с lib1.so через командную строку
   "gcc -fpic -shared -l2 s.c -o lib1.so", то видимость символов из lib2.so
   наследуется от видимости символов из lib1.so:
   [--code--]
   dlopen("./lib1.so", RTLD_LAZY|RTLD_GLOBAL);    // символы из lib2.so глобальные
   dlopen("./lib1.so", RTLD_LAZY|RTLD_LOCAL);     // символы из lib2.so локальные
   [/--code--]
   Если lib2.so подгружается из lib1.so через dlopen(), то видимость символов
   из lib2.so контролируется флагом dlopen() при загрузке lib2.so. Способ
   загрузки (через командную строку или dlopen) и флаг для dlopen при
   загрузки lib1.so значения не имеет.
5. Переразмещение (relocation).
5.1. Переразмещение - процесс соединения символьной ссылки с символьным
     определением.
     Переразмещение: ленивое - загрузчик вызывается при ссылке на символ, и
     ненеленивое - переразмещение при загрузке. Переразмещение переменных всегда
     неленивое.
5.2. Символы, требующие переразмещения, содержатся в .rel... секциях. В них
     находятся ElfN_Rel структуры.
     [--code--]
     typedef struct {
         Elf32_Addr r_offset;    \\ адрес внесения правки (адрес в GOT, например. readelf::Offset).
         uint32_t   r_info;      \\ содержит тип переразмещения и индекс в таблице символов (массив Elf32_Sym[]).
     } Elf32_Rel;
     typedef struct {
         uint32_t      st_name;   \\ индекс в таблице строк. Т.е. сопостовляет символ с Си строкой.
         Elf32_Addr    st_value;  \\ адрес символа в текущем модуле (readelf::Sym.Value).
         uint32_t      st_size;
         unsigned char st_info;
         unsigned char st_other;
         uint16_t      st_shndx;
     } Elf32_Sym;
     [/--code--]
5.3. Механизм обращения к переменным (требующим переразмещений):
     1. линкер на старте правит .got секцию, она начинает указывать на нужные
        данные.
     2. ссылка на переменную в коде (в .text секции):
          [--code--]
          call   44c <__x86.get_pc_thunk.ax>  # получаем в eax адрес следующей инструкции
          add    $0x1bcb,%eax                 # в eax адрес .got секции
          mov    0x14(%eax),%edx              # отступ от края .got на адрес переменной,
                                              # разыменовываем в edx
          [/--code--]
5.4. Механизм обращения к функциям, для пример - exfn():
     1. ссылка на exfn() в коде (в .text секции)
     2. переход на "трамплин" в .plt секции - plt@exfn()
     3. переход на разыменованный указатель из .got.plt, если переразмещение
        уже было произведено, то попадаем на exfn(), иначе:
        3.1. возврат в plt@exfn(), в стек кладётся смещение в .rel.plt
             секции Elf32_Rel структуры и указатель на link_map список
        3.2. вызов ld.so, правится указатель в .got.plt
        3.3. переход на exfn().
6. .dynamic секция может быть прочитана из программы через массив _DYNAMIC[],
   который содержит struct ElfN_Dyn, автоматически заполняется линкером.
7. Экспортируемые символы из elf модуля указываются в .dynsym секции.
8. -rdynamic опция линкера (для исполняемого ELF) - символы из exe, которые не
   были востребованы библиотеками, указанными в командной строке, не
   экспортируются (не указываются в .dynsym секции) и не участвуют в
   переразмещениях в библиотеках, которые подргружаются через dlopen. Данная
   опция заставляет линкер помещать в таблицу все функции.
9. Управление экспортом из модуля
   * Управление экспортом по умолчанию:
     gcc -fvisibility=default
     -fvisibility=hidden
     -fvisibility=internal
     -fvisibility=protected
   * Управление экспортом посимвольно:
     __attribute__ ((visibility ("hidden")));
     __attribute__ ((visibility ("hidden")))
   * Для группы:
     #pragma GCC visibility push(hidden)
     ...
     #pragma GCC visibility pop
   * static и анонимные namespace
   * Управление эспортом через export map, через опцию --version-script

 , , ,

pavlick
()

Заметки по OpenMW (не) для начинающих

Форум — Games

Девять лет назад anonymous просил посоветовать ему RPG и в той теме с ответами про MorrowinD + TribunaL + BloodmooN отметились Gary, abraziv_whiskey поэтому кастую их сюда.

За прошедшее время игра не утратила своей теплоты и ламповости а коричневые тарелки всё ещё продолжают служить. Однако внешний вид, угловатые модели, текстуры привет из 90х… Всё это заставляет сразу же вытекать глаза.

В общем примерно два года назад я начал приводить в порядок свой набор плагинов из MorrowinD и актуализировать под OpenMW и эта работа всё ещё продолжается а пока что я решил поделится со всеми желающими тряхнуть стариной и, по возможности, избежать проблемы вытекших глаз на первой же минуте игры.

Хозяйке на заметку:

  • в OpenMW запилили замечательную фичу и плагины наконец-то можно (и нужно!!!) хранить по разным директориям а не сваливать всё в общую помойку как это было в оригинальном MorrowinD.
  • OpenMW поддерживает много новых фич и по сути всё вместе взятое это morrowind graphics extender из коробки.
  • OpenMW не поддерживает morrowind code patch и соответственно всё что на нём основано.
  • официальные дополнения: TribunaL, BloodmooN а так же все официальные плагины работают без проблем. А об остальных есть замечательная страница в их wiki.

MorrowinD + TribunaL + BloodmooN в OpenMW на данный момент можно пройти. Это вам пишу я набравший Высоким Эльфом 61 уровень и занявший пост главы: Великого Дома Редоран, Великого Дома Теливании, Великого Дома Хлаалу, Гильдии Магов, Гильдии Бойцов, Гильдии Воров, Храма, Мораг Тонг… и за одно всех остальных в какие только возможно было вступить и хоть что-то пройти и занять ;) успевший упокоить Дагот Ура и конченную, на всю её больную голову, Альмалевсию а в данный момент покоряющий неприветливый Солстхэйм.

Исходя из всего этого надеюсь понятно для чего я и затеял эту актуализацию.

Что за плагины я собирал?

Кратко говоря здесь нет: автоматов калашникова, летающих домов, новых читерских расс, читерского шмотья и прочего контента коренным образом меняющего игровой баланс. Всё немного разбавлено новыми квестами и в целом мир стал интереснее, красивее и живее.

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

Все плагины внимательно отсортированы и разбиты по категориям. Так-что в случае неких проблем выявлять виновников неприятностей и конфликтов можно элементарно. Практически все плагины, за исключением официальных, снабжены ссылками на их источник см ReadMy.txt и, при желании, повторить сборку у любого не составит труда. А переделывать на свой вкус, дополнять и изменять ещё проще так что если будут желающие добро пожаловать.

Сразу скажу - выложить всё это в сеть/облако в данный момент я не могу из-за отсутствия интернета. Да и не понятны моменты с лицензиями многие из которых в явном виде содержат запрет на размещение на сторонних ресурсах.

~/.config/openmw/openmw.cfg, измененные настройки в ~/.config/openmw /settings.cfg относительно стандартных /etc/openmw/settings-default.cfg, полный список использованных плагинов ~/.local/share/openmw/plugins/ReadMy.txt

Травяной мод от vurt`s groundcover II требует Morrowind Graphics Extender который не поддерживается OpenMW однако на их форуме публиковали фикс.

Сами файлы данных оригинального MorrowinD + TribunaL + BloodmooN живут в ~/.local/share/openmw/data Их объём:

du -hs ~/.local/share/openmw/data
1,6G    ~/.local/share/openmw/data

Плагины соответственно в ~/.local/share/openmw/plugins И вот чтобы вы просто могли хоть немного представить себе о чём идёт разговор:

du -hs ~/.local/share/openmw/plugins
7,3G    ~/.local/share/openmw/plugins

Структура директории с плагинами выглядит вот так ~/.local/share/openmw/plugins

О чём я ещё забыл написать? Ах да играю я на интегированной intel вместо нормальной графической карты. Все настройки проверены и оптимизированы под штеуд а на графике помощнее смело можно выкручивать и побольше. Задавать framerate limit есть смысл поскольку на открытых пространствах он стремится к заданному значению а в закрытых может и значительно его превосходить если он не задан.

 ,

init_6
()

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
()

Вышел Clasp 0.4

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

20 ноября вышел в свет Clasp 0.4 — новый релиз, включающий в себя совершенно новый компилятор, способный генерировать до 200 раз более быстрый код, чем его предшественник, так же улучшено взаимодействие с C++ и теперь реализация полнее соответствует стандарту ANSI Common Lisp.

Clasp — новая реализация Common Lisp с упором на легкое взаимодействие с библиотеками C++, используя LLVM для компиляции в нативный код, с целью использования большого количества существующих библиотек и программ. Встраивание их в среду Common Lisp'а позволяет воспользоваться быстрым прототипированием, инкрементальной разработкой и другими возможностями, делающими Common Lisp столь мощным языком.

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

  • Совершенно новый, оптимизирующий/встраивающий (inlining) компилятор — cclasp! (небольшое сравнение с C++ / SBCL / Python)
  • Значения типов fixnum, character и single-float теперь представлены напрямую.
  • Указатели на объекты и cons-ячейки теперь тегируются для скорости.
  • Библиотека Clbind позволяет программистам выставлять наружу внешние C++-библиотеки.
  • Множество исправлений ошибок и улучшений.

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

 , clasp, , ,

loz
()

«Rust by Example» и «Rust for C++ programmers»

Форум — Development

Привет лор. Это опять я и опять с Ржавчиной, точнее с парочкой ссылок по этой теме :) .

http://rustbyexample.com - изучение языка на основе очень коротких примеров с минимумом комментариев (очевидно влияние gobyexample.com).

Rust for C++ programmers - постепенно растущий цикл статей для С++ программистов.

На данный момент 7 статей:

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

P.S.: и между делом упомяну, что все-таки решили добавить оптимизацию хвостовых вызовов, но уже после выпуска стабильной версии:

Rust, tail call optimization (комментарий)

 

ozkriff
()

Посоветуйте motherboard с сокетом AM3+ и ценой до 100$

Форум — Linux-hardware

Требования:
1. поддержка не менее 16 Гб ОЗУ
2. 4 слота под ОЗУ
3. Отсутствие UEFI

Очень хочется ещё и поддержку coreboot.

Кастую XVilka

P.S. Смотрел Asus M5A88-M, но пишут люди, что северный мост ужасно греется, приходится даже дополнительный маленький кулер на него ставить, и сама плата какая-то хрупкая. Как там с коребутом - не знаю. Однако, это наиболее привлекательный вариант пока что.

UDP: сейчас смотрю на ASRock 970 Extreme4, так как оказалось, что вышеприведённую серию материнок от Асуса ругают все, кому не лень

Chaser_Andrey
()

Почему иксы надо закопать

Форум — Talks

Как задолбало смотреть на деградантов, агитирующих сидеть на иксах. Для тех, кто хоть немного разбирается в современных GPU - иксы это дикость. Это такое же legacy как терминалы в ядре.

Так получилось, что пока SGI со товарищи занимались ИБД, и надували щеки - вот прям также, как местные ололо, «разбирающиеся в архитектуре иксов», компания микрософт день и ночь думала о том, как сделать графику быстрее. И поэтому майкрософт(а не красноглазые) придумали шейдеры. Поэтому они придумали стандарт на API для ускорения видео. Микрософт а не «опенсорс сообщество» задает направление развития графики.

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

А опенсорс идет по остаточному принципу. И главным образом благодарить за это вы должны сраные иксы.

Видите ли, пока микрософт сокращало и упрощало путь от «знаю что рисовать» до железа в линупсе городили, городили, и городили. В седьмой винде приложение создает «адаптер», из него создает «видео-девайс» и настраивает его и начинает скармливать ему GOPы. на выходе оно имеет surfacы, которые можно поставить в очередь «на экран», забрать себе обратно или в текстуру превратить. В ядре только «минипорт» - штука которая умеет готовые пакеты команд скормить в драйвер. Всё. Никаких иксов здесь не задействовано.

То же самое и для 3д: есть api, есть драйвер, есть минипорт. На выходе получаешь surfacы. Их можно поставить в очередь отрисовки(flip queue) откуда их будет подбирать DWM и собирать в окошки.

И то же самое для 2Д. каким надо быть идиотом, чтоб городить всякие XAA/EXA/UXA/XAXAXA вместо того, чтоб дать приложению самому отправлять команды на gpu. Там есть полная поддержка всей графики-2д 3д и видео. тот же интелоGPU можно проинструктировать программой, и он сам будет отдавать команды на blit-функцию, рисовать градиенты, глифы печатать, и кривые малевать.

Вот ровно то же самое делает wayland. он подбирает surfacы из flip queue и собирает их в картинку.

Никакого геморроя с bumblebee и прочими костылями для убогих иксов: surfacы которые видит интегрированное видео - они в памяти. mmapнул памяти, занес ее в GTT интеграшки - есть окно. открыл драйвер мегаgpu, занес в его GTT ту же область. все работает. gpu рисует и блитит, интеграшка под чутким руководством оконного манагера собирает и показывает.

Я думаю, иксмены понимают, что их аргументы «за иксы» - это полный бред. Они отлично понимают, что wayland проще и меньше жрет ресурсов. Они отлично понимают, что рисовать можно и без иксов, и даже удобнее, т.к. нет самодельных проблем с несколькими видяхами. И даже их сетевая прозрачность проигрывает RDP по всем параметрам: флешки звук и даже скорость.

Эти деграданты просто идут на принцип. Все они понимают, поэтому как полоумные повторяют про «сетевую прозрачность»: видят, что ничего больше в активе нет.

 ,

ckotinko
()