Установка И Использование Gnu/Linux Вместо Chrome Os На Toshiba Chromebook 2

Всем привет! Некоторое время назад я купил себе Chromebook модели Toshiba Chromebook 2 CB35-B3330 и заменил на нем Chrome OS на традиционную GNU/Linux. Это была не установка через крутон, а «чистая» установка с полным удалением Chrome OS. Борьба с плохой поддержкой Linux для этого Chromebook заняла неожиданно много времени (несколько вечеров), но в итоге все проблемы были решены и Chromebook стал полноценной рабочей машиной.



Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2

В результате я решил написать статью, в которой:

  • Очень кратко описан сам Chromebook и мои впечатления от железа.

  • Описаны основные проблемы с установкой GNU/Linux на данную конкретную модель и пути их решения.

  • Там очень кратко описано, как я сам им пользуюсь после установки Linux.
Здесь и далее красным отмечены распространенные неверные решения по настройке, желтым — рабочие, но некрасивые (костыли), зеленым — правильные.

  1. Тошиба Хромбук 2 .

  2. Установка и настройка Slackware Linux 14.2
  3. Сценарий использования
Тошиба Хромбук 2 Модель CB35-B3330 построена на бюджетном чипе (SoC) Intel Baytrail N2840. Основные показатели:
  • Процессор: 64-битный Intel Celeron, 2 ядра, 2,16 ГГц, кэш-память второго уровня 1 МБ.

  • Оперативная память: 2 ГБ DDR3L SDRAM
  • Видео: встроенная графика Intel HD
  • Дисковая память: 16 ГБ eMMC (большинство спецификаций откровенно врут, что это SSD)
  • Дисплей: 13,3 дюйма, матовый, 1366x768.
  • Wi-Fi: 802.11 А/С
  • Вес: 3 фунта (1,3 кг)
  • Линейные размеры: 12,60 х 8,40 х 0,76 дюйма.

Плюсы: Ноутбук очень легкий и компактный.

Довольно приятный - цвет металлик с рифленой поверхностью, собран аккуратно.

Он имеет пассивное охлаждение, поэтому совершенно не шумит. Из-за слабого аппаратного обеспечения имеет очень низкое энергопотребление (2,5 – 5 Вт) и длительное время работы при питании от аккумулятора.

Производитель заявляет 13 часов работы, индикатор батареи в Chrome OS это в целом подтверждает, а после установки Linux, ради интереса отключив всё ненужное и немного приглушив яркость, я получил прогноз 24 часа работы без нагрузки и 16- 18 часов с загрузкой текстового редактора + аудиоплеера + веб-браузера + просмотра PDF-файлов:

Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2

Очень большим преимуществом является низкая стоимость.

Эта модель стоит в США около 150-200 долларов за отремонтированную или подержанную версию и 230-250 долларов за новую.

Замечу, что многие Chromebook с аналогичными характеристиками от других производителей, в частности от HP и Acer, стоят даже дешевле этой модели.

Минусы: ИМХО главный минус - некачественный дисплей (TN, низкое разрешение и белесая поверхность).

У этого Chromebook есть старший брат — Toshiba Chromebook 2 CB35-B3340 с FullHD IPS-дисплеем и чуть более мощным «железом», и теперь он кажется почти идеальным Chromebook. Слабое оборудование и ограниченность оперативной памяти и дискового пространства исключают многие варианты использования.

Также очень неприятно, что Toshiba делает вид, что не имеет никакого отношения к выпускаемым ею Chromebookм.

На сайте Toshiba моделям Toshiba Chromebook посвящены Пустые страницы без спецификаций и скудное руководство пользователя.

.

Еще одним недостатком этого Chromebook является его полное отсутствие в продаже в России, поэтому к цене можно сразу добавить стоимость доставки из-за границы или поискать обходные пути.

(Но это распространенная проблема - по неизвестным мне причинам Хромбуки почему-то почти полностью исчезли из продажи в России за последние 2-3 года).

