Всем привет, меня зовут Иван. Хочу поделиться опытом, который может пригодиться тем, кто захочет сделать такую же странную вещь, как и я, — установить OpenSuse на планшет с Windows.

Наступила осень, на улице холодно и мокро, велосипед поставлен на зимовку. Хочется сидеть на диване и серфить в Интернете под расслабляющую музыку. А где проблема? А она в том, что планшет был пожертвован детям, а жена свой не даст. Значит, пришло время прикупить новый.

Муки выбора и «хитрый» план

Решение принято, но что брать? Наступает тот самый момент, когда гик должен выбрать новый девайс. Скажу честно: продукцией Apple не интересуюсь и даже не рассматривал в качестве варианта. Казалось бы, можно взять Android и радоваться, но не тут-то было. Хочется чего-то… 

И тут в выдаче всплывает недорогой Irbis TW104 с Windows. Хм, да он еще и на Intel Atom. Получается это мини-ноутбук в формфакторе планшета. Беру! Поставлю на него свой любимый OpenSuSE, буду на диванчике в родном окружении чилить. 

Итого: процессор Intel Atom x5-Z8350 (4 ядра), 1.44 ГГц, 4 Гбайта ОЗУ, разъем под microSD (смогу оставить Windows и сделать dual boot), встроенная в чехол клавиатура с мышью и вроде бы разъем USB, но, похоже, через кабель OTG. Докидываю в корзину OTG-кабель и какую-то microSD на 128 Гбайт из тех, что пошустрее. 

Анбоксинг и первый запуск 

Сутки мучительного ожидания позади — и вот новая игрушка у меня в руках. Первые впечатления: увесист, пухловат (современные Android‑планшеты, конечно, тоньше и легче), но на ощупь приятен, а с прицепленной клавиатурой превращается в ноутбучек. Мне нравится, желания вернуть не возникло.

Включаю, появляется логотип фирмы‑производителя, затем Windows радостно приветствует меня и не менее радостно предлагает разрешить передавать всякое в Microsoft. Дохожу до создания учетной записи, и тут он требует почту, чтобы сделать учетную запись Microsoft. Гуглю: надо было пропустить подключение к Wi‑Fi, тогда Windows дает завести локальную учетную запись.

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

Попытка установки 1: неудача

Итак, приступаю к установке. Первым делом качаю OpenSuSE 15.5 Leap. Как оказалось, зря, дальше расскажу почему. Если захотите повторить мой путь, качайте сразу Offline Image.

Небольшое пояснение, у OpenSuSE есть два типа дистрибутивов:

  • Leap — версия OpenSuSE из пакетов SUSE Linux Enterprise, стабильный дистрибутив;

  • Tumbleweed — версия из пакетов, собранных на основе последних наработок сообщества, так называемый rolling release.

Я, естественно, выбираю тот, что постабильней.

Заливаю с Unetbootin дистрибутив на флешку. Собираю конструкцию из нее и OTG‑кабеля, захожу в UEFI, чтобы поменять порядок загрузки, и сталкиваюсь с первым приколом — экран повернут набок. Немного поразмышляв о сооружении системы зеркал, чтобы «выпрямить» картинку, решаю, что пока потерплю.

В меню загрузки менять ничего не пришлось: USB-устройства и так идут первыми. Запускаю инсталлятор, снова получаю повернутый экран и еще одну проблему: сетевых устройств не найдено, и по сети систему не поставить. Деваться некуда, качаю офлайн-инсталлер. 

Попытка 2: опять мимо

Имидж скачан и залит на флешку, запускаю установку — и снова получаю повернутую картинку, а еще инвертированную мышь и неработающий тачпад.

Перемещаться по кнопкам можно с помощью Tab, выбирать кнопки и поля ввода — пробелом.  Для подтверждения выбора — Enter.  

Инсталлятор предлагает удалить раздел Windows и поставить систему на него, такой вариант не подходит. Отказываюсь от предложения системы и создаю разметку с / на microSD. После перезагрузки во время установки снова грузится Windows. В UEFI загрузчик OpenSuSE виден, но при попытке оверрайда запуска из UEFI все равно грузится Windows.

Может, из-за Secure Boot? Отключаю (кстати, тут мне повезло: отключенный Secure Boot, возможно, сэкономил мне кучу времени позже), но все равно грузится не то. Пробую рассуждать логически: вероятно, все дело в том, что у меня /boot на microSD, и надо попробовать перенести этот раздел «внутрь».

