EDC-устройство для сисадмина: Linux в кармане

У каждого админа, пожалуй, был случай, когда что-то внезапно ломается, а ты где-нибудь в дороге: едешь на машине, садишься на поезд или, банально, сидишь где-то на скамейке в парке и срываться и куда-то нестись желания нет ни малейшего. А чинить надо. Или, как минимум, оценить масштабы пришедшего белого пушного зверька.

Понятно, что можно обойтись смартфоном или планшетом, особенно если нужно только зайти по ssh. Но пользоваться в таких случаях тачскрином, как по мне, — это боль и страдания.



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

Немножко воспоминаний и рассуждений


Кому лень читать, можно сразу перейти к практической части.

В свое время, когда андроидов и айфонов еще не существовало, для подобных вещей я использовал «интернет-планшет» Nokia N810. Аппарат габаритами с современный смартфон, имеющий при этом qwerty-клавиатуру да еще и с полноценным линуксом на борту. Ssh, vnc, rdesktop — да не вопрос! Плюс, активно пользовался CAS Maxima, когда нужно было что-то по-быстрому обсчитать и показать результат.





Но время шло, стали появляться андроид-сматрфоны. Вот оно, думал я: практически полноценный же линукс, при этом, нет нужды носить с собой еще один девайс, чтобы раздавать Интернет. Стал присматривать аппарат с qwerty, который заменил бы мне старую-добрую n810, к тому времени уже изрядно подуставшую (шлейф экрана, два раза замененный аккумулятор, клавиатура, побитый корпус). Выбор пал на Motorola Milestone.

Вот оно, поделие, рядом с моим старым-добрым Palm V и N810:



Надо сказать, что изделие доверия не оправдало. Клавиатура оказалась полным разочарованием. Даже не из-за раскладки, а из-за крайне низкого качества изготовления: после полугода использования, она начала отслаиваться и болтаться.

Шифрованный загрузчик добавлял своих гвоздей в гроб: невозможность использовать кастомное ядро со всеми вытекающими, debian chroot из-за особенностей питания жрал батарейку как не в себя, но все равно, худо-бедно изделие решало возложенные на него задачи.

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


Кончила свои дни моторолка весьма брутально: отправившись в очередной мертвый фриз во время звонка, она была разбита об стену.

Окей, как ssh-терминал сойдет и смартфон (сожрет, конечно, какое-то количество ваших нервных клеток). Но бывают случаи, что надо прицепиться к какой-нибудь железке консольным кабелем, или снять tcpdump'ом неизветсный IP устройства, дабы что-то с ним можно было сделать.

Просто феерично, когда из-за наличия COM-порта на док-станции, человек тащит с собой здоровенную 17" HP-шную дуру с доком и полуторакилограммовым блоком питания, а потом еще и висит со всем этим добром на стремянке перед стойкой.

В последнее время, я использовал 12" ThinkPad x220 с usb2com переходником. Но все чаще и чаще стал оставлять ноут дома, пока однажды (в очередной раз) не случилось "$username, все сломалось!", а при себе только смартфон на андроиде.

Вот она, рыба моей мечты (на самом деле, нет)


И наткнулся я, однажды, на изделие под названием GPD Pocket. Полноценный ноутбук в форм-факторе пересмартфона или недопланшета. 7", qwerty-клавиатура, приличный запас автономности — ух, надо брать. Заказал, получил, распаковал.

Для сравнения с х220 и n810:



Характеристики расписывать не буду, кому надо — найдет в Интернете, тем более, был тут недавно приторный обзор от гирбеста. Просто приведу выхлоп lshw и lspci:

lshw:

Скрытый текст
    описание: Настольный компьютер
    продукт: Default string (Default string)
    производитель: Default string
    версия: Default string
    серийный №: Default string
    разрядность: 64 bits
    возможности: smbios-3.0 dmi-3.0 vsyscall32
    конфигурация: boot=normal chassis=desktop family=Default string sku=Default string uuid=00020003-0004-0005-0006-000700080009
  *-core
       описание: Материнская плата
       продукт: Default string
       производитель: AMI Corporation
       физический ID: 0
       версия: Default string
       серийный №: Default string
       слот: Default string
     *-firmware
          описание: BIOS
          производитель: American Megatrends Inc.
          физический ID: 0
          версия: 5.11
          date: 08/07/2017
          размер: 64KiB
          capacity: 4032KiB
          возможности: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int14serial int17printer acpi usb biosbootspecification uefi
     *-memory
          описание: Системная память
          физический ID: 28
          слот: Системная плата или материнская плата
          размер: 8GiB
        *-bank:0
             описание: DIMM DDR3 1066 MHz (0,9 ns)
             продукт: 00000000
             производитель: Hynix Semiconductor
             физический ID: 0
             серийный №: 00000000
             слот: A1_DIMM0
             размер: 4GiB
             разрядность: 8 bits
             частота: 1066MHz (0.9ns)
        *-bank:1
             описание: DIMM DDR3 1066 MHz (0,9 ns)
             продукт: 00000000
             производитель: Hynix Semiconductor
             физический ID: 1
             серийный №: 00000000
             слот: A1_DIMM1
             размер: 4GiB
             разрядность: 8 bits
             частота: 1066MHz (0.9ns)
     *-cache:0
          описание: L1 кэш
          физический ID: 32
          слот: CPU Internal L1
          размер: 224KiB
          capacity: 224KiB
          возможности: internal write-back
          конфигурация: level=1
     *-cache:1
          описание: L2 кэш
          физический ID: 33
          слот: CPU Internal L2
          размер: 2MiB
          capacity: 2MiB
          возможности: internal write-back unified
          конфигурация: level=2
     *-cpu
          описание: ЦПУ
          продукт: Intel(R) Atom(TM) x7-Z8750  CPU @ 1.60GHz
          производитель: Intel Corp.
          физический ID: 34
          сведения о шине: cpu@0
          версия: Intel(R) Atom(TM) x7-Z8750 CPU @ 1.60GHz
          слот: SOCKET 0
          размер: 889MHz
          capacity: 2560MHz
          разрядность: 64 bits
          частота: 80MHz
          возможности: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb pti tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat cpufreq
          конфигурация: cores=4 enabledcores=4 threads=4
     *-pci
          описание: Host bridge
          продукт: Intel Corporation
          производитель: Intel Corporation
          физический ID: 100
          сведения о шине: pci@0000:00:00.0
          версия: 34
          разрядность: 32 bits
          частота: 33MHz
          конфигурация: driver=iosf_mbi_pci
          ресурсы: IRQ:0
        *-display
             описание: VGA compatible controller
             продукт: Intel Corporation
             производитель: Intel Corporation
             физический ID: 2
             сведения о шине: pci@0000:00:02.0
             версия: 34
             разрядность: 64 bits
             частота: 33MHz
             возможности: pm msi vga_controller bus_master cap_list rom
             конфигурация: driver=i915 latency=0
             ресурсы: IRQ:123 память:a0000000-a0ffffff память:80000000-9fffffff ioport:f000(размер=64) память:c0000-dffff
        *-generic:0
             описание: Signal processing controller
             продукт: Intel Corporation
             производитель: Intel Corporation
             физический ID: b
             сведения о шине: pci@0000:00:0b.0
             версия: 34
             разрядность: 64 bits
             частота: 33MHz
             возможности: msi pm cap_list
             конфигурация: driver=proc_thermal latency=0
             ресурсы: IRQ:129 память:a1a3b000-a1a3bfff
        *-usb
             описание: USB controller
             продукт: Intel Corporation
             производитель: Intel Corporation
             физический ID: 14
             сведения о шине: pci@0000:00:14.0
             версия: 34
             разрядность: 64 bits
             частота: 33MHz
             возможности: pm msi xhci bus_master cap_list
             конфигурация: driver=xhci_hcd latency=0
             ресурсы: IRQ:121 память:a1a00000-a1a0ffff
           *-usbhost:0
                продукт: xHCI Host Controller
                производитель: Linux 4.15.0-rc7-stockmind-gpdpocket xhci-hcd
                физический ID: 0
                сведения о шине: usb@1
                логическое имя: usb1
                версия: 4.15
                возможности: usb-2.00
                конфигурация: driver=hub slots=7 speed=480Mbit/s
              *-usb:0
                   описание: Клавиатура
                   продукт: Gaming Keyboard
                   производитель: SINO WEALTH
                   физический ID: 2
                   сведения о шине: usb@1:2
                   версия: 1.00
                   возможности: usb-1.10
                   конфигурация: driver=usbhid maxpower=100mA speed=1Mbit/s
              *-usb:1
                   описание: Типовой USB-накопитель
                   продукт: BCM2045A0
                   производитель: Broadcom Corp
                   физический ID: 3
                   сведения о шине: usb@1:3
                   версия: 1.12
                   серийный №: B0F1ECED56A9
                   возможности: usb-2.00
                   конфигурация: driver=btusb maxpower=100mA speed=12Mbit/s
           *-usbhost:1
                продукт: xHCI Host Controller
                производитель: Linux 4.15.0-rc7-stockmind-gpdpocket xhci-hcd
                физический ID: 1
                сведения о шине: usb@2
                логическое имя: usb2
                версия: 4.15
                возможности: usb-3.00
                конфигурация: driver=hub slots=6 speed=5000Mbit/s
        *-generic:1
             описание: Encryption controller
             продукт: Intel Corporation
             производитель: Intel Corporation
             физический ID: 1a
             сведения о шине: pci@0000:00:1a.0
             версия: 34
             разрядность: 32 bits
             частота: 33MHz
             возможности: pm msi bus_master cap_list
             конфигурация: driver=mei_txe latency=0
             ресурсы: IRQ:130 память:a1900000-a19fffff память:a1800000-a18fffff
        *-pci
             описание: PCI bridge
             продукт: Intel Corporation
             производитель: Intel Corporation
             физический ID: 1c
             сведения о шине: pci@0000:00:1c.0
             версия: 34
             разрядность: 32 bits
             частота: 33MHz
             возможности: pci pciexpress msi pm normal_decode bus_master cap_list
             конфигурация: driver=pcieport
             ресурсы: IRQ:117 память:a1000000-a14fffff
           *-network
                описание: Беспроводной интерфейс
                продукт: BCM4356 802.11ac Wireless Network Adapter
                производитель: Broadcom Corporation
                физический ID: 0
                сведения о шине: pci@0000:01:00.0
                логическое имя: wlp1s0
                версия: 02
                серийный №: b0:f1:ec:ed:56:a8
                разрядность: 64 bits
                частота: 33MHz
                возможности: pm msi pciexpress bus_master cap_list ethernet physical wireless
                конфигурация: broadcast=yes driver=brcmfmac driverversion=7.35.180.119 firmware=01-1a5c4016 ip=192.168.1.142 latency=0 multicast=yes wireless=IEEE 802.11
                ресурсы: IRQ:125 память:a1400000-a1407fff память:a1000000-a13fffff
        *-isa
             описание: ISA bridge
             продукт: Intel Corporation
             производитель: Intel Corporation
             физический ID: 1f
             сведения о шине: pci@0000:00:1f.0
             версия: 34
             разрядность: 32 bits
             частота: 33MHz
             возможности: isa bus_master cap_list
             конфигурация: driver=lpc_ich latency=0
             ресурсы: IRQ:0

lspci:

Скрытый текст
00:00.0 Host bridge: Intel Corporation Device 2280 (rev 34)
00:02.0 VGA compatible controller: Intel Corporation Device 22b0 (rev 34)
00:0b.0 Signal processing controller: Intel Corporation Device 22dc (rev 34)
00:14.0 USB controller: Intel Corporation Device 22b5 (rev 34)
00:1a.0 Encryption controller: Intel Corporation Device 2298 (rev 34)
00:1c.0 PCI bridge: Intel Corporation Device 22c8 (rev 34)
00:1f.0 ISA bridge: Intel Corporation Device 229c (rev 34)
01:00.0 Network controller: Broadcom Corporation BCM4356 802.11ac Wireless Network Adapter (rev 02)