Установка и настройка Slackware Linux 14.2

Проблемы с установкой

Установка практически такая же, как и для любого другого Linux на любом другом ноутбуке, за исключением пары тонкостей:
  • Загрузчик, расположенный на диске eMMC, будь то GRUB или LILO, будет работать.

    только в случае UEFI .

    В случае с BIOS+MBR он установится на eMMC, но работать не будет. К сожалению, Chromebook с root-доступом и отключенной проверкой ОС = SeaBIOS от Джона Льюиса = нет UEFI. Я в этом не уверен и буду рад, если меня кто-то отговорит или подскажет способ подписать загрузчик сторонней ОС, но пока мне это не удалось.

    ОБНОВЛЯТЬ комментарий aleksandr99: На сегодняшний день уже появилось прошивка с UEFI , который поддерживает этот Chromebook и многие другие модели.

    Помимо других преимуществ UEFI, его наличие позволяет устанавливать Windows на Chromebook. Выход с SeaBIOS только один - поместить загрузчик на MBR стороннего запоминающего устройства, например флешки, и загрузиться с флешки.

    Правильный способ — использовать UEFI.

  • Загрузочные диски некоторых дистрибутивов будут жаловаться на нехватку памяти и не смогут запуститься.

    Это справедливо и для многих других Chromebook. Чтобы решить проблему, вам необходимо сообщить загрузчику параметр ядра mem=1G.



Проблемы с модулем byt-max98090 и неработающий звук

Бич всех хромбуков на базе чипа Baytrail. Обсуждения в Интернете о родной установке Linux на такие Хромбуки пестрят сообщениями «не работает звук» ( пример ).

Чаще всего это происходит по следующим причинам.

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

(Примером дистрибутива, включающего byt-max98090, является Ubuntu.) Если этого модуля нет, то звука из колонок и наушников естественно не будет ни при каких обстоятельствах и нужно будет пересобирать ядро с включенным byt-max98090. Проверить наличие данного модуля в системе можно несколькими способами: — Конфигурация ядра должна содержать CONFIG_SND_SOC_MAX98090=m. — Команда lsmod должна показать этот модуль в списке других (если он загружен).

Во-вторых, что еще хуже, byt-max98090 не работает во многих новых версиях ядра.

Путем случайного поиска и поиска в Интернете я обнаружил следующее:

  • ОС Chrome, установленная на этом Chromebook (Swanky), основана на ядре 3.10.19. Естественно, в нем работает звук.

  • Для ядер версии 4.x в GNU/Linux звук работает в версии lts 4.4.23 и более ранних версиях.

  • Версия 4.5 внесла принципиальные изменения в звуковую подсистему и перестал работать модуль byt-max98090( доказательство ).

    Byt-max98090, не работающий в новых ядрах, выглядит примерно так (в dmesg): выхлоп dmesg

     
     [    6.001164] byt-max98090 byt-max98090: ASoC: CPU DAI baytrail-pcm-audio not registered
     [    6.001298] byt-max98090 byt-max98090: snd_soc_register_card failed -517
     [    6.041935] baytrail-pcm-audio baytrail-pcm-audio: FW version: 04.05.13.a0
     [    6.042029] baytrail-pcm-audio baytrail-pcm-audio: Build type: a0
     [    6.042129] baytrail-pcm-audio baytrail-pcm-audio: Build date: Apr  2 2014 14:14:39
     [    6.046272] usb 1-3: new high-speed USB device number 2 using xhci_hcd
     [    6.066088] max98090 i2c-193C9890:00: MAX98090 REVID=0x43
     [    6.070340] max98090 i2c-193C9890:00: use default 2.8v micbias
     [    6.072733] sst-acpi 80860F28:00: ASoC: Cannot get gpio at index 1: -2
     [    6.072888] byt-max98090 byt-max98090: ASoC: failed to init Baytrail Audio: -2
     [    6.073021] byt-max98090 byt-max98090: ASoC: failed to instantiate card -2
     [    6.073251] byt-max98090 byt-max98090: snd_soc_register_card failed -2
     [    6.073354] byt-max98090: probe of byt-max98090 failed with error -2
     
  • Эта ситуация, по-видимому, сохраняется и по сей день.

    Я прошил 4.12.0 и у меня не заработал звук, с теми же симптомами, что и в 4.5 и более поздних версиях.