Попытка 3: удача (но с оговорками) 

Заново запускаю инсталлятор, дохожу до раздела с разметкой и понимаю, почему инсталлятор предлагал удалить раздел с Windows полностью — раздел зашифрован Bitlocker, так просто ресайз ему не сделать. Ctrl-Alt-Del. 

Загрузка в Windows, лезу в раздел «Настройки», нахожу там  в подразделе «Обновление и безопасность» пункт Bitlocker и жму «Расшифровать». Полчаса на чаек и посмотреть в окно в ожидании. После расшифровки — снова загрузка инсталлятора OpenSuSE, разметка /boot-раздел на встроенной Flash, и / на microSD. 

В целом догадка оказалась верной. После установки встречает повернутый набок GRUB.

Победа? Нет. Не монтируется /. Меня встречает печальная консоль Single User. Так, если инсталлятор видел microSD, а установленная система — нет, проблема понятна: ядро Linux при запуске монтирует специальный CPIO-архив c маленьким RAM-диском, в котором лежат драйвера устройств. Тот самый initrd. В этот маленький архив складывают специфичные драйвера SCSI- и RAID-контроллеров, чтобы была возможность разместить корневой раздел на RAID-массиве или SCSI-диске.

Похоже, набор модулей, подгружаемый инсталлятором, несколько побольше и включает модули, которые позволяют видеть microSD. Снова загружаю инсталлятор, перебирая комбинациями клавиш (Ctrl-Alt-F1, Ctrl-Alt-F2) терминалы, и нахожу тот, в котором можно понабирать команды. 

Командой lsblk узнаю, что microSD определилась как mmcblk2. Дальше командой lsmod | grep mmc ищу модули, которые отвечают за mmc. 

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

В итоге получается так:

sdhci 
sdhci-acpi
mmc_core
mmc_block
dw_dmac_core 
dw_dmac
i2c_designware_platform 
i2c_designware_core

Теперь надо добавить эти модули в Init RAM Disk. В дистрибутивах RPM Based сейчас чаще всего используется утилитка dracut, в дистрибутивах на Debian, кажется, mkinitramfs. 

Создаю в /mnt директорию sd:

mkdir /mnt/sd

Дальше монтирую в эту директорию / c sd-карточки: 

mount /dev/mmcblk2p1 /mnt/sd

А потом монтирую /boot, который ранее разместил на встроенном flash:

mount /dev/mmcblk0p6 /mnt/sd/boot

Ну, и меняю корень на /mnt/sd:

chroot /mnt/sd

Теперь можно и dracut запустить, чтобы собрать Init RAM Disk с нужными модулями: 

dracut -f --force-drivers "sdhci sdhci-acpi mmc_core mmc_block dw_dmac_core dw_dmac i2c_designware_platform i2c_designware_core"

Перезапускаю систему через Ctrl-Alt-Del. Победа! Система загружается. Теперь надо добавить на постоянку в конфигурацию dracut, чтобы после обновления ядра не отвалился снова корневой раздел. 

Создаю файл /etc/dracut.conf.d/11-mmc.conf,

в него вписываю драйвера:

add_drivers+="sdhci sdhci-acpi mmc_core mmc_block dw_dmac_core dw_dmac i2c_designware_platform i2c_designware_core"

Готово.

Настройка оборудования: экран

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

Начну с простого: надо повернуть экран в графическом режиме. Кнопкой Win открываю меню запуска программ, затем консоль. Командой xrandr ищу, куда подключен экран — DSI-1.

Открываю файл /etc/X11/xorg.conf.d/50-monitor.conf.

Раскомментирую секцию настроек монитора и подставляю идентификатор монитора DSI-1. Ну, и добавляю настройку ротации экрана вправо. 

Section "Monitor"
  Identifier "DSI-1"
  Option "Rotate" "right"
EndSection

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

Открываю /etc/default/grub и в переменную GRUB_CMDLINE_LINUX добавляю fbcon=rotate:1

Дальше командой grub2-mkconfig -o /boot/grub2/grub.cfg пересобираю конфигурацию GRUB. Все, теперь шея не будет болеть и при работе в текстовой консоли. 

Настройка оборудования: сеть

Теперь одна из главных задач — поднять сеть. Чтобы не возиться с поиском драйвера по айдишникам оборудования, загружаюсь в Windows и выясняю, что сетевой адаптер — это rtl8723ds. Драйвер, слава Интернету, есть. Сделан энтузиастами и его можно собрать из исходников: https://github.com/lwfinger/rtl8723ds.git

