tl; dr: я ищу «канонический» или «рекомендуемый» способ установки (cli) .deb пакетов на Ubuntu touch
Я использую Ubuntu на моем рабочем столе и сервере в течение года, и я очень доволен. Теперь я купил первый телефон Ubuntu, BQ Aquaris e4.5 Ubuntu Edition. Однако я обнаружил, что не могу установить нормальные .deb
пакеты или что-то установить с помощью apt-get
. Как я могу «рутировать» мой телефон, чтобы я мог установить «нормальные» .deb
пакеты?
Я попробовал это сам. Я знаю, во-первых, сделать вашу файловую систему доступной для записи. Я сделал следующие шаги, но затем застрял из-за ошибки dpkg.
# Desktop:
sudo add-apt-repository ppa:phablet-team/tools
sudo apt-get update
sudo apt-get install phablet-tools
# Phone:
Security & Privacy: Lock phone: Lock when idle: Never
About this phone: Developer Mode: Developer Mode ON
# connect phone to PC via USB
# Desktop:
adb devices
# no device detected so I've manually added file
touch /home/username/.android/adb_usb.ini
# with content: 0x2a47
sudo adb kill-server
sudo adb start-server
adb devices # now my phone is on the list
# Phone:
sudo test -w filename && echo "Writable" || echo "Not Writable"
# verified it is writable
sudo add-apt-repository ppa:phablet-team/ppa
sudo apt-get update && sudo apt-get upgrade
И это место, где ошибка начинает блокировать меня:
dpkg: error processing archive /var/cache/apt/archives/powerd_0.16+15.04.20150430-0ubuntu1_armhf.deb (--unpack):
unable to make backup link of `./usr/share/powerd/device_configs/config-default.xml' before installing new version: Invalid cross-device link
Итак, я попытался
sudo apt-get install -f
Но он застрял в «Основной конфигурации Bluetooth». Я перезапустил телефон, но он больше не хотел включаться. Я попробовал вариант загрузки Recover
. Это сработало. Я попробовал install -f
снова, и на этот раз это сработало. Но после выполнения upgrade
у меня все еще была та же ошибка.
Создайте chroot внутри домашнего каталога:
mkdir -p vivid-chroot cd vivid-chroot wget http://cdimage.ubuntu.com/ubuntu-touch/vivid/daily-preinstalled/current/vivid-preinstalled-touch-armhf.tar.gz sudo tar -zxvf vivid-preinstalled-touch-armhf.tar.gz
Затем используйте chroot и установите все необходимые инструменты CLI внутри этого chroot:
cd ~/vivid-chroot sudo chroot . apt-get update apt-get install git
Для выполнения определенных действий может потребоваться привязка монтирования некоторых каталогов. Вам нужно будет позаботиться об этом, если вы хотите удалить chroot из телефона или выполнить другие деструктивные действия.
sudo mount --bind /proc /home/phablet/vivid-chroot/proc sudo mount --bind /dev /home/phablet/vivid-chroot/dev sudo mount --bind /sys /home/phablet/vivid-chroot/sys
Это не исчерпывающий список, но вы можете связать другие каталоги по мере необходимости аналогичным образом. Вам не нужно создавать chroot в домашнем каталоге, если у вас есть внешнее устройство хранения данных для его создания, например, SD-карта. Однако не все телефоны имеют слоты для карт SD. Если вы хотите создать chroot на SD-карте, просто замените домашний каталог в командах выше на путь к каталогу на альтернативном носителе, где вы хотите создать chroot.
Чтобы перемонтировать корневую файловую систему как записываемую, выполните следующую команду на телефоне (скачайте терминальное приложение, если вы еще этого не сделали):
sudo mount -o remount,rw /
Пожалуйста, обратите внимание, что после перезагрузки телефона, /
снова доступно только для чтения . Если вы хотите, чтобы это было постоянно, измените /etc/fstab
. Тем не менее, касание Ubuntu на BQ еще не находится на главном репо Ubuntu руки. Установка таких вещей как tree
или libreoffice
еще не работает. Они могут быть в последней версии devel.
(есть еще много хорошего в репо, например, инструменты командной строки и т.п.)
Как запустить последний разрабатываемый релиз Ubuntu touch на bq телефоне?
Когда вы ломаете вещь полностью, вы можете просто перепрошить ваше устройство.
Предупреждение: это всего лишь хак, чтобы избавиться от проблемы кросс-устройства ссылка на apt-получить обновление с пакетом Powerd. это не "UBUNTU" сертифицированное решение
Предпосылка: сделав R/W установку ubuntu с:
phablet-config writable-image
Скопируйте загруженный файл powerd*.deb с телефона на компьютер по следующему пути:
/var/cache/apt/archives/
На ПК, распакуйте .deb файл, удалите файл /usr/share/ powerd/device_configs/config-default.xml (по моим тестам это не найдено):
su - root
mkdir tmp
dpkg-deb -R powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb tmp
rm tmp/usr/share/powerd/device_configs/config-default.xml
mv powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb old.deb
dpkg-deb -b tmp powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb
Все должно быть сделано как root для сохранения оригинальных прав доступа к пакетным файлам и dirs. Перепакуйте, скопируйте обратно на телефон, затем установите с:
sudo dpkg -i powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb
Вы все равно получите ошибку:
"/usr/share/powerd/device_configs/config-default.xml": Device or resource busy
But at the end the package is updated.
Now if you do: sudo apt-get upgrade
ошибка исчезла.
Похоже, мой телефон BQ Aquaris работает хорошо и стабильно.
Как уже было отмечено, вы должны установить ARM-совместимый chroot на ваше устройство и установить все необходимые пакеты в этот chroot. Однако, сделав это в вашем домашнем каталоге, вы потеряете много ценного места. Вместо этого, это можно сделать на SD-карте с помощью компьютера, работающего под управлением соответствующей операционной системы Linux (проверено на Linux Mint 17 и Ubuntu Trusty). Так как я больше нигде не нахожу никакой информации об этом, я поместил её сюда как ответ на старый вопрос.
Следующие инструкции предполагают, что вы хотите установить debian jessie chroot в каталог jessie.
Для создания образа объемом 1 ГБ под названием IMAGE.img в текущем рабочем каталоге сделайте:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Обратите внимание, что B в гигабайтах пропущена. "if" означает "входной файл", "of" - "входной файл", "из" - "из" - "из", "из" - "из". "выходной файл" и "bs" для "размера блока".
Есть более эффективные команды, но они работают только на определенных типов файловых систем, насколько я знаю. Эта также работает на SD-карте или временный сотрудник. Пожалуйста, обратите внимание на использование /dev/zero и не /dev/random или /dev/urandom. так как это заняло бы намного больше времени и заставило бы его перевести образ между устройствами позже.
Без файловой системы телефон не смог бы хранить какие-либо данные на изображение. Без файловой системы вы не сможете смонтировать образ в каталог, только блочному устройству.
Эта bash-команда выведет следующее пустое зацикленное устройство в переменную LOOP
:
$LOOP=$(sudo losetup -f)
Далее, присваиваем изображение блочному устройству:
sudo losetup $LOOP IMAGE. img
Далее создаем на нём файловую систему ext4:
sudo mkfs -t ext4 $LOOP
Далее отсоединяем образ от зацикленного устройства:
sudo losetup -d $LOOP
Если получите команду не находить ошибок, просто установите недостающие программы.
Теперь создайте временную директорию в рабочей директории:
mkdir jessie
и смонтируйте файл образа IMAGE.img:
sudo mount -o loop IMAGE.img $(pwd)/jessie
Команда pwd
удостоверится, что вы указали абсолютный путь к вашему
текущий рабочий каталог.
Следующим шагом будет использование qemu-debootstrap для загрузки необходимых файлов.
Это легко, если доступен qemu-debootstrap, как в случае с Ubuntu и
производные ОС. Если при выполнении команды не найдены ошибки
qemu-debootstrap --help
, попробуйте установить соответствующий пакет, которым может быть
выполняется на Ubuntu через:
sudo apt-get install qemu-user-static
Чтобы загрузить все необходимые файлы и подготовить новую ОС, выполните следующую команду:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Пожалуйста, обратите внимание, что первая jessie
означает версию ОС, в то время как первая jessie
означает версию ОС, тогда как
вторая jessie
обозначает директорию, в которую должны быть установлены файлы. Теперь вы можете размонтировать образ, так как остальная работа должна быть сделана на
Телефон. Сделайте это через:
sudo umount $(pwd)/jessie
Если вы не можете установить qemu-debootstrap, обратитесь к следующему разделу.
Пожалуйста, пропустите этот раздел, если у вас есть qemu-debootstrap. Вы все равно
нужна родная дебютстрап для твоей архитектуры. Если так случится, что
armhf, просто используйте вышеуказанную командную строку, но замените qemu-debootstrap
на
debootstrap
. Если нет, следуйте этому разделу.
Чтобы загрузить все необходимые файлы для новой ОС, выполните следующую команду:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Теперь вы можете размонтировать образ, так как остальная работа должна быть сделана на Телефон. Сделайте это через:
sudo umount $(pwd)/jessie
Теперь лучше всего создать tar-архив из этого, который вы затем скопируете в свой Телефон. Не имеет значения, будет ли архив помещен на SD-карту, или внутреннее хранилище. Создайте архив на рабочем столе, используя:
tar -cvzf jessie.tar.gz IMAGE.img
Теперь, на вашем телефоне, включите поддержку ssh для копирования изображения. Вы также можете
сделайте это с помощью USB-кабеля. Так как ssh-сервер перезагружается на каждом
перезагрузитесь, запустите ssh-сервис по телефону:
sudo service ssh start
Далее скопируйте изображение через:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
где переменная COPYDIR
содержит директорию, в которой должно быть изображение.
хранятся. Эта команда предполагает, что ваше имя пользователя на телефоне является phablet и
имя хозяина телефона - ubuntu-phablet. Вы можете выяснить это, выпустив echo $USER
.
и echo $HOSTNAME
на телефоне, соответственно.
Теперь Вам нужно только извлечь архив, где бы Вы ни хотели, чтобы изображение находилось. Допустим, каталог, в котором вы хотите разместить изображение.
хранится в переменной IMAGEDIR
. Извлеките изображение там через bash
команда:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Теперь можно удалить архив:
rm $COPYDIR/jessie.tar. gz
Если вы не включили сервер ssh на телефоне, сделайте это сейчас с помощью:
sudo service ssh start
Далее, смонтируйте ваш образ в выбранную вами директорию (в данном случае "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE. img $(pwd)/jessie
Теперь впервые введите свой chroot через:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Если на вашем компьютере был доступен qemu-deboottrap, то все готово. Используйте . вышеуказанные 2 команды для подключения к вашему chroot. Если нет, то вы все равно должны выполнить следующую команду, как только вы окажетесь внутри вашей корзины, чтобы правильно настроить OS:
/debootstrap/debootstrap --second-stage
Если вы выполните вышеперечисленные шаги, то сможете получить доступ к своему chroot с помощью этот простой скрипт на телефоне:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Вы должны сначала вставить ssh в свой телефон с телефона из-за ограничений терминала приложения. Терминальное приложение может выполнять двоичные файлы только в определенных местах, и ни ваш домашний каталог, ни SD-карта не входят в их число. Однако служба ssh не имеет таких ограничений.