TL;DR: 4.4.23 — звук работает, но не в последующих версиях ядра.

В-третьих, даже если установить byt-max98090 и ядро нужной версии, звук из коробки не работает - нужно выполнить пару действий с выгрузкой модулей ядра (см.

ниже) и установить некоторые необходимые настройки ALSA. На этом этапе обычно дают неверные советы использовать другой дистрибутив или использовать asound.state из Chrome OS (и такие советы заметил даже такие гуру, как Джон Льюис — автор самой известной прошивки SeaBios для Chromebook).

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

То же самое и с asound.state. Asound.state — это всего лишь снимок настроек alsa. Все, что кто-то другой установил в своем asound.state, можно установить у себя через утилиту alsamixer или в низкоуровневом alsactl, не копируя asound.state откуда-либо.

Итак, следующие действия включают звук на байтрейле Chromebook и не требуют изменения дистрибутива или копирования asound.state:

  • Убеждаемся, что мы находимся в исходной ситуации, когда звук не работает:
     aplay -D sysdefault:CARD=bytmax98090 /usr/share/sounds/alsa/Noise.wav
     > ALSA lib pcm_dmix.c:1030:(snd_pcm_dmix_open) unable to open slave
     > aplay: main:786: audio open error: No such file or directory
  • Выгружаем все модули звуковых устройств (в этом Chromebook их два — bytmax98090 и HDMI, в каждом конкретном случае могут быть и внешние устройства):
     modprobe -r snd_soc_sst_byt_max98090_mach snd_hda_codec_hdmi
  • Убедитесь, что список аудиоустройств пуст:
     aplay -L
  • Создайте ~/.

    asoundrc со следующим содержимым: .

    asoundrc

     pcm.!default {
         type hw
         card 0
     }
     
     ctl.!default {
         type hw
         card 0
     }
     
  • Загрузить модуль byt-max98090.
     modprobe snd_soc_sst_byt_max98090_mach
  • Запустите алсамиксер.

  • Убедитесь, что динамик не отключен (под ползунком динамика нет ММ.

    Включается клавишей М).



    Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2

  • Включите звук на устройствах «Левый динамик, микшер, левый ЦАП» и «Левый динамик, микшер, правый ЦАП».



    Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2

    Есть аналогичные устройства для выхода на наушники.

    Обратите внимание, что звук в динамиках и звук в наушниках настраиваются независимо - скорее всего это баг.

  • Убедитесь, что звук появился.

Эти действия — самый очевидный костыль с вытаскиванием и вставкой звуковых модулей, призванный решить неправильный порядок инициализации звуковых устройств при загрузке.

Правильным решением было бы исправить код ядра, чтобы звук работал из коробки, но ИМХО это вряд ли исправят в ближайшее время.

ОБНОВЛЕНИЕ 2 комментарий aleksandr99: При использовании UEFI (прошивка по ссылке) проблема с порядком инициализации модулей исчезает. Другими словами, звук в ядре <=4.4.23 will work out of the box immediately after startup, without requiring any action with lsmod. In newer kernels, unfortunately, sound will not work under any circumstances. ОБНОВЛЕНИЕ 3 (от 12 ноября 2018): УРА!!! По поводу упомянутого выше эта страница ошибки в ArchLinux в обсуждении была ссылка пластырь решение проблемы! Щас после этого патча у меня появился звук в самом новом ядре - на данный момент это 4.19. ОБНОВЛЕНИЕ 4 (от 2 января 2020 г.

): Исправление.