Копирую исходники на флешку и переношу на планшет. Дальше вроде бы все просто:

make
make install

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

uname -a
sudo zypper info kernel-default-devel

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

Помните, я выше писал, что с отключением Secure Boot мне повезло? Вот почему: после одной из перезагрузок я решил вернуть Secure Boot, но после его включения перестала работать сеть. Покурив форумы, нашел ветку с точно такой же проблемой работы драйвера в сочетании с Secure Boot. И решения пока не найдено.

Настройка оборудования: тачскрин

Теперь пришло время запустить тачскрин. Какой тачскрин установлен, можно тоже подсмотреть в Windows. Благо, энтузиасты и здесь не остались в стороне. Клонирую репозиторий: https://github.com/onitake/gslx680-acpi.git

make
make install

Перезагрузка, не работает. В dmesg — ошибка подгрузки firmware. Дело в том, что контроллер тачскрина универсальный, а в прошивке указываются параметры конкретного экрана и модели. Сами прошивки и утилиты по работе с ними есть в репозитории: https://github.com/onitake/gsl‑firmware.git

При попытке подсунуть firmware от другой модели тачскрин заработал, только координаты были сбиты напрочь. Придется делать свою прошивку. Монтирую раздел c Windows и в драйверах в директории windows ищу файл SileadTouch.sys. Дальше скармливаю файл драйвера утилите scanwindrv из репозитория gsl-firmware. 

gsl-firmware/tools/scanwindrv ./SileadTouch.sys

На выходе получается файл firmware_00.fw из драйвера Windows. После чего другой утилитой gsl-firmware/tools/fwtool генерирую firmware для драйвера на Linux. Набор параметров экрана пришлось подыскивать методом тыка. Я делал это так: нажимал на экран в левом нижнем углу и в режиме выделения тянул рамку в правый верхний угол. Если рамка отставала от пальца, то корректировал размер в плюс, если обгоняла — в минус. 

Копирую firmware:

cp silead_ts.fw /lib/firmware/
cp silead_ts.fw /lib/firmware/silead/silead_ts.fw
cp silead_ts.fw /lib/firmware/silead/mssl1680.fw

Тачксрин работает, можно уже установить виртуальную клавиатуру и посидеть в ютубчике? Не получится: звука нет, Bluetooth не работает. 

Настройка оборудования: звук и Bluetooth

На самом деле запустить встроенный звук было проще всего. Ровно одна команда:

zypper install sof-firmware

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

Команда dmesg | egrep "(Blue|blue|rtl)", чтобы посмотреть все ошибки, связанные с Bluetooth: снова не хватает Firmware, благо, на этот счет уже побеспокоились ребята из комьюнити дистрибутива Armbian.

Клонирую репозиторий https://github.com/armbian/firmware.git, копирую файлы: 

cp firmware/rtl_bt/rtl8723_ds* /lib/firmware/rtl_bt/

При загрузке драйвер пытается подгрузить конфиг из файла rtl8723ds_config-OBDA8723.bin,  делаю символьную ссылку.

ln -s rtl8723ds_config.bin rtl8723ds_config-OBDA8723.bin 

Тут обратите внимание, что O в имени файла rtl8723ds_config-OBDA8723.bin — буква, а не ноль. Пока не понял, проковырялся где-то час, матерясь и не понимая, почему не подтягивается конфигурация. Перезагружаюсь, Bluetooth работает. Почти победа, только инверсированная мышь раздражает. 

Настройка оборудования: мышь (не побеждено)

Пришло время разобраться с инвертированной мышью. Первым делом, по заветам Интернета, пробую решить проблему через настройку InputClass в X. Безрезультатно. Никакие Option "InvX " "true " и Option "InversionX" "true " не срабатывают. Промучавшись несколько часов, перехожу в итоге к гайдам с методами, выглядящими как-то «костыльно».  

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

И вроде даже получилось заставить курсор двигаться правильно такой вот командой:

xinput set-prop 13 --type=float "Coordinate Transformation Matrix" -1 0 1 0 -1 1 0 0 1

Только, к сожалению, клики мыши остались инвертированными. 

Попробую копать в сторону xinput. Оказывается, в X можно теперь создать несколько курсоров и «цеплять» их к разным устройствам. Это ли не мечта детства — погонять с товарищем в «Героев», да так, чтобы не передавать друг другу мышку и не ругаться о том, у кого ладони потные.

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

