LINUX.ORG.RU

Сообщения AITap

 

Linux на GPD Pocket

Этим летом решился и реализовал мечту детства об ультракомпактном ноутбуке. Начитался соответствующей информации и решил поставить не специальную сборку для Pocket от не известных мне людей (хотя позже наткнулся на официально выглядящую Ubuntu Mate for Pocket), а Debian (к пакетной базе которого, как и к любому другому известному дистрибутиву, доверия чуть-чуть, но больше).

Установка вышла с приключениями:

  • Первая загрузка только что установленной системы окончилась зависанием с чёрным экраном на этапе, когда система делает udevadm settle. Скорее всего, причина в модуле fusb302, который я позже заблеклистил за то, что он при загрузке пытается разыменовать нулевой указатель и больше ничего не делает, но тогда пришлось изворачиваться с init=/bin/bash и вручную с флешки ставить ядро из бэкпортов (4.18)
  • Пришлось вручную внести в конфигурацию Xorg настройки DPI (больше трёхсот!) экрана и калибровочную матрицу для сенсорной панели
  • Пришлось заблеклистить звук через HDMI, потому что с ним висло и падало PulseAudio, а без него не получилось завести dmix (кроме того, так и не заработал микрофон)
  • С последней версией linux-firmware Wi-Fi адаптер намертво вешает систему при загрузке. Решения нет, один файл пришлось откатить.
  • Кроме того, давно уже не изобретал себе DE из соплей и палок, а тут решил извратиться и собрать максимально клавиатурно-ориентированное окружение на базе DWM (текст на панели генерирует luastatus), так что пришлось написать несколько костылей для обработки закрытия крышки и клавиш регулировки громкости.

Минимализм тут чисто показной, потому что в ноутбуке спрятано 8G оперативной памяти, и я ещё ни разу их полностью не занимал. (Опасаясь за судьбу SSD, вместо zswap - прозрачного сжатия страниц перед выгрузкой на раздел подкачки - я включил zram - виртуальный сжатый диск в оперативной памяти, на котором размещается swap.) Процессор видно, что небыстрый, но даже с небольшими расчётными задачами справляется нормально. Если не запускать браузер, а тихо сидеть и кодить, батареи хватает надолго: сейчас ноутбук используется 2-3 раза в неделю по несколько часов, а заряжаю я его в выходные.

Клавиатура, конечно, гораздо менее удобная, чем полноразмерная, но пользоваться ей можно (мои пальцы даже успели привыкнуть тянуться к расположенным в абсолютно неподобающих местах клавишам Х, Ж и Ю). Единственный USB-порт не сильно беспокоит, потому что большую часть времени ноутбук используется на коленях или маленьком столе без возможности подключить что-либо ещё. Читал о проблемах с антенной Wi-Fi (неудачном её расположении внутри алюминиевого корпуса), но именно от низкого уровня сигнала не страдаю.

Не всем приложениям комфортно на 300 DPI. Некоторые программы и библиотеки пытаются гиперкомпенсировать высокое разрешение, домножая все размеры на определённый фактор, вместо того, чтобы просто рисовать интерфейс в пунктах согласно системному DPI, а не пикселях. Другие делают всё честно, но физически не умещаются в 7-дюймовый экран.

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

Несмотря на все описанные выше приключения, покупкой я доволен и совершенно о ней не жалею. Будущее уже наступило!

>>> Просмотр (1920x1200, 2315 Kb)

 , ,

AITap
()

Мечта параноика

Proof-of-concept: зашифрованный /boot! То, чего так не хватало тем людям, которые хотели полностью зашифрованную систему на одном разделе или опасались, что их нешифрованный /boot изменят, засунут в initrd трояна и таким образом получат доступ ко всем остальным данным.

Рецепт:

  • Свежий GRUB, не старше 2011-07-07 (grub-2.00 с официального сайта вполне подошёл)
  • Сборка руками, ничего интересного, но много build-dependencies.
  • grub-install оказался недостаточно умным, чтобы сработать автоматически.
    • Во-первых, эксперимент проводился на /dev/loop0, что у GRUB не было никаких шансов заметить, пришлось править .../boot/grub/device.map:
      dd if=/dev/zero of=luks.img bs=1M count=100
      losetup /dev/loop0 luks.img
      fdisk /dev/loop0
      cruptsetup luksFormat /dev/loop0p1
      cryptsetup luksOpen /dev/loop0p1 test
      mke2fs /dev/mapper/test
      mount /dev/mapper/test /mnt
      mkdir -p /mnt/boot/grub
      echo '(hd0) /dev/loop0' > /mnt/boot/grub/device.map
    • Во-вторых, по умолчанию GRUB даже не пытается открывать зашифрованные устройства:
      # share/grub/grub-mkconfig_lib
        if abstractions="`"${grub_probe}" -t abstraction "$path"`" 2>&1 ; then 
            :
        else
          return 1
        fi
      
        if [ x$GRUB_CRYPTODISK_ENABLE = xy ]; then
            return 0
        fi
        
        for abstraction in $abstractions; do
            if [ "x$abstraction" = xcryptodisk ]; then
                return 1
            fi
        done
      Чтобы он сделал такую попытку, необходимо установить переменную окружения GRUB_CRYPTODISK_ENABLE в «y».
    • В-третьих, разработчики не зря спрятали это за переменную окружения, поскольку получившийся core.img не смог прочитать таблицу разделов и увидеть зашифрованный раздел. Решилось это ручным добавлением модуля к grub-install.
    В итоге команда установки выглядела так:
    sudo env GRUB_CRYPTODISK_ENABLE=y ~/grub2/sbin/grub-install --modules=part_msdos --root-directory=/mnt/ /dev/loop0

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

А на самом скриншоте смотреть почти нечего, да.

>>> Просмотр (722x804, 17 Kb)

 

AITap
()

Выживаем на нетбуке

Обзаведясь нетбуком, я понял, что строить окружение на базе Openbox для комфортной работы на нём мне лень. Нетбук - это, всё же, не десктоп, и ему нужен какой-никакой удобный способ управления питанием, возможность быстро переключить вывод на внешний проектор, и т.п. И я поставил Xfce. Чуть позже пришло понимание того, что просто оставить одну сжатую до 20 пикселей панель недостаточно: места по вертикали ужасно не хватает.

Итак, в ролях:


  • Xfce 4.8 с единственной вертикальной панелью (ШГ в часах было единственным ШГ, которое читалось при размерах, стремящихся к 0)
  • Iceweasel с Tree Style Tab и Menu Editor (для урезания и умещения на одну горизонтальную панель с адресной строкой и кнопками). Спасибо Uzix за идею.
  • Worker, выкрашенный под *commander
  • Не настроенный косметически GVim, в котором я кое-что пишу
  • На последнем скриншоте можно заметить, что всё это отжирает 200 мегабайт ОЗУ, причём активнее всех в пожирании всех ресурсов участвует Iceweasel (он как раз скачивал и рендерил большую красочную страницу, чтобы я успел снять апплет netload в работе), а также маленький скрипт, который перенастраивает апплет «Сетевой монитор», когда меняется Default route



Также этот нетбук успел побывать лабораторным журналом и вообще активно поучаствовать в написании курсовой работы при помощи LyX, но в скриншот это не вошло.

Наверное, нужно ещё избавиться от заголовков окон.

>>> Просмотр (2048x1200, 274 Kb)

 , ,

AITap
()

mathomatic на e-book

Дано: Pocketbook 301+, несколько часов свободного времени, желание сделать что-нибудь эдакое.

С http://pocketbook-free.sf.net/ берётся SDK для linux (эмулятор, работающий через winelib, так и не запустился, ну и ладно), с http://www.mathomatic.org/ - исходники mathomatic, в makefile заменяется одна строчка (путь к gcc), запускается make static, а полученный файл копируется на книгу.

С того же http://pocketbook-free.sf.net/ берётся эмулятор терминала «poterm» и запускается.

Результат, правда, получается совершенно неприспособленным для нормального использования, поскольку встроенная в «терминал» (и в книгу вообще) клавиатура не имеет символов «&», «|», «>», «<», «^» и многих других.

Что интересно, на самом e-ink экране адского ШГ незаметно.

>>> Просмотр (800x600, 10 Kb)

 , , ,

AITap
()

bash - это на самом деле чат

...просто собеседник не знает русского.

Получено при помощи «примочки» к bash и следующего bashrc:

PS1="\n\[\033[34m\](\t) \[\033[1m\u/\w:\033[0m\n"

source preexec.bash.txt

function preexec() {
        echo -e "\n\e[31m($(date +%X))\e[1m $(hostname):\e[0m"
}

preexec_install

На заднем плане - debian testing, openbox, conky, mpd, pidgin, deluge, sonata, iceweasel, и в кадр не попала tilda.

Обоина: 940K 0_2ca8b_8fe67145_orig.jpeg

>>> Просмотр (1440x900, 713 Kb)

 

AITap
()

Готова для десктопа

Ubuntu 9.04. Спустя некоторое время пользования GNOME и Compiz понял, что это «не моё», и поставил Fluxbox. Стрелочек нет :)

В ролях: Conky (вверху), root-tail (слева-внизу), Tilda + bash (на левом рабочем столе вверху), oowriter (выполняю задачи олимпиады «Покори Воробьёвы Горы»), Firefox 3.5.6, MOC (в выводе conky), за кадром - Pidgin и Deluge.

Запуск программ и управление плеером - на хоткеях.

~/.conkyrc: http://dpaste.com/141426/

~/conky/weather.sh: http://dpaste.com/141430/

~/scripts/mocp-status: http://dpaste.com/141432/

Обоина: http://omploader.org/vMzYxZg

Мои $PS1 и $PS2:

PS1="\[\033[1;36m\][\t]\[\033[0m\033[1m\033[36m\][\[\033[34m\]\u \[\033[32m\]\w\[\033[36m\]]\`errlev=\$?; if [ \$errlev != 0 ]; then echo \[\e[1m\e[31m\]:\(\$errlev\[\e[0m\]; else echo \[\e[1m\e[33m\]:\)\[\e[0m\]; fi\`\[\033[1;36m\]>\[\033[0m\] "
PS2="\033[1;36m?> \033[0m"

PNG-версия (осторожно, 2,1 МБ!): http://omploader.org/vMzYxaQ

>>> Просмотр (2880x900, 401 Kb)

 , , , , , , ,

AITap
()

RSS подписка на новые темы