попал в ядро 5.1 .

Проблема со звуком официально устранена.



Обходной путь для частой проблемы перезаписи eMMC

Очень распространенная проблема с этим Chromebook и многими другими.

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

И у нее, как и у любой MMC, очень ограниченный запас циклов перезаписи.

Для Chrome OS этой проблемы не существует, так как она каждый раз распаковывается из фиксированного образа в память и практически никогда не пишет на накопитель, а вот обычный Linux постоянно пишет на диск: в логи, в домашнюю директорию и т.д. Есть несколько решений этой проблемы:

  • Использование дистрибутива, полностью основанного на initrd (Finnix, Puppy Linux), затруднено из-за ограничения в 2 ГБ.

  • Формировать свой initrd со всем необходимым софтом сложно из-за ограничения в 2 ГБ и необходимости понимать, какие системные компоненты ставить в initrd - udev, менеджер пакетов.

    ).

  • Установка дистрибутива на SD карту или флешку.

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

  • Гибридный метод (выбран мной): Обычная установка на внутренний накопитель 16Гб, но с монтированием в память наиболее часто записываемых разделов.

Наиболее активно используемые каталоги — /home, /tmp и /var/log, поэтому у меня есть следующий /etc/fstab: /etc/fstab
  
 
 /dev/mmcblk0p1   /                     ext3        defaults         1   1
 devpts           /dev/pts              devpts      gid=5,mode=620   0   0
 proc             /proc                 proc        defaults         0   0
 tmpfs            /home/cheater         tmpfs       defaults,noatime,nosuid,size=800m     0 0
 tmpfs            /tmp                  tmpfs       defaults,noatime,nosuid,size=100m     0 0
 tmpfs            /var/cache              tmpfs       defaults,noatime,nosuid,mode=0755,size=190m     0 0
 tmpfs            /var/tmp              tmpfs       defaults,noatime,nosuid,size=30m     0 0
 tmpfs            /var/log              tmpfs       defaults,noatime,nosuid,mode=0755,size=80m     0 0
 tmpfs            /var/run              tmpfs       defaults,noatime,nosuid,mode=0755,size=2m     0 0
 tmpfs            /var/spool/mqueue     tmpfs       defaults,noatime,nosuid,mode=0700,gid=12,size=30m     0 0
 
Поскольку файлы, помещенные в оперативную память, сохраняются только до отключения питания, вам придется регулярно делать резервные копии этих файлов где-нибудь более надежно, например, на том же внутреннем диске, на домашнем сервере или в облачном хранилище.

Как это реализовать – каждый решает сам; универсального рецепта быть не может. Добавлю, что полное отключение электроэнергии на ноутбуке – событие крайне редкое; проще отправить ноутбук в режим сна или гибернации при необходимости.

Единственное, что может заставить вас выключить ноутбук – это необходимость обновления ядра, паника ядра или разрядка батареи до нуля.

(Я выключал свой Chromebook только в первые 2-3 недели после покупки, пока еще не была улажена среда; после этого я его ни разу не выключал, просто усыплял).

Еще одно важное замечание – Установив Linux, вы никогда не должны допускать полной разрядки вашего Chromebook. , так как это приведет к тому, что Chromebook перейдет в режим восстановления.

Правда, есть еще одна неприятная причина отключения, о которой речь пойдет в следующем пункте –

Кнопка питания уязвима к случайным нажатиям

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

Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2

На обычных ноутбуках Power — это крошечная кнопка где-то сбоку, которую нельзя нажать случайно.

На Chromebook, чтобы случайно нажать Power, все, что вам нужно сделать, это пропустить Backspace или соседнюю клавишу F. Выход один - отключить ПО или переназначить Power. Это не делает невозможным выключение ПК, потому что.

во-первых, это всегда можно сделать из консоли через /sbin/init 0, poweroff и т.п.