Получается вот такой костыльный скриптик:

#!/bin/bash
xdotool mousemove 1000000 100000
xinput create-master mymouse
xinput reattach "SIGMACHIP USB Keyboard Mouse" "mymouse pointer" 
xinput reattach "Silead GSLx680 Touchscreen" "mymouse pointer"

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

Комментарии (27)


  1. MAXH0
    26.10.2023 08:15

    Просто божественно...????
    Остался один вопрос - как работает планшет с такой, в принципе,тяжелой системой как КДЕ?
    и вообще как работоспособность девайса...


    1. IvanMimo Автор
      26.10.2023 08:15

      Отлично работает. По крайней мере при Web серфинге и просмотре Youtube в Firefox. Telegram тоже вполне удобно пользоваться, подвисаний не заметил. С KDE есть небольшое неудобство, что почему-то Touchscreen не воспронимается как Touchscreen и из-за этого при таскании объектов и скролле нет сглаживания действий, наблюдается треммор. Еще в KDE на X нет из коробки виртуальной клавиатуры, все советуют на Wayland переходить, но пока не хочется. Поставил несколько виртуальных клавиатур, пока не понял какая удобней.


  1. RKupkenov
    26.10.2023 08:15
    +2

    Похожие танцы с бубном были когда ставил win10 вместо win11 на Chuwi MiniBook X - экран тоже был перевернут и тач не работал полноценно, автообновление драйверов проблему не решало, производитель сам что-то начудил с драйверами...


  1. seasadm
    26.10.2023 08:15
    +4

    Спасибо. До прочтения этой статьи мне казалось что человек не может быть настолько сэксуально неудовлетворён :)


  1. V1tol
    26.10.2023 08:15
    +1

    Тогда и я поделюсь опытом. Достался от брата планшет Chuwi Hi12 на Atom Z8300. Windows на нём пользоваться невозможно, а Android застрял на версии 5.1.1. Раньше пытался устанавливать Linux, но были проблемы то с ориентацией экрана, то с тачскрином - в итоге забросил в ящик пылиться. Но недавно на него установил свежевышедший Debian 12 и о чудо - в системе видится всё кроме камер (нет поддержки в ядре). У конкретно моего экземпляра не работает кардридер (аппаратный дефект этих процессоров) и микрофон (сломал бывший хозяин). Тачскрин, комплектная клавиатура с тачпадом, звук, Wi-Fi, BT, даже поворот экрана акселерометром - всё работает. И на удивление GNOME под Wayland работает почти как родной Android по плавности. Для нужд поглазеть кино-сериал в BT наушниках или почитать книжку - за глаза.

    Скриншот


  1. Johan_Palych
    26.10.2023 08:15
    +2

    Если я правильно понял - OpenSuSE развернута на microSD. Windows на eMMC flash.
    Какую fs использовали для microSD?
    Для SDCard желательно - Minimizing disk access:
    mkfs.ext4 -O "^has_journal" /dev/sdXX
    For more performance add fstab opions: data=writeback,noatime,nodiratime

    Неплохо использовать - mkfs.f2fs make file system for f2fs NAND flash drive special
    https://www.real-world-systems.com/docs/mkfs.f2fs.1.html
    zypper addrepo https://download.opensuse.org/repositories/filesystems/15.5/filesystems.repo
    zypper refresh
    zypper install f2fs-tools


    1. IvanMimo Автор
      26.10.2023 08:15
      +1

      Спаcибо за отличный совет! По умолчанию в OpenSuse используется btrfs. Ваш комментарий навел на мысль, что действительно надо отключить snapshotы! https://www.simplified.guide/suse/snapper-disable-snapshots

      Я пока не буду переставлять систему, проведу эксперимент как долго sd карточка проживет, рекомендацию Вашу "прикопал".


  1. NutsUnderline
    26.10.2023 08:15

    С исходниками то оно хорошо, с исходниками - откомпилировать можно. А без исходников .. будет как у вчерашнего владельца планшета от Digma...


  1. Sklifcheg
    26.10.2023 08:15

    отличная инструкция


  1. AlvinMerphy
    26.10.2023 08:15
    +2

    Добавлю свои 5 копеек. Есть такой проект Suse Studio, где можно собрать свой, репозитарий, например, из пакетов драйверов. Если нужный драйвер есть в природе, то его можно собрать в свой репозитарий и установить. Сам давно думаю собрать свой кастомный планшет на Suse, благо там есть и мобильная и облегчённая версия Plasma. Plasma-nano и plasma - Mobile. Телефоны lumia с нужными процами на Алике стоят копейки


  1. psydvl
    26.10.2023 08:15

    Побуду занудой: openSUSE пишется по-другому


    1. IvanMimo Автор
      26.10.2023 08:15
      +4

      Вы абсолютно правы, но разрешите по оправдываться. Моя дружба с Linux началась с SuSE 9. тогда еще именно так писалось с маленькой u, никак не могу привыкнуть писать правильно. У меня даже кружочка с тех времен осталась:

      Кстати, YaST по-прежнему пишется "канонично" ;).


  1. maxmorev
    26.10.2023 08:15

    Кайф, Ваня. Спасибо!

    Умеешь ты развлекаться!

    Хотел все Linux поставить на планш, ты напомнил. +1 к моим развлечениям )


  1. vk6677
    26.10.2023 08:15

    Не зря раньше в шрифтах ноль был перечеркнут.


    1. uuger
      26.10.2023 08:15

      А потом люди открыли для себя существование датского и норвежского языка


  1. GBR-613
    26.10.2023 08:15

    Можно поинтересоваться, есть у Suse какие-то преимущества перед Ubuntu? Или это всё - вопрос привычки?


    1. NutsUnderline
      26.10.2023 08:15

      Ну как же: ядра свежее, баги свежее


    1. IvanMimo Автор
      26.10.2023 08:15

      Тема довольно холиварная, поэтому выскажу личное мнение. Для десктопа вопрос привычки. Меня цепляет в openSUSE наличие удобной панели управления YaST, хотя я вполне жил на работе под CentOS 7 без нее; отличный software center https://software.opensuse.org/, в котором для многих программ есть One Click Installer под YaST.


    1. lennylizowzskiy
      26.10.2023 08:15

      есть у Suse какие-то преимущества перед Ubuntu

      Отсутствие Snap, чистый GNOME без твиков, наличие довольно удобной панели управления системой YaST, лучший GUI-установщик дистрибутива из тех которые я видел (полагаю, что видел все существующие - их на самом деле не так чтобы много (Calamares, Jade и пара distribution-specific)), наличие software center с интерфейсом и отсутствие необходимости использовать другой фронтенд для нормального использования пакетного менеджера (я про Nala, который работает поверх Apt). Хотя Zypper тоже довольно медленный


  1. RedHead
    26.10.2023 08:15

    Интересно, а usb-live linux через otg бы запустился? Ну какой-то slax \ mxlinux ?


  1. t38c3j
    26.10.2023 08:15
    +1

    Дохожу до создания учетной записи, и тут он требует почту, чтобы сделать учетную запись Microsoft

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


  1. shumaher86
    26.10.2023 08:15

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

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


  1. VasiliyLiGHT
    26.10.2023 08:15

    Если это планшет, то почему изначально не поставили его вертикально, как все планшеты по-умолчанию? ???? Это из серии "создаём себе трудности и героически с ними боремся"?

    Или это всё-таки нетбук? Или что? ????


    1. shumaher86
      26.10.2023 08:15
      +1

      что значит "не поставили"? в том и проблема, что при загрузке ему пофигу, как стоит. а потом винда по датчику переворачивает правильно изображение. ВМЕСТО того, чтоб оно было сразу горизонтально. то есть, что зашита в нем неправильная ориентация, чтоб под клавиатуру.


      1. VasiliyLiGHT
        26.10.2023 08:15

        Сам планшет повернуть, чтобы не уродоваться...

        Если у планшета там коннектор для клавы и она при этом всегда в комплекте поставки, то минус разработчикам, что не прописали для дисплея такой вариант загрузки. А если комплектация для небольшой партии или вовсе отдельно, то ничего удивительного, кмк. Обычные люди планшет переворачивают кинцо посмотреть/игры поиграть ????


        1. shumaher86
          26.10.2023 08:15

          Если у планшета там коннектор для клавы и она при этом всегда в комплекте поставки, то минус разработчикам, что не прописали для дисплея такой вариант загрузки

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


  1. savagebk
    26.10.2023 08:15

    На планшет с примерно аналогичным железом ставил Федору, т.к. из знакомых мне дистрибутивов только она умеет грузиться с Secure boot, а в этом планшете изменение опции в биосе, видимо, не работало. Поставилась без особых танцев, но экран был только портретной ориентации, мышь - инвертирована и были очень жуткие тормоза. Предполагаю, что тормозило из-за emmc+btrfs.