Введение
Предлагается быстрый и легкий метод для установки браузера Google Chromium (open source вариант браузера Chrome) в Linux для ARM (armel и armhf) устройств — например, Raspberry PI, ODroid, Cubieboard и т.д. Проблема в том, что в большинстве дистрибутивов Linux, например, Debian, Kali Linux официальный пакет Chromium доступен только для архитектур amd64 и i386. Версии для armhf и armel отсутствуют. Сборка пакета Chromium, например, из родного депозитария Debain не срабатывает, т.к. в коде отсутствуют инструкции по сборке под arm. Вариант от Google тоже компилируется с ошибками. Судя по отзывам в Интернете, возможно, удастся настроить кросс-платформенную сборку под ARM на обычных x86 компьютерах, либо попытаться сделать сборку непосредственно на arm, что может занимать более суток, и не всегда заканчивается успешно. Мне например, так и не удалось собрать пакет из исходников непосредственно на arm. Пример установки приведен для Kali Linux 1.0.7 (форк Debian Wheezy) под ODroid, для других Debian-систем всё аналогично.
Установка Chromium
Установка будет происходить наиболее простым способом — путем установки в систему бинарного установочного пакета .deb — такой способ применим для любой системы типа Debian. Установочный пакет для старой версии Chromium можно скачать с сайта Marco. Для новых версий Chromium рекомендуется использовать репозитори Ubunty. Там же указаны все зависимости пакета. Для моей системы необходимо было еще загрузить пакет chromium-codecs-ffmpeg-extra.
На момент написания материала последней доступной для загрузки версией пакета Chromium была 34.0.1847.116-0ubuntu~1.12.04.0~pkg884. Порядок установки Chromium:
- Скачать .deb пакет Chromium, в моем случае это был chromium-browser_34.0.1847.116-0ubuntu~1.12.04.0~pkg884_armhf.deb
- Скачать .deb пакет chromium-codecs-ffmpeg-extra, в моем случае это был chromium-codecs-ffmpeg-extra_34.0.1847.116-0ubuntu~1.12.04.0~pkg884_armhf.deb
- Установить пакеты (возможно, Вам потребуется изменить имена файлов, если Вы скачали другие версии пакетов):
dpkg -i chromium-codecs-ffmpeg-extra_34.0.1847.116-0ubuntu~1.12.04.0~pkg884_armhf.deb chromium-browser_34.0.1847.116-0ubuntu~1.12.04.0~pkg884_armhf.deb
Установка завершена.
Устранение отсутствующих зависимостей
При установке пакетов может возникнуть проблема «unmet dependencies». В моем случае в системе была установлена старая (для Chromium, но последняя из ветки stable) версия пакета библиотеки libc6. Новая версия пакета была доступна только для ветки jessie (testing). Для обновления этого пакета необходимо добавить соответствующие репозитории в /etc/apt/sources.list:
deb http://ftp.us.debian.org/debian testing main contrib non-free
deb-src http://ftp.us.debian.org/debian testing main contrib non-free
deb http://ftp.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.debian.org/debian/ jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
Debian обычно содержит файл предпочтений, который корректно обрабатывает пакеты из разных версий таким образом, что стабильные пакеты имеют более высокий приоритет по сравнению с остальными. Это гарантирует, что внесенные выше изменения не переведут полностью всю систему на ветку testing. В моей версии Kali Linux такого файла предпочтений не было, поэтому пришлось его создать вручную — файл /etc/apt/preferences.d/main.pref со следующим содержимым:
Package: *
Pin: release n=kali
Pin-Priority: 350
Package: *
Pin: release n=kali-bleeding-edge
Pin-Priority: 300
Package: *
Pin: release n=jessie
Pin-Priority: 10
Здесь первые 2 блока описывают, что внутренние репозитарии Kali Linux имеют более высокий приоритет, чем пакеты Debian Jessie. Если Вы используете Debian Wheezy, то вместо этих 2 блоков, нужно оставить только один и указать в нем n=wheezy. После сохранения изменений нужно обновить информацию о репозитариях:
apt-get update
После этого нужно явным образом обновить пакет libc6:
apt-get install libc6 -t testing
В случае наличия других зависимостей, они устраняются аналогичным образом. После этого можно заново попытаться установить Chromium.
Установка поддержки Flash
Традиционный плагин flashplugin-nonfree в Linux не доступен под ARM устройства. Необходимо использовать плагин PepperFlash. Он свободно не распространяется Google, но его можно скачать с сайта Lee Harris PepperFlash-12.0.0.77-armv7h.tar.gz. Это плагин для ARMv7, взятый из Google OS с устройства Chromebook. Для тех, кто не доверяет сторонним источникам, могут попробовать выгрузить плагин самостоятельно. После скачивания архива нужно распакавать и положить папку Pepperflash в /usr/lib. После этого, нужно внести следующие изменения в конфигурационный файл Chromium, который располагается в /etc/chromium-browser/default. Конфигурационный файл нужно изменить так, чтобы в нем была следующая строка:
CHROMIUM_FLAGS="--ppapi-flash-path=/usr/lib/PepperFlash/libpepflashplayer.so --ppapi-flash-version=12.0.0.77"
Запуск Chromium с правами root
По умолчанию Chromium отказывается запускаться с правами root. Это можно исправит в конфигурационном файле /etc/chromium-browser/default.Конфигурационный файл нужно изменить так, чтобы в нем была следующая строка:
CHROMIUM_FLAGS="-password-store=detect -user-data-dir"
Если при этом требуется поддержка FLASH, тогда строка будет иметь вид:
CHROMIUM_FLAGS="--ppapi-flash-path=/usr/lib/PepperFlash/libpepflashplayer.so --ppapi-flash-version=12.0.0.77 -password-store=detect -user-data-dir"
Результаты
Имеется Chromium, который работает с поддержкой Flash на ARM-устройстве. Тестирование проводилось на ODROID-XU (armhf) с ОС Kali Linux 1.0.7. Скриншот:
Поддерживается функция авторизации Google, синхронизация всех закладок, истории и т.д., поддерживаются все расширения.
Автор: Raam