Качество сборки хорошее, ничего не люфтит, не скрипит, не прогибается. Корпус алюминиевый и вообще, девайс производит впечатление эдакого монолитного блока. Это плюс.

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

Второе — это клавиатура. То, что она есть — это замечательно.



А вот то, как реализована — это стыд и ужас. Попытка закоса под макбук, с этими здоровенными промежутками между кнопками — ну зачем? Ведь целевая аудитория, вроде бы, не гламурные кисы — те просто возьмут очередной айпед или макбук. Не будь этих несчастных промежутков, размер клавиш можно было сделать больше.

Кнопочка Fn имеет весьма скудный слой: это 2 кнопки регулировки яркости, F1-F12 и Insert. Зачем нужен верхний ряд? Его можно было реализовать отдельным слоем.

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

Ладно, все плохо, будем лечить, благо есть кое-какие способы (об этом ниже).

Ах да, здесь есть трекпоинт. Что мне, как пользователю ThinkPad'ов со стажем, греет душу. Только вот одно но: трекпоинт расположен совершенно не в том месте и для того, чтобы им воспользоваться, придется выгибать большой палец. Это, к сожалению, неизлечимо. Но за пару дополнительных колпачков красного цвета в комплекте, конечно, спасибо.

Трекпоинт здорового человека:


Трекпоинт курильщика:


Установка и настройка Linux на GPD Pocket


Понятно, что «окна», а «окна10» особенно, мне на данном устройстве не то, что ни к чему, а просто противопоказаны.

Из-за особенностей девайса, таких как ориентация экрана (он повернут набок), просто взять и установить любимый Debian без плясок с бубном не получится.



В принципе, на официальном сайте есть официальный же образ Ubuntu LTS 16.04 (что мне кажется неплохой альтернативой стабильному Debian'у), но ознакомившись с обсуждениями в Интернете, было решено использовать проект GPD Pocket Ubuntu Respin

Подчеркну, в общем-то, очевидную вещь, что для использования годится только образ, построенный на Ubuntu и скормить скрипту, например, Debian, не выйдет:

$./build.sh debian-9.3.0-amd64-netinst.iso
Display setting: Xorg-Standard
Looking for kernel image...
Extracting kernel files...
Archive:  gpdpocket-20180115-kernel-files.zip
  inflating: linux-headers-4.15.0-rc7-stockmind-gpdpocket_4.15.0-rc7-stockmind-gpdpocket-1_amd64.deb
  inflating: linux-image-4.15.0-rc7-stockmind-gpdpocket_4.15.0-rc7-stockmind-gpdpocket-1_amd64.deb
  inflating: linux-libc-dev_4.15.0-rc7-stockmind-gpdpocket-1_amd64.deb
./isorespin.sh: 'debian-9.3.0-amd64-netinst.iso' must be an Ubuntu (or Ubuntu flavour), Linux Mint, neon, elementary, BackBox or Peppermint desktop ISO.

На выходе получаем файл linuxium-xubuntu-16.04-desktop-amd64.iso, который и записываем на флешку:

#dd if=linuxium-xubuntu-16.04-desktop-amd64.iso of=/dev/sdX

Грузимся с нее, выставив загрузочным устройством, зайдя в настройки UEFI кнопкой Delete при загрузке.

Процедура установки тривиальна, детально распысывать смысла не вижу. Отмечу только, что лучше ее производить из Live-режима, так экран не будет повернут набок.

Использую полнодисковое шифрование, на случай, если устройство вдруг будет потеряно или украдено. Так, по крайней мере, все ваши ssh-ключи (да-да, я знаю про защиту их паролем и ssh-agent) и логины на Интернет-ресурсах останутся в целости. Потому, ставлю на LVM поверх LUKS, чего и вам желаю.

Исправляем кривулины


Сон и гибернация


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

Режим сна, вроде как, работает «из-коробки». Реализован он штатными средствами, то бишь через systemctl suspend. Однако, опытным путем, было установлено, что энергопотребление в таком режиме не сильно уступает потреблению в простое. Судя по всему, аппарат просто гасит экран, сетевые интерфейсы и отключает кулер. В итоге, высадит аккумулятор в ноль суток за двое.

Нужна гибернация. Штатная systemctl hibernate оказалась неработоспособной: состояние дампится в своп, но восстановиться при загрузке не может.

Вспомнил, что есть такой проект — Userspace Software Suspend и в репозитарии есть его пакеты.

#apt install hibernate

Проверяем:

#hibernate-disk

Вуаля, работает! Система сдампилась и отключилась. После ввода пароля LUKS, восстановилась. Но накрылись звук и wifi, яркость подсветки экрана сбросилась на максимум. Будем допиливать.

Доустанавливаем нужное


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

Так за регулировку яркости экрана отвечает xbacklight.

#apt install xbacklight

В ноуте не жесткий диск, а флэш-накопитель, потому убивать его свопом мне не хочется. Есть такая штука ZRam, вот ее и будем использовать. Сейчас с этим все просто, прописывать простыни в rc.local не требуется, и нужно, всего-навсего, сделать следующее:

#apt install zram-config
#sudo systemctl enable zram-config.service

Скрипт сам подсчитает нужное количество памяти и сделает swapon.

Как верно напомнили в комментариях, ресурс флеша подъедает не только своп, но и запись логов. Поэтому, /tmp и /var/log вынесем в ram на tmpfs. Для этого допишем в /etc/fstab две строчки:

tmpfs   /tmp         tmpfs   nodev,nosuid,size=256M          0  0
tmpfs   /var/log         tmpfs   nodev,nosuid,size=512M          0  0


Допиливаем acpi


В первую очередь, отключаем systemg'шные обработчики. Так как делает оно все своими средствами, а они неработоспособны. Девиз — делаем все, но делаем плохо. Например, обрабатывать подключение адаптера питания или наушников, нажатия клавиш и тому подобного оно так и не научилось.

Он съел acpid и все еще голоден! (4Mb)

/etc/systemd/logind.conf

HandlePowerKey=ignore
HandleLidSwitch=ignore

#systemctl restart systemd-logind.service

За обработку acpi-событий отвечает демон acpid, конфиг-файлы которого хранятся, внезапно, в /etc/acpi.

Отправлять ноут в гибернацию будем по нажатию кнопки включения. Для этого отредактируем следующие файлы (если их нет, надо создать):

/etc/acpi/events/powerbtn

event=button[ /]power
action=/etc/acpi/hibernate.sh

/etc/acpi/hibernate.sh (с комментариями)

Скрытый текст
#!/bin/bash

#отключаю свой скрипт блокировки экрана, так как при загрузке будет запрошен пароль LUKS
mv /home/user/bin/lock  /home/user/bin/nolock 
#убиваем пшшш-аудио
killall -9 pulseaudio
#отключае zram и активируем swap
systemctl stop zram-config.service
swapon /dev/xubuntu-vg/swap_1
#сохраняем состояние подсветки экрана
DISPLAY=:0.0 su user -c "xbacklight >/tmp/xbl"
#отмонтируем сетевые файловые системы
umount -alt nfs4
umount -alt cifs
#усыпляем wpa_supplicant
/sbin/wpa_cli suspend

hibernate-disk
sleep 2

#восстанавливаем статус подсветки
DISPLAY=:0.0 su user -c "xbacklight -set `cat /tmp/xbl`"
#восстанавливаем wpa_supplicant
/sbin/wpa_cli resume
#перезагружаем модули alsa, иначе звука не будет. пшш-аудио при вызове восстановится самостоятельно
/sbin/alsa force-reload
#звуковая система ноута оставляет желать лучшего. было замечено, что при больших значениях канала DAC1, из динамиков и наушников идет дикий перегруз до хрипоты и дребезжания
amixer -c 1 set 'DAC1' 90%
#убиваем блокировщик экрана на случай, если гибернация была запущена при залоченном экране
killall i3lock
#восстанавливаем возможность запуска блокировщика
mv /home/user/bin/nolock /home/user/bin/lock
#восстанавливаем zram
systemctl start zram-config.service
#отключаем своп на карту
swapoff /dev/xubuntu-vg/swap_1

Автоматическую гибернацию при низком заряде реализовать не просто, а очень просто:

#apt install acpi

/etc/acpi/ifbatlowgotosleep.sh

#!/bin/bash
level=`/usr/bin/acpi -b|sed '/unava/d'|awk -F\  '{ print $4 }'|sed -e 's/,//' -e's/%//'`
if [ "$level" -lt "10" ]
    then
        /etc/acpi/hibernate.sh
    fi

Скрипт проверяет состояние заряда. Если меньше 10%, то выполняет приведенный выше скрипт гибернации.

Периодичное выполнение задается через crontab:

$sudo crontab -e
*/3  *  * * * /etc/acpi/ifbatlowgotosleep.sh 2>/dev/null

В моем случае, опрос батарейки выполняется каждые 3 минуты.

Режим сна (systemctl suspend), как упоминалось выше, довольно бесполезен. Потому, не вижу смысла активировать его при закрытии крышки. Тем более, может возникнуть желание, скажем, послушать музыку с закрытого ноута, находящегося в кармане (не зря же он «pocket»).

Поэтому, просто гасим экран при закрытии и включаем при открытии.

Удаляем /etc/acpi/lidbtn.

Создаем и редактируем:

/etc/acpi/events/lidclose:

event=button/lid LID close
action=/etc/acpi/lidclose.sh

/etc/acpi/events/lidopen:

event=button/lid LID open
action=/etc/acpi/lidopen.sh

/etc/acpi/lidopen.sh

DISPLAY=:0.0 su user -c "xrandr --output DSI1 --off"

/etc/acpi/lidclose.sh

DISPLAY=:0.0 su user -c "xrandr --output DSI1 --auto --rotate right --dpi 200"

Значение DPI выставьте по вкусу, а user — это незамысловатое имя моей учетной записи (поменяйте на свою).

Настраваем клавиши управления звуком и яркостью


Делаем это через все те же acpi-события.

/etc/acpi/events/voldown

event=button[ /]volumedown
action=/etc/acpi/volume-down.sh

/etc/acpi/events/volup

event=button[ /]volumeup
action=/etc/acpi/volume-up.sh

/etc/acpi/events/mute

event=button[ /]mute
action=/etc/acpi/volume-toggle.sh

Скрипты:

/etc/acpi/volume-toggle.sh

amixer -c 1 set 'Speaker Channel' toggle
amixer -c 1 set 'Headphone Channel' toggle

/etc/acpi/volume-up.sh

amixer -c 1 set 'Headphone' 5%+
amixer -c 1 set 'Speaker' 5%+

/etc/acpi/volume-down.sh

amixer -c 1 set 'Headphone' 5%-
amixer -c 1 set 'Speaker' 5%-

Аналогично и для яркости:
/etc/acpi/events/bdown

event=button[ /]brightnessdown
action=/etc/acpi/bdown.sh

/etc/acpi/events/bup

event=button[ /]brightnessup
action=/etc/acpi/bup.sh

/etc/acpi/bup.sh

DISPLAY=:0.0 su user -c "xbacklight -inc 5%"

/etc/acpi/bdown.sh

DISPLAY=:0.0 su user -c "xbacklight -dec 5%"

Напомню, user — имя моей учетки. Впишите свою.

Наушники


Говн^WСвоеобразный чип Realtek ALC5645 не умеет самостоятельно отключать динамики при подключении наушников. Придется научить систему делать это самостоятельно.

В respin есть такой вот скрипт:

Скрытый текст
#!/bin/bash
set -e -u

if [ "$1" = "jack/headphone" -a "$2" = "HEADPHONE" ]; then
    case "$3" in
        plug)
            sink="[Out] Headphones"
            ;;
        *)
            sink="[Out] Speaker"
            ;;
    esac
    for userdir in /run/user/*; do
        uid="$(basename $userdir)"
        user="$(id -un $uid)"
        if [ -f "$userdir/pulse/pid" ]; then
            su "$user" -c "pacmd set-sink-port alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink $sink"
        fi
    done
fi

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

$sudo su
#su user -c "pacmd set-sink-port alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645__sink '[Out] Speaker'"
Нет запущенного демона PulseAudio, либо он не запущен в качестве сеансового демона.

Разгадка проста: когда процесс пшшш-аудио еще не вызван клиентом, связываться pacmd не с чем. Можно, конечно, добавить строчку запуска этого самого в rc.local, xinitrc или вовсе написать отдельный systemg юнит, но я посчитал, что лучше выстругать собственный костыль, чем ремонтировать чужие. И написал свой скрипт, гораздо менее монстроузный и замудренный, я считаю.

/etc/acpi/headphone-jack.sh

#!/bin/bash
set -e -u

if [ "$3" = "plug" ]; then
	amixer -c 1 set 'Speaker Channel' mute >/dev/null
	amixer -c 1 set 'Headphone Channel' unmute >/dev/null
else 
	amixer -c 1 set 'Speaker Channel' unmute >/dev/null
	amixer -c 1 set 'Headphone Channel' mute >/dev/null
fi

Лечим раскладку и прочие мелочи


Как уже упоминал, раскладка меня бесит. Кнопка delete там, где должен быть backslash и bar, двоеточие в нижнем ряду, непонятно для чего вынесенная клавиша menu, tab там, где в нормальных клавиатурах находится escape…

Детально, с разбором, расписывать не буду, просто приведу свой ~/.xmodmaprc и опишу как это все делается.

Для начала, нам нужно отловить кейкод. Делается это с помощью программы xev (#apt install xev, да). Запускаем, нажимаем нужную клавишу и получаем вывод вроде:

KeyPress event, serial 33, synthetic NO, window 0x3200001,
    root 0x2c0, subw 0x0, time 187713326, (979,493), root:(982,1078),
    state 0x0, keycode 119 (keysym 0xffff, Delete), same_screen YES,
    XLookupString gives 1 bytes: (7f) ""
    XmbLookupString gives 1 bytes: (7f) ""
    XFilterEvent returns: False

Нам нужно значение «keycode 119».

Далее, открываем ~/.xmodmaprc и прописываем туда

keycode 119 = backslash bar backslash bar

И вносим выполнение «xmodmap ~/.xmodmaprc» в свой xinitrc или что там у вас вызывается при старте вашего любимого DE или WM.

Мой ~/.xmodmaprc:

Скрытый текст
pointer = 1 2 3 4 5
remove Lock = Caps_Lock
remove Control = Control_L

keycode 0x42 = Control_L
keycode 135 = Alt_R

keycode 0x25 = Super_R
keycode 133 = Super_R

add Control = Control_L

keycode 113 = Left
keycode 111 = Up
keycode 114 = Right
keycode 116 = Down

keycode 110 = Home
keycode 115 = End

keycode	108 = ISO_Next_Group

keycode 136 = ISO_First_Group
keycode 49 = asciitilde grave asciitilde grave
keycode 119 = backslash bar backslash bar
keycode 51 = Delete
keycode 48 = colon semicolon Cyrillic_zhe Cyrillic_ZHE
keycode 47 = apostrophe quotedbl Cyrillic_e Cyrillic_E
keycode 130 = XF86Explorer
keycode 121 = XF86AudioMute
keycode 198 = XF86AudioMicMute

keycode 122 = XF86AudioLowerVolume
keycode 123 = XF86AudioRaiseVolume

keycode 37 = Tab
clear mod5
add mod5 = XF86Explorer

keycode 166 = Prior
keycode 167 = Next

Там используются такие сомнительные, для большинства пользователей, вещи, как перенос ctrl на caps-lock, tab на ctrl_l, alt_gr на menu и переключение раскладки по старому положению altgr.

Еще я использую xcape для эмуляции нажатия escape при однократном нажатии на ctrl_l. Вызывается так:

 xcape -t 1000 -e "Control_L=Escape" 

Так как предпочитаю темные темы оформления, которые более комфортны (имею мнение, хрен оспоришь) в условиях слабой освещенности, но зачастую приходится работать при ярком дневном свете, есть небольшой финт: цвета изображения можно инвертировать. Для этого понадобирся программа xcalib:

#apt install xcalib

Инвертируем:

$xcalib -i -a

Можно забиндить на любой удобный хоткей средствами оконного менеджера. У меня висит на Super_L+Backspace.

Итог


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



От батарейки работает долго, для пробы прокрутил три полуторачасовых фильма при включеном wifi, разрядил где-то наполовину. Заряжается от павербанка с usb-a через переходник a-c.

Все повстречавшиеся софтовые кривулины успешно подлечены.

Очень жаль, что нет порта rj45, но надеюсь, решится заказанным переходником с usb. Отсутствие мобильной связи и камеры, нынче, в условиях тотальной слежки, считаю скорее плюсом.
Поделиться публикацией

Комментарии 78

    +3
    Очень интересное решение, спасибо. Давно хотелось что-то такого размера с полноценным Линуксом, но чтобы без бубна обходиться (мне как не-специалисту по Линуксу). Пока приходится Termux использовать для доступных для него задач.
      0
      Сейчас рынок забит решениями на базе Intel Cherry Trail, приобрел недавно себе digma citi e200 с отстегивающейся клавиатурой, одни положительные впечатления (с оглядкой на стоимость), да windows но есть решения с android и бета ubuntu вроде бы почти полностью работает (глюки со звуком вроде остались).
      +2
      Спасибо, благодаря Вашей статье почерпнул много интересного в плане настройки линукса.
        +6
        Слишком много минусов у устройства. Смотрю на него и плачу, ему бы цену 2 раза скинуть, тогда можно закрывать глаза на недочёты, а за 30к это какой-то шаманский бубен, а не инструмент. Может с выходом второй версии поправят недочёты. Очень хочется карманный x86.
          +2
          Главный минус клавиатура. Точнее, когда понимаешь, что можно сделать гораздо лучше, но эргономика была умышленно принесена в жертву дизайну.

          С другой стороны, все равно удобнее чем тыкать пальцами по тачскрину, а для кратковременного использования пойдет.
            +1
            но эргономика была умышленно принесена в жертву дизайну.

            Тут вопрос открытый, почему сделали так, как сделали. Еще на этапе прототипов девайса, народ плевался на эту клавиатуру и предлагали разработчикам сплагиатить клавиатуру у Sony Vaio P (который не сильно больше размерами, но при этом удобней), но как-то разрабам оказалось пофиг на это дело и они выпустили девайс по принципу "итак сойдет".


            Туда же в минусы можно смело записывать Intel Atom, хотя на тот момент уже можно было воткнуть Intel Core m, у которого проблем с запуском Linux было бы поменьше (сейчас они готовят к выпуска GPD Win2 с таким камнем, а когда ждать апдейта для покета — хз).


            image

              0
              Да, клава на P-шке была недурственная. И трекпоинт на правильном месте. На самом деле, меня бы устроил его, так сказать, ремастер. Но чего нет, того нет.

              Ах да, еще мне категорически не по душе плоские клавиши. Все-таки идеалом ноутбучной клавы считаю thinkpad'овскую. А для pda'шек — клаву psion'a. Тут, кстати, ребята обещают выпустить идеологический наследник псиона — www.indiegogo.com/projects/gemini-pda-android-linux-keyboard-mobile-device-phone#

              Скорей всего тоже прикуплю. Одинаковые смартфоны давно не возбуждают.
                0

                В Gemini разочаровывает Android… все таки он такой себе "полноценный Linux"

                  0
                  Дуалбут с человеческим линуксом обещают.
                    0

                    Судя по видео, уже есть поддержка linux, причем с нормальным дуалбутом:



                    p.s. кстати говоря, судя по всему сейчас можно купить этот GEMINI с датой начала доставки 9 февраля.
                    p.p.s. они еще и раскладку русскую могут напечатать ^^

                      0
                      Выглядит интересно. Но покамест заказывать не буду, два гаджета в месяц — таки перебор.
                        0

                        Через 2 дня обещают цену поднять на 100$… пожалуй стоит прикупить такой EmacsPhone...

                        0
                        Интересно, а есть ли способ в этом девайсе управлять мышкой, используя экран как тачскрин и что бы при двойном тапе срабатывало как ПКМ (Например как это реализовано в MS RDP клиенте на Android)
                          0
                          Подозреваю, что можно. Так как подобную фишку делали программно на Familiar.
                  0
                  del
                0
                Если требуется дешево и c бубнами-танцами, то рекомендую BENQ S6
                  0
                  Вот такое еще есть, с RG45 портом
                  www.techradar.com/reviews/higole-gole1-plus
                    0
                    На indiegogo по 650$ GPD Win 2.
                    0
                    После покупки очередной «лопаты» — Xiaomi Mi Max (экран FHD 6.44"), понял что можно вполне себе админить с его помощью. В основном использую для каких то срочных, не очень сложных задач. Смартфон настолько большой, что без особых проблем для юзабилити и глаз, можно работать в портретном режиме. Это важно если есть необходимость в клавиатуре, а она практически всегда необходима (особенно в SSH). Подключаюсь по SSH, RDP и VNP протоколам.
                      +1
                      >что можно вполне себе админить с его помощью.

                      Можно, как по мне, сложно. Все-таки все эти сенсорные клавиатры — боль и страдания. А учитывая, сколько кнопок нужно нажать в том же connect bot'e, чтобы подключиться… Все-таки возможность набирать десятью пальцами, а не двумя дорогого стоит.
                        +1
                        Использую связку JuiceSSH + Hacker's Keyboard — очень все годно. Напоминаю — в «портретном режиме», т.е. клавиатура практически не заслоняет терминал.

                        Это если аварийно, в движении подключится. Для полноценной работы уже давно не хватает даже ноута, т.к. привык к двум 24" мониторам… В «полях» я работаю не часто.
                          +1
                          >Hacker's Keyboard
                          Я ее тоже использую. Но, повторюсь: возможность набирать десятью пальцами, а не тыкать двумя, при этом не имея тактильного отклика (вибра не в счет) — это оченно хорошо. При том, что габариты не сильно больше среднего планшета.

                          Для полноценной работы также использую парочку мониторов.
                          0
                          Motorola Z (any) + мод с клавиатурой.
                            0
                            Спасибо, но нет. Моторолы я уже наелся.
                          0
                          У меня для консоли Xperia Pro или иногда Nokia E61. С современными как-то не сложилось.
                          –2
                          Антиреклама устройства хорошая получилась, спасибо.
                          Да и смысл в таком огрызке, когда можно взять рюкзак с нормальным 15-ти дюймовым ноутбуком?
                            +1
                            Автор про это написал в самом первом абзаце. Идея в возможности носить с собой машину всегда и везде без лишних сумок-рюкзаков и лишнего веса.
                              0

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

                                +1

                                Фишка этой железяка в том, что её в сумку положил и забыл о её существовании до необходимости… на дне сумки её факт существования особо и не ощущается, в отличие даже от довольно маленьких ультрабуков (хз, может быть MacBook 12 достаточно компактен, чтобы быть незаметным, но у меня лаптоп размером с Air 11 в сумке ощущается, особенно если его он там лежит в довесок к рабочему лаптопу).

                                  0
                                  Но пользоваться этой железкой некомфортно. Это не более, чем игрушка.
                                    0

                                    Могу предположить, что пользоваться им удобней, чем планшетом с аналогичной диагональю. А планшетами 7-8" пользоваться вполне комфортно, не хватает там именно наличия клавиатуры.


                                    з.ы. в свое время пользовался SSH с QWERTY-телефона с экраном 2.8" и не испытывал особого дискомфорта. И было куча людей, кто, например, активно пользовался Psion 5mx… т.ч. насчет "не более, чем игрушка" — очень сопрное заявление.

                                      0
                                      Да, удобней, чем планшетом. Планшет — это девайс для потребления, не более. Написать там какой-то внятный текст, развернутый комментарий, что-то пофиксить по ssh, использовать как консоль для подключения к всевозможному оборудованию — здесь, по всем параметрам, планшет в пролете.

                                      А вот сабж — это-таки вполне хороший и годный инструмент, не смотря на вышеперечисленные недостатки. Это как мультитул, что приведен на фотографии в заключении: понятно, что отдельный, специализированный инструмент будет лучше, но это тот вариант, что всегда с собой и которым действительно можно работать и не материться сквозь зубы.
                              +1
                              >Антиреклама устройства хорошая получилась, спасибо.

                              Всегда пожалуйста. Цель стояла не прорекламировать девайс, а честно рассказать о плюсах и минусах. 15" ноутбук носить — на любителя, я и 12" стал все чаще дома или на работе в док-станции оставлять, так как перестал ходить с рюкзаком или сумкой.
                              +2
                              Не понял, чем оно лучше древнего EeePC или любого современного нетбука за 10 000? 7" против 12?
                                +1

                                Я не автор, но расскажу своё впечатление: раньше тоже любил EeePC в 10-12" версиях, но меня категорически раздражали некоторые вещи — малая автономность, большие габариты и то, что они имеют активное охлаждение и выступают в роли портативного обогревателя. Возможно, были более удачные поздние версии, но 1015T и 1015PD имели все вышеперечисленные недостатки.


                                В прошлом году для того, чтобы "можно было в сумку кинуть на всякий случай" взял хромбук с 11.6" экраном и Intel, в итоге получил полноценный ноутбук с пассивным охлаждением и почти нормальной клавиатурой в комплекте. Держит порядка 6-10 часов — сильно зависит от нагрузки; на Linux, с минимумом специфических настроек. Если задаться целью сэкономить ещё больше заряда, то, полагаю, можно выжать все 12 в "режиме терминала" с новой батареей (моя была 3 года "на полке", так как предыдущий владелец купил его и положил в шкаф после того, как наигрался с Chrome OS).


                                К слову: 1015T до сих пор где-то лежит, в сентябре решил включить его — даже всё обновилось без проблем, ничего не отвалилось из железа по поддержке. Несмотря на вышеозвученные недостатки [для меня], он по-прежнему хорош.

                                  +1

                                  Как вы миритесь с тем, что нет ф1-ф12 на хромбуке?

                                    0
                                    Я б не мирился, а замапил через xbindkeys.
                                      0
                                      В линуксах замаплено ESC-n -> Fn во многих местах по дефолту.
                                        0

                                        Не могу сказать касательно всех моделей хромбуков, поэтому точно могу сказать только по поводу своей (CB3-111, 2014 год).


                                        Верхний ряд физически маркирован как кнопки яркости, звука, "обновить" и так далее, и в ChromeOS они по умолчанию выполняют именно это. В Linux же они отдают "стандартные" сканкоды от F1, F2 и так далее, поэтому даже переназначение не требуется, если это именно "стандартный" Linux (к примеру, в "нестандартном" GalliumOS, ориентированном на замену ChromeOS по UX, функциональные клавиши "из коробки" сделаны как в ChromeOS).


                                        Если говорить про остальные неприятности, касающиеся клавиатуры: надо обязательно править поведение или отключать "Power" (расположен вместо "Delete", за это отдельное спасибо тем, кто это придумал), и привыкать к тому, что вместо "Caps Lock" по факту "Super", а про "Insert" и "Delete" вообще "забыли".


                                        Однако, в целом — клавиатура вполне адекватна для класса "псевдоноутбуков", так как у неё выполняется главный критерий — не перенесены основные кнопки из ANSI раскладки (как иногда переносят "/", "\", ":", "Ctrl" и "~").

                                        0

                                        Кстати говоря, у меня был Asus EEE PC 1000H. С заменой HDD на SSD и установкой расширенной батареи (вес с которой достигал 1.6кг), он держал 5-6 часов с выключенным вайфаем легко.

                                        0
                                        >ем оно лучше древнего EeePC
                                        Тем, что можно нормально посмотреть кинцо в дороге. Тот же ютуб, например. Тем, что запас автономности у gpd весьма приличный. Можно весь день не выключать и не бегать искать розетку. Ну, это пока, по крайней мере. Поглядим, насколько аккум дерградирует, скажем, через полгода.

                                        EeePC у меня был. Дохлая батарейка — это была основная к нему претезния. Ну и не потянет оно современные реалии вебдвануля, ага.
                                          0
                                          У «ежей» были разные комплектации, мой экземпляр имеет толстенную батареищу, выпирающую из корпуса. Её в лучшие годы, да под XP, хватало часов на шесть умеренной, но вполне реальной нагрузки. А вот с вебдванулем всё очень плохо на тех «атомах» и с максимум двумя гигабайтами ОЗУ. Скажем прямо, сейчас это боль.
                                            0
                                            EeePC у меня был. Дохлая батарейка — это была основная к нему претезния.

                                            Вспоминая то время, я тогда пользовался HP Touchsmart tm2, и в то время, как он подыхал, всякие там EeePC 900 (кажется такая маркировка) все еще продолжали работать, не израсходовав и половины заряда.

                                          0
                                          Не…
                                          уж лучше что-то на 11"-14" весом до ~1.5 кг c нормальным экраном и клавиатурой в сумке, чем это.

                                          Благо тут выбор огромный, от «старых» ноутов с ебея (привет Lenovo) и до новых недорогих китайцев на N3450, благо есть с нормальной а не Mac-овской клавиатурой)
                                            0
                                            >уж лучше что-то на 11"-14" весом до ~1.5 кг c нормальным экраном и клавиатурой в сумке, чем это.

                                            Кому как. У меня как раз 12" thinkpad x220 весом чудь больше килограмма.
                                            0
                                            Идете на A**to или Ю*у, покупаете обычный маленький старый ноутбук за копейки, и не надо такого ужаса, пытаясь привести эту поделку в рабочее состояние. Я вот взял x220 за 9000 руб. на Core i5. Доволен очень сильно.
                                              +1
                                              >пытаясь привести эту поделку в рабочее состояние

                                              Почему «пытаясь»? Вполне успешно приведено. Что касается x220, то тот же конфиг acpid у меня там гораздо больше. В основном, тонкая настройка поведения при использовании док-станции (подключение внешних мониторов, подгрузка раскладки для внешней клавиатуры, перемонтирование локационно-специфичных сетевых файловых систем и тому подобного).

                                              Тут я каких-то страшных шаманств не вижу, рядовая, в общем-то, настройка.
                                              0
                                              Использую для этих целей Sony VAIO VGN-P21ZR. Заменил носитель на более ёмкий (128gb), но удручает 2gb ОЗУ…
                                                0
                                                К vaio p я, в свое время, тоже присматривался. Но малая автономка поставила точку на хотелке.
                                                0

                                                Помню был планшет на андроиде Asus Eee Pad Transformer TF101 с полноценной док-клавиатурой вот с ним думаю было бы очень даже.

                                                  0
                                                  Так и сейчас их в избытке но там не так просто воткнуть лин на уефи.
                                                  0
                                                  Расскажите пожалуйста, в чём смысл размещать своп в оперативной памяти? Ведь своп — это продолжение оперативной памяти на диске. Не разумнее ли выключить своп, а освободившуюся оперативную память использовать как оперативную память?
                                                    +2
                                                    Тут используется сжатие, то же lz4. То есть памяти мы отдаем, грубо говоря, гиг, но получаем дополнительно 2-4 за счет большей нагрузки на процессор.
                                                    0

                                                    убивать его свопом мне не хочется
                                                    Почему просто не установить систему без свопа?


                                                    Хоть мне и понятна ваша мотивация — "взять и допилить!", но (имхо) все же планшет с отдельной клавой обладает массой плюсов по сравнению с приведенным девайсом:


                                                    • когда она не нужна — ее можно не доставать
                                                    • можно подобрать любого размера, цвета и раскладки на свой вкус
                                                    • заменяема
                                                      +2
                                                      В принципе, с 8 гигами можно и без свопа обойтись. Но с моей модой держать десятки открытых вкладок в браузере и неделями не закрывать открытые приложения, лучше все-такпи zram.

                                                      Что касается планшетиков с внешней клавой, я не зря во вступлении прилепил фотку. Ну а еще, курица не птица, андроид — не полноценный линукс.
                                                        0
                                                        Между тем, на фото парень держит ноутбук, а не планшет.
                                                          0

                                                          Понятно.
                                                          А как решили вопрос с /var/log?
                                                          Это будет позлее для SSD, чем своп.

                                                            0
                                                            Да также, как и с tmp: вынес на tmpfs.
                                                              0
                                                              /etc/fstab
                                                              tmpfs   /tmp         tmpfs   nodev,nosuid,size=256M          0  0
                                                              tmpfs   /var/log         tmpfs   nodev,nosuid,size=512M          0  0
                                                              


                                                              Как-то так.
                                                          +1
                                                          Был Sharp Zaurus. Жаль что больше нет.
                                                            0
                                                            О да. Очень его хотел, в свое время, но так и не купил.
                                                              0
                                                              только хотел написать, у нас админам выдавали Zaurus с полноценной консолькой и всякими плюшками =)

                                                              картинка
                                                              image
                                                              0
                                                              Использовал для таких целей htc dream вполне себе удобно.
                                                                0

                                                                Главный минус — размер. Смерть рукам и глазам. Это точно девайс для людей, а не котиков?

                                                                  +1
                                                                  Размер — это главный плюс. Если глаза к старости уже не те, да и пальцы растолстели, то не рекомендую брать.
                                                                    0
                                                                    Это и лилипутам будет маловато. Переборщили ребята.
                                                                  0
                                                                  «те не жесткий диск, а флэш-накопитель, потому убивать его свопом мне не хочется. Есть такая штука ZRam, вот ее и будем использовать» — в чем сакральный смысл делать своп RAM в RAM?
                                                                    0
                                                                    del
                                                                      0
                                                                      Как писал выше, за счет нагрузки на CPU (используется lz4 сжатие памяти), грубо говоря, отдаем гиг, получаем два.
                                                                        0
                                                                        В том, что оно при этом очень неплохо жмется.
                                                                        0
                                                                        Выложите пожалуйста образ на любом файлообменнике или торрентом если не затруднит.
                                                                          0
                                                                          Проблематично будет. Как говорил, использую полнодисковое шифрование. В принципе, могу тупо снять снапшот с root'раздела, но для прямой заливки он все равно будет непригоден.
                                                                          0
                                                                          Посмотрите в сторону lenovo yoga 10 qualicom 2016го года. Нереально большая автономность при его 700граммах. Плюс вот такая клава IClever holdable keyboard.
                                                                            0
                                                                            А с linux там как?
                                                                              0
                                                                              По умолчанию там стоит андроид. Процессор MSM8909. Линукс ставится через одно место. Требует определенных навыков. Я не ставил, он у меня в основном ютубом работает. Но ребята ставили, говорили можно. Биос через adb включается.
                                                                            0
                                                                            Еще год назад наткнувшись на обзор GPD Win, и затем увидев упоминания про Pocket подумал — вот оно! Но реальность как обычно гораздо грустнее.

                                                                            У Win есть слот под microSD, в Pocket его убрали. Будь у покета закрывающийся слот — можно было бы поставить туда карточку на 200+ Гб для хранения данных, 128 — маловато всё же может быть.

                                                                            Глянцевый экран — самая критичная часть. Ну зачеееем?

                                                                            Клавиатура. У Win очень похожа на КПКшные, тут — вроде крупнее, но перенос точек-двоеточий очень будет напрягать. Отдельно упомянуть о фигурных скобках вверху. Сделали бы компактнее клавиши, но с более стандартной раскладкой

                                                                            В итоге приходится обходиться смартфоном с bluetooth-клавиатурой к нему и ноутбуком в тяжелых случаях (при наличии с собой)
                                                                              0
                                                                              А что за фонарик лежит слева на этом фото?

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