, а во-вторых, сочетанием «Esc+Power+F3» (перезагрузка в режим восстановления) и «удерживать Power в течение 5 секунд» (отключение) действуют абсолютно всегда — они обрабатываются на уровне BIOS Chromebook. Для дистрибутивов на базе systemd это очень легко сделать в настройках systemd: просто задайте HandlePowerKey=игнорировать в /etc/systemd/logind.conf и перезапустите systemd-logind или компьютер.

Для других дистрибутивов (включая Slackware) обработка ACPI события «нажатие кнопки питания» устанавливается в /etc/acpi/handler.sh:

 vi /usr/share/X11/xorg.conf.d/90-keyboard-layout.conf


Поиск вместо Caps Lock



Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2

Еще одна родовая травма Chromebook. На них нет клавиши Caps Lock, вместо нее есть кнопка «Поиск».

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

Эта клавиша распознается не как ключ поиска мультимедиа (XF86XK_Search), как можно было бы ожидать, а как левая клавиша Win. Поэтому, если вам лень проводить длинные настройки, вы можете просто настроить LWin на переключение раскладки в настройках DE или xkb по вашему выбору.

Настройка через xkb делается (в моем случае) так:

 Option "XkbOptions" "grp:lwin_toggle"
И добавьте опцию:
 keysym Super_L = Caps_Lock
Метод не совсем идеален, так как:
  • во-первых, в идеале еще желательно, чтобы Поиск работал как Капс на уровне скан-кодов (например, у нас есть большая самодельная раскладка для xmodmap, в которой много комбинаций с капсами, и нам бы не хотелось их все переписывать) .

  • во-вторых, в XkbOptions нет возможности настроить Shift+Lwin для переключения на русскую раскладку (довольно многие линуксовые устройства так делают - переключают раскладку не шапкой, а ставят капс на английскую раскладку и шифт+капс на русскую раскладку) ).

    Поэтому для тонкой настройки вам все равно придется зайти в xmodmap.

Итак, правильный способ — сбросить LWin на Caps на низком уровне xkb в xmodmap. Каждый настраивает отображение xmodmap в своем месте (~/.

Xmodmap, start script.), но действие везде одинаковое:

 
 lsmod | grep zram || modprobe zram || echo "error inserting zram"
 echo 1000000000 > /sys/block/zram0/disksize  # 1GiB
 fdisk -l | grep /dev/zram0 || echo "missing zram0 device"
 mkswap /dev/zram0
 swapon /dev/zram0
 
Примечание.

Все сказанное о клавиатуре относится только к настройке клавиш под X-сервером (xkb).

Консоль использует другие утилиты (в Slackware они представлены пакетом kbd) и основным инструментом сброса ключей является loadkeys. Настройка kbd в этой статье рассматриваться не будет. ОБНОВЛЕНИЕ 2 (через Мробеспьер ) :

Использование zram для решения проблемы с нехваткой оперативной памяти

2 ГБ ОЗУ — это ничто по нынешним меркам, а на Chromebook с таким небольшим объемом памяти очень легко выйти за ее пределы, и в дело вступает своп, а значит, накопитель изнашивается еще быстрее.

Для борьбы с этим эффектом в ядре Linux уже довольно давно имеется модуль zram, который на лету сжимает данные в оперативной памяти.

Так что совет здесь простой: настоятельно рекомендуется включить zram на этом Chromebook и использовать его для подкачки.

Опять же, есть много сценариев, как это включить — можно в fstab, можно в rc.local. Например, полностью ручная активация:

case "$1" in button) case "$2" in power) # /sbin/init 0 logger "Power button is hit" ;; *) logger "ACPI action $2 is not defined" ;; esac ;; *) logger "ACPI group $1 / action $2 is not defined" ;; esac



Сценарий использования

О работе на этом ноутбуке со стоковой Chrome OS рассказывать особо нечего — все так же, как и в любом другом Chromebook и на эту тему есть десятки статей и видео.

Браузер Chrome становится для пользователя центральной частью системы.

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

Среди обычных — GMail, Google Docs, Google Drive, Hangouts. Если покопаться в плагинах, то можно найти SSH-клиент , VNC-клиент , RDP-клиент , Клиент Samba , различные текстовые редакторы, графические и т. д. Производительность и функциональность таких плагинов обычно находятся на одном уровне.

Теоретически можно установить родные приложения, заменив Chrome OS на Chromium OS и переупаковка образа , но это развлечение только для сильных духом и явно выходит за рамки данной статьи.

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

В режиме разработчика все немного веселее, у вас есть доступ к bash, файловой системе и работе с правами root. В такой среде самый простой способ расширить функциональность Chromebook — выполнить chroot в корневой каталог обычного Linux (на флэшке или внутреннем диске), что именно и делает известная утилита crouton. Сегодня актуальны более современные, чем chroot, инструменты контейнеризации, такие как LXC, но мне ничего не известно о возможности/сложности их использования в рутованной Chrome OS. Более принципиальная модификация Chromebook — полное удаление Chrome OS с диска и установка своей ОС (далее я буду считать, что это Linux, хотя на самом деле, конечно, есть и другие варианты).

Что получает пользователь, установивший нативный GNU/Linux:

  • Бесплатная ОС с полным контролем над ней;
  • Все аппаратные ресурсы Chromebook, а не chroot/cruton и более простая среда;
  • Привычная, доступная для записи корневая система (в отличие от Chrome/Chromium OS, которая каждый раз распаковывается из образа, доступного только для чтения).

    У этого подхода тоже есть свои недостатки, но, по крайней мере, он проще и привычнее;

  • Полный набор привычных десктопных приложений вместо имитирующих их плагинов Chrome.
  • Значительно меньшая зависимость от Интернета при использовании локальных приложений и данных.

На моем ноутбуке реализован именно этот вариант — установлен «чистый» Slackware 14.2. Инструментарий достаточно аскетичный, поэтому требования к мощности ноутбука очень низкие.

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

Центральное место среди них занимает Emacs — в нем я пишу код и любой текст, читаю электронную почту и RSS (Gnus), общаюсь в jabber и irc, делаю заметки и планы дел (режим Org), посещаю текстовые веб-страницы (w3m ).

Других пользовательских приложений немного, основные из них — surf (веб-браузер), mpd + ncmpc (музыка), zathura (просмотрщик PDF, djvu и т. д.) и TeX Live (система математической верстки текста).

Иногда смотрю фильмы (mplayer) и играю в такие игры, как Warsow, ADOM, Aquaria и Vangers. Я разрабатываю в основном на C++ и Rust; Я также много пишу на Perl и оболочке.



Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2

У Chromebook достаточно мощности для указанного программного обеспечения.

Начинает тормозить на веб-страницах, активно использующих js и flash, и к сожалению почти на всех играх, кроме очень минималистичных (Aquaria, Wangers и конечно ADOM).

Система со всеми инструментами (упомянутые выше приложения, TeX, Perl, GCC и все сопутствующие инструменты разработки) занимает 2,7 ГБ из доступных 16 ГБ, остальное пространство пока не используется.

Все данные большого объема (медиафайлы, резервные копии, образы виртуальных машин) и вообще все постоянные данные хранятся на домашнем сервере, к диску которого я подключаюсь по sshfs или nfs. Локально на Chromebook я обычно храню только то, с чем работаю на текущий день — обычно пару книг, копию содержимого почтового ящика, копии 2-3 репозиториев кода и копию базы данных режима Org. .

В начале и конце рабочего дня синхронизируюсь с сервером.

Таким образом, Chromebook получает очень высокую автономность, которая невозможна в Chrome OS. Теги: #linux #настройка Linux #chrome os #chromebook #baytrail

Вместе с данным постом часто просматривают: