Roverbook steel. Проект Debian вместо Android.

Назад Главная


Debian lenny работает на Roverbook Steel без Android!

Автор:Sadmich HTTP

Debian lenny + X11 на Archos 70b ereader (RK2818)

debian archos 70b ereader
Чтобы развеять иллюзии, сразу объясняю: Debian запускается через chroot-окружение, доступ к X11 осуществляется через VNC-сервер. Способ кривоват, но было интересно.

xfce arvhos 70b ereader

Подготовка образа Debian

Устанавливаем debootstrap
apt-get install debootstrap
Создаём файл-контейнер размером 1Гб, а в нём - файловую систему ext2:
dd if=/dev/zero of=debian-arm.img bs=1 count=0 seek=1G
mke2fs -F debian-arm.img
Настройки mke2fs можно посмотреть в файле /etc/mke2fs.conf, и будьте предельно осторожны с командой dd - её неспроста расшифровывают как disk destroyer!

Создаём каталог debian-arm и монтируем в него debian-arm.img
mkdir -p debian-arm
mount -o loop debian-arm.img debian-arm
Подготавливаем минимальный образ Debian в директории debian-arm
debootstrap --verbose --arch armel --foreign lenny debian-arm http://mirror.yandex.ru/debian
Параметр verbose можно пропустить,
arch armel - обозначение целевой архитектуры,
foreign - указывается при отличии архитектуры хоста от целевой,
lenny - название релиза Debian,
debian-arm - каталог для инсталляции
и http://mirror.yandex.ru/debian - используемое зеркало
debootstrap setup
Вытягивается 149 пакетов, в некоторых случаях оптимальнее выбрать зеркало из ближайших в списке http://www.debian.org/mirror/list
debootstrap
По завершении отмонтируем образ и уберём лишнее
umount debian-arm
rm -r debian-arm

Подготовка android-устройства

Подключаем девайс к копьютеру и отключаем usb-накопитель, оставив режим "отладка по usb", после чего запускаем adb из под рута.

Корректируем перенаправления к исполняемым файлам:
export bin=/system/bin
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
Указываем пути к образу debian и будущей точке монтирования:
export img=/sdcard/sdcard/debian-arm.img
export mnt=/data/debian
android PATH modification
Создаём каталог перекрытия режима записи каталога system и точку монтирования образа:
busybox mkdir -p /data/systemrw
busybox mkdir -p $mnt
Загружаем модуль вспомогательной файловой системы aufs, после чего открываем ветвь system для записи:
insmod /data/local/aufs.ko
busybox mount -t aufs -o br=/data/systemrw=rw:/system=ro none /system
aufs branch mount
Если смысл этих манипуляций не ясен, то ранее я подробно описывал рецепт каскадно-объединённого монтирования на rk2818

Смотрим используемые псевдоустройства:
busybox losetup -a и ls /dev/block/loop*
Выбираем следующее по порядку и создаём новое:
busybox mknod /dev/block/loop8 b 7 0
Здесь loop8 - это имя псевдоустройства, опция b указывает на блочный спец. файл, а 7 и 0 - это т.н. старший и младший номера, указывающие на характер устройства (cat /proc/devices для получения спиcка по конкретной системе)

Монтируем debian-arm.img в полученное устройство
busybox losetup /dev/block/loop8 $img
Теперь, обращаясь к устройству /dev/block/loop8, мы будем обращаться к файлу (то есть файловой системе) на /sdcard/sdcard/debian-arm.img

Монтируем /dev/block/loop8 в /data/debian
busybox mount -t ext2 -o noatime,nodiratime /dev/block/loop8 $mnt
Здесь -t ext2 указывает на тип файловой системы, a -o noatime,nodiratime запрещает для заданной ф/с обновление полей дескриптора времени доступа.
android loop mount
Завершаем монтирование procfs и sysfs
busybox mount -t proc proc $mnt/proc
busybox mount -t sysfs sysfs $mnt/sys
Указываем тип терминала и домашнюю директорию
export TERM=linux
export HOME=/root

Включаем режим маршрутизатора (см. /proc/sys/net/ipv4/ip_forward)
busybox sysctl -w net.ipv4.ip_forward=1
Определяем расположение узла localhost
busybox echo "127.0.0.1 localhost" > $mnt/etc/hosts
Возможно, потребуется также сконфигурировать DNS (в моём случае необязательно)
echo "nameserver 8.8.8.8" > $mnt/etc/resolv.conf
echo "nameserver 8.8.4.4" >> $mnt/etc/resolv.conf
resolc.conf and ip forwarding setup
Наконец, вызываем chroot:
busybox chroot $mnt /bin/bash
И завершаем создание базовой системы
/debootstrap/debootstrap --second-stage
debootstrap second stage
Процесс не самый быстрый, по окончанию удаляем всё лишнее:
apt-get autoclean
clean system
Собственно, на этом настройку можно считать оконченной, но я вышел, чтобы смонтировать devpts (теперь это получится), добавил в окружение переменную USER и снова вызвал chroot.
busybox mount -t devpts devpts $mnt/dev/pts
export USER=root
busybox chroot $mnt /bin/bash

Отредактировал список репозиториев и проверил работу apt-get:
echo 'deb http://mirror.yandex.ru/debian lenny main' > /etc/apt/sources.list
apt-get update
add repository in sources.list
Для доступа к X11 понадобится tightvncserver и сама среда рабочего стола на выбор, я хотел протестировать LXDE и Xfce.
apt-get install lxde
Но глядя на то, как электронная книга спотыкается на установке, решил устанавливать пакеты по частям. Желающие могут разобраться с зависимостями командой apt-cache depends <имя_пакета>, мне было лень, ставил в таком порядке:
icewm, tightvncserver, python, hal, openbox, xserver-xorg, rpm, gdm, lxde, xfce4
Создаём к корне директорию tmp и настраиваем tightvncserver
mkdir tmp
vncserver
При первом запуске будет предложено ввести пароли для доступа и view-only режима: первый обязателен, а вот второй можно пропустить.
Вводим, после чего убиваем сервер командой
vncserver -kill :1
vncserver setup
Далее необходимо настроить запуск среды рабочего стола, отредактировав файл (/root/.vnc/xstartup) под xfce:
#!/bin/bash
xrdb /root/.Xresources
xsetroot -solid grey
startxfce4
Теперь можно снова запустить vnc-сервер, указав требуемое разрешение экрана.
Archos 70b ereader работает на разрешении 800x480, за вычетом области статуса остаётся 800x440:
vncserver -geometry 800x440
vnc server startup
Запускаем androidVNC, в настройках оставляем пустое имя пользователя, указываем пароль, адрес - localhost, порт - 5901, 24-bit color.
vnc android connection
Соединяемся и видим рабочий стол:
xfce over android
Сказать, что работает тормозно - значит не сказать вообще ничего. Можно попробовать поэкспериментировать с цветовыми режимами и перейти на grayscale :)
xfce archos 70b ereader
xfce archos 70b ereader
xfce archos 70b ereader
Редактируем /root/.vnc/xstartup для запуска LXDE:
#!/bin/bash
xrdb /root/.Xresources
xsetroot -solid grey
icewm &
lxsession
lxde over android
После установки экранной клавиатуры выставляем ей "always on top" - и можно сёрфить)
apt-get install matchbox-keyboard
lxde archos 70b ereader
LXDE менее прожорлив, чем xfce, однако не стоит ждать чудес. Зелёные пики индикатора загрузки ЦП прыгают до 100% при большинстве действий.
lxde archos 70b ereader
А вот Iceweasel порадовал: всё-таки классический интерфейс удобнее кпк-реализаций браузеров.

Окей, теперь аккуратно выходим. Андроиду-то всё равно: после перезагрузки мы увидим девственное устройство. Но если мы хотим еще поиграться с debian, мы должны корректно отмонтировать образ.

Гасим vnc-сервер и чистим tmp:
vncserver -kill :1
cd /
rm -r -f tmp
mkdir tmp
Убиваем все процессы, запущенные из-под chroot:
fuser -km /
Если это не удаётся - убиваем процессы вручную.

Принудительно размонтируем систему:
busybox umount -l -f $mnt/dev/pts
busybox umount -l -f $mnt/proc
busybox umount -l -f $mnt/sys
busybox umount -l -f $mnt
Отключаем созданный loop и режим маршрутизатора:
busybox losetup -d /dev/block/loop8
busybox sysctl -w net.ipv4.ip_forward=0
На этом все, разве что PATH можно вернуть в исходное состояние...
export PATH=/sbin:/system/sbin:/system/bin:/system/xbin
debian x11 over android

UPD: продолжаем насиловать электронную книгу, или

Chroot, Ubuntu и Rockchip RK2818



Прежде всего, пришлось поискать рабочее зеркало. На ports.ubuntu.com нет релиза jaunty, с archive.canonical.com arm-версия не хотела устанавливаться, а вот на old-releases.ubuntu.com меня ждала удача.

Соответственно, debootstrap запускается со следующими параметрами:
debootstrap --verbose --foreign --arch=armel --include ubuntu-desktop jaunty ubuntu-arm http://old-releases.ubuntu.com/ubuntu/

Здесь ubuntu-arm - это каталог, в который смонтирован образ, а опция --include указывает на установку необходимых пакетов - я пожалел читалку и решил выполнить second stage на ПК. Для этого потребуется эмуляция arm-архитектуры:
sudo apt-get install qemu-user-static
Копируем бинарник в рабочий каталог:
cp /usr/bin/qemu-arm-static ubuntu-arm/usr/bin/
Теперь можно сделать chroot в arm-окружение на i686 компьютере:
chroot ubuntu-arm
Если система не распознаёт формат, можно попробовать установить binfmt-support, но на большинстве современных дистрибутивов этого не требуется.

Секонд стейдж:
./debootstrap/debootstrap --second-stage
В процессе установки появлялись ошибки конфигурирования, но со второго или третьего раза система встала.
W: Failure while configuring required packages.
Корректируем sources.list, выходим и chroot и подчищаем мусор:
echo 'deb http://old-releases.ubuntu.com/ubuntu jaunty main' > /etc/apt/sources.list
echo 'deb http://old-releases.ubuntu.com/ubuntu jaunty universe' >> /etc/apt/sources.list
echo 'deb http://old-releases.ubuntu.com/ubuntu jaunty-updates universe' >> /etc/apt/sources.list
exit
rm ubuntu-arm/usr/bin/qemu-arm-static
Отключаем образ, переносим на читалку и наслаждаемся:





Сайт создан в системе uCoz