Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Запуск debian на android 4.4.4
Запуск debian на android 4.4.4
Перепробовав кучу приложений по запуску линукс на свем планшете
Мегафон логин я пришла к выводу что значительная их часть предназначена
для запуска на устройствах 4.3.0 и старше. Мне порядком надоело разбираться
в чужих скриптах запуска в поисках ошибок и подумала что в моем случае будет проще
запустить мой любимый дебиан создав все с ноля. Тем более что мне нужна минимальная
система для работы в консоли, а значит и скрипт запуска ссожмется до десятка
строчек кода. Приступим. Что бы не забыть сразу скажу что нам понадобится
установить android терминал, легко найти в google market по запросу terminal Jack Palevich
Страничка проекта на гитхабе https://github.com/jackpal/Android-Terminal-Emulator
После установки обязательно нужно выбрать в настройках тип "linux" для корректной работы.
Еще будут необходимы права рут на нашем девайсе и для их управления прграмма SuperSU ожидающая
загрузки на том же google market. Приходится сознавать, что ее я ранее
незаслуженно забраковала по причине некоторой неровности своих рук, о чем я коснусь
в скользь несколько позже и этим исправлюсь перед читателями моей предыдущей темы
Установка линукс на планшет MFLogin3T на нашем форуме.
Буду описывать все по упрощенной схеме пропуская не существеенные моменты,
например у меня сд карта с тремя разделами vfat ext4 ext2 но описываю что мы
устанавливаем на сд карту 1G отформатированную в ext2, можно выбрать и ext4,
но заметте что в любом случае в опциях команды mount нужно обязательно выбирать
параметр ext4 иначе в место желаемого результата мы получим сообщение об ошибке.
Карточку я предварительно отформатировала на планшете с помощью apated из того же
google market но все это прекресно можно сделать и на своем десктопе.
Вставляем sd карточку в usb адаптер и подключаем к компу. У меня она определилась
как /dev/sdc, скоректируйте код если на вашей машине по другому. Открываем терминал
и устанавливаем отсутствующие инструменты на компе
Отмонтируем нашу карточку и смонтируем в каталог /mnt
Начинаем установку минимальной системы через debootstrap
По завершению выполняем следом команду
Не пугайтесь что так много адресных параметров, все прекрасно работает.
К стати сказать устанавливать прямиком на устройство тоже не обязательно,
достаточно при помощи тулзы dd создать образ необходимого размера и выше
приведенные манипуляции произвести над ним
Или в продвинутой нотации
Создаст и покажет какое луп устройство связано с образом, чаще это /dev/loop0
А как его подключить на андрюше я сделаю в конце небольшое пояснение. Можно
и не подключать, а приготовленный образ с системой переместить на планшет и в терминале
побитно опять же через утилиту dd скопировать все на
подготовленный за раннее свободный раздел карточки аналогичного размера или
несколько большего во избежание не хватки места. Все теперь у нас готова система
на карточке без загрузчика и ядра, но ведь оно нам и не надо. Вставляем карточку в планшет.
Так как у меня на карточке 3 раздела и первый автоматом монтируется как накопитель,
второй тоже монтирует на автомате приложение под названием link2sd увеличивая тем самым
внутреннюю память для устанавливаемых приложений. Третий же раздел в1G у меня
просто определяется как устройство /dev/block/mmcblk1p3 и не смонтированно ни где.
Если на карточке у вас будет как описано один раздел в формате ext2 то он также не
будет монтироватся автоматом из за ошибки в типе файловой системы и поэтому скрипт
будет идентичным за исключением номера раздела устройства. Это фактически и есть наш
жесткий диск с линухом. Теперь пишем скрипт управления. Но перед этим выполним одну команду
Ну и теперь сам скрипт. Если вы поместите его в директорию /system/bin
как будет показано ниже, необходимо будет в начале добавить Sha bang
В предыдущей теме у меня появлялись ошибки при запуске линя когда я обновляла
конфигурацию приложения SuperSU. Анализ выявил следующее что при запуске линя
ему передавались глобальные переменные LD_PRELOAD и LD_LIBRARY_PATH с установленными
значениями для андроида. Я посмотрела значения этих переменных на десктопе и так как
они были равны пустому значению то и я определила для передачи в линукс аналогично.
Их значения записаны у меня как два одинарных апострофа без пробела. После
этого запуск debian под управлением SuperSU происходит корректно. Еще раз извинюсь
перед создателями этого приложения за не уместную критику не разобравшись в
суте проблеммы. Файл скрипта у меня называется linuxin но ни кто вам не помешает
назвать его например linuxim. Да и я наверное переименую. Поместила я его во
внутреннюю память телефона смонтирванную для чтения,запись и запускается он
командой sh ./sdcard/linuxin
По команде exit мы выйдем из окружения чендж рут и скрипт автоматически размонтирует
все в нем смонтированное и вернет систему к изначальному состоянию.
Можем по новому запускать и работать но я бы посоветовала перемонтировать
раздел /system в андроиде с опцией чтение запись, поместить скрипт в директорию
/system/bin установить права на выполнение и перемонтировать опять раздел в
тоько чтение или перезагрузится и наш скрипт будет запускаться всего одной командой linuxim
Имеем ввиду что у нас установлена минималка, а значит
правим sources.list по средством команды echo, Обновляемся, устанавливаем необходимое #расширение для bash
Чтобы система не ругалась что не может нормально интерактивно
общаться с пользователем установим
Установим локалку по этому мануалу Обустраиваем контейнер docker
Да! Чтобы не редактировать фалы через echo установим текстовый редактор
так же как в высше преведенной теме. Не забываем работа в docker ни чем не отличается
от нашей установки. Так же не забываем установить локальное время.
Корректный выбор для тех кто проживает по Московскому времени будет город Минск!
Так же не помешает установить командой passwd пароль рут и создать командой
adduser user своего пользователя. Ну и в заключение как и обещала пара команд для монтирования
образа как луп устройство, для подсказки, с чем я уверена каждый заинтересовашийся разберется
самостоятельно, а нет, я всегда рядом. Для этой альтернативы необходимо установить
busybox с google store. У меня кастомная прошивка уже оснащена подобными инструментами.
Ну и теперь сам продвинутый метод монтирования луп устройства.
Ну а дальше мы уже проходили.
Только в конце скрипта не забудим добавить строчку дизасоциации устройства
Это мой дебют, моя первая статья написанная на планшете на новой, "старой" работе.
Мне отдали этот девайс как дешевое и крайнее неудобство.
У меня под рукой кроме него больше ни чего нет. Пока я писала статью, получила
большое моральное удовлетворение от работы с любовью настроенной вещью.
Вывод, устройство на котором запускается линь становится бесценным и нивелирует
изначальную стоимость любого дивайса. Всем удачи.
[album]212[/album]
[album]213[/album]
[album]214[/album]
[album]215[/album]
[album]216[/album]
Мегафон логин я пришла к выводу что значительная их часть предназначена
для запуска на устройствах 4.3.0 и старше. Мне порядком надоело разбираться
в чужих скриптах запуска в поисках ошибок и подумала что в моем случае будет проще
запустить мой любимый дебиан создав все с ноля. Тем более что мне нужна минимальная
система для работы в консоли, а значит и скрипт запуска ссожмется до десятка
строчек кода. Приступим. Что бы не забыть сразу скажу что нам понадобится
установить android терминал, легко найти в google market по запросу terminal Jack Palevich
Страничка проекта на гитхабе https://github.com/jackpal/Android-Terminal-Emulator
После установки обязательно нужно выбрать в настройках тип "linux" для корректной работы.
Еще будут необходимы права рут на нашем девайсе и для их управления прграмма SuperSU ожидающая
загрузки на том же google market. Приходится сознавать, что ее я ранее
незаслуженно забраковала по причине некоторой неровности своих рук, о чем я коснусь
в скользь несколько позже и этим исправлюсь перед читателями моей предыдущей темы
Установка линукс на планшет MFLogin3T на нашем форуме.
Буду описывать все по упрощенной схеме пропуская не существеенные моменты,
например у меня сд карта с тремя разделами vfat ext4 ext2 но описываю что мы
устанавливаем на сд карту 1G отформатированную в ext2, можно выбрать и ext4,
но заметте что в любом случае в опциях команды mount нужно обязательно выбирать
параметр ext4 иначе в место желаемого результата мы получим сообщение об ошибке.
Карточку я предварительно отформатировала на планшете с помощью apated из того же
google market но все это прекресно можно сделать и на своем десктопе.
Вставляем sd карточку в usb адаптер и подключаем к компу. У меня она определилась
как /dev/sdc, скоректируйте код если на вашей машине по другому. Открываем терминал
и устанавливаем отсутствующие инструменты на компе
Код: Выделить всё
apt install debootstrap qemu-user-static
Начинаем установку минимальной системы через debootstrap
Код: Выделить всё
debootstrap --arch=armhf --variant=minbase --foreign --no-check-gpg --verbose jessie /mnt http://ftp.de.debian.org/debian
Код: Выделить всё
sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin
Код: Выделить всё
LANG=C sudo chroot /mnt /usr/bin/qemu-arm-static /bin/bash ./debootstrap/debootstrap --second-stage
Код: Выделить всё
sudo mkdir /mnt/sdcard #создаем каталог для подключения sd карты планшета
достаточно при помощи тулзы dd создать образ необходимого размера и выше
приведенные манипуляции произвести над ним
Код: Выделить всё
dd if=/dev/zero of=debian.img bs=1M count=1024
sudo mkfs.ext2 debian.img
sudo mount -o loop debian.img /mnt
Код: Выделить всё
dd if=/dev/zero of=debian.img bs1M count=1536
sudo losetup --find --show debian.img
Код: Выделить всё
sudo mkfs -t ext4 /dev/loop0
sudo mount /dev/loop0 /mnt
и не подключать, а приготовленный образ с системой переместить на планшет и в терминале
побитно опять же через утилиту dd скопировать все на
подготовленный за раннее свободный раздел карточки аналогичного размера или
несколько большего во избежание не хватки места. Все теперь у нас готова система
на карточке без загрузчика и ядра, но ведь оно нам и не надо. Вставляем карточку в планшет.
Так как у меня на карточке 3 раздела и первый автоматом монтируется как накопитель,
второй тоже монтирует на автомате приложение под названием link2sd увеличивая тем самым
внутреннюю память для устанавливаемых приложений. Третий же раздел в1G у меня
просто определяется как устройство /dev/block/mmcblk1p3 и не смонтированно ни где.
Если на карточке у вас будет как описано один раздел в формате ext2 то он также не
будет монтироватся автоматом из за ошибки в типе файловой системы и поэтому скрипт
будет идентичным за исключением номера раздела устройства. Это фактически и есть наш
жесткий диск с линухом. Теперь пишем скрипт управления. Но перед этим выполним одну команду
Код: Выделить всё
mkdir -p /data/local/tmp/linux #создаем каталог монтирования
как будет показано ниже, необходимо будет в начале добавить Sha bang
Код: Выделить всё
#!/system/bin/sh
export MNT=/data/local/tmp/linux
export PATH=/system/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH
export LD_PRELOAD=''
export LD_LIBRARY_PATH=''
export TERM=linux
export HOME=/root
mount -t ext4 /dev/block/mmcblk1p3 $MNT # mmcblk1p1 если карта только с одним разделом
mount -t devpts devpts $MNT/dev/pts
mount -t proc proc $MNT/proc
mount -t sysfs sysfs $MNT/sys
mount -o bind /storage/sdcard1 $MNT/sdcard # если карточка только с одним разделом
#заменяем sdcard1 на sdcard0 и у вас будет в линуксе доступна общая внутренняя
#память для для двух систем
busybox sysctl -w net.ipv4.ip_forward=1 # если не установлен busybox можно заменить
#на echo с записью в sysctl.conf или пропишем nameserver 8.8.8.8 в resolv.conf
chroot $MNT /bin/bash -l #после этой команды выполнение скрипта прекращается до выхода
# из чейндж рута
umount $MNT/dev/pts # продолжение работы после команды exit из чендж рута
umount $MNT/proc
umount $MNT/sys
umount $MNT/sdcard
umount $MNT
конфигурацию приложения SuperSU. Анализ выявил следующее что при запуске линя
ему передавались глобальные переменные LD_PRELOAD и LD_LIBRARY_PATH с установленными
значениями для андроида. Я посмотрела значения этих переменных на десктопе и так как
они были равны пустому значению то и я определила для передачи в линукс аналогично.
Их значения записаны у меня как два одинарных апострофа без пробела. После
этого запуск debian под управлением SuperSU происходит корректно. Еще раз извинюсь
перед создателями этого приложения за не уместную критику не разобравшись в
суте проблеммы. Файл скрипта у меня называется linuxin но ни кто вам не помешает
назвать его например linuxim. Да и я наверное переименую. Поместила я его во
внутреннюю память телефона смонтирванную для чтения,запись и запускается он
командой sh ./sdcard/linuxin
По команде exit мы выйдем из окружения чендж рут и скрипт автоматически размонтирует
все в нем смонтированное и вернет систему к изначальному состоянию.
Можем по новому запускать и работать но я бы посоветовала перемонтировать
раздел /system в андроиде с опцией чтение запись, поместить скрипт в директорию
/system/bin установить права на выполнение и перемонтировать опять раздел в
тоько чтение или перезагрузится и наш скрипт будет запускаться всего одной командой linuxim
Код: Выделить всё
busybox mount -o remount,rw /system
cp /sdcard/linuxim /system/bin/
chmod 755 /system/bin/linuxim
busybox mount -o remount,ro /system
правим sources.list по средством команды echo, Обновляемся, устанавливаем необходимое
Код: Выделить всё
apt install apt-utils
apt install bash-completion
Чтобы система не ругалась что не может нормально интерактивно
общаться с пользователем установим
Код: Выделить всё
apt install dialog whiptail
Да! Чтобы не редактировать фалы через echo установим текстовый редактор
так же как в высше преведенной теме. Не забываем работа в docker ни чем не отличается
от нашей установки. Так же не забываем установить локальное время.
Код: Выделить всё
dpkg-reconfigure tzdata
Так же не помешает установить командой passwd пароль рут и создать командой
adduser user своего пользователя. Ну и в заключение как и обещала пара команд для монтирования
образа как луп устройство, для подсказки, с чем я уверена каждый заинтересовашийся разберется
самостоятельно, а нет, я всегда рядом. Для этой альтернативы необходимо установить
busybox с google store. У меня кастомная прошивка уже оснащена подобными инструментами.
Ну и теперь сам продвинутый метод монтирования луп устройства.
Код: Выделить всё
if [ ! -b /dev/block/loop255 ]; then
busybox mknod /dev/block/loop255 b 7 255 #создаем луп устройство если его нет
else :
fi
busybox losetup /dev/loop255 /path/image.img #связываем его с образом
mount /dev/loop255 /path/mnt #монтируем
Только в конце скрипта не забудим добавить строчку дизасоциации устройства
Код: Выделить всё
busybox losetup -d /dev/loop225
Мне отдали этот девайс как дешевое и крайнее неудобство.
У меня под рукой кроме него больше ни чего нет. Пока я писала статью, получила
большое моральное удовлетворение от работы с любовью настроенной вещью.
Вывод, устройство на котором запускается линь становится бесценным и нивелирует
изначальную стоимость любого дивайса. Всем удачи.
[album]212[/album]
[album]213[/album]
[album]214[/album]
[album]215[/album]
[album]216[/album]
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Re: Запуск debian на android 4.4.4
Я написала в коде монтирования луп устройства в андроиде следующее
Когда мы делаем асоциацию луп устройства на компе мы просто можем написать
Это значит что первое свободное луп устройство свяжется с нашим образом и все!
В андроиде многие команды имеют урезаные возможности и такая простота превращается
в большую конструкцию. И в добавок по своей сути конструкция не гибкая а занчит не правильная.
Я написала костыль который способен заменить отсутствующую опцию
в андродовской утилите losetup:
И все. образ будет асоциироваться с первым свободным устройством
И в конце скрипта будет достаточно следующей строчки для освобождения
Это позволит пользоваться стандартными свободными устройствами
и не создавать помехи системе.
Код: Выделить всё
if [ ! -b /dev/block/loop255 ]; then
busybox mknod /dev/block/loop255 b 7 255
else :
fi
busybox losetup /dev/loop255 debian.img
mount /dev/loop255 /mnt
Код: Выделить всё
a=$(sudo losetup --find --show debian.img)
mount $a /mnt
В андроиде многие команды имеют урезаные возможности и такая простота превращается
в большую конструкцию. И в добавок по своей сути конструкция не гибкая а занчит не правильная.
Я написала костыль который способен заменить отсутствующую опцию
в андродовской утилите losetup:
Код: Выделить всё
a=$(losetup -f)
losetup /dev/block${a:4} debian.img
mount /dev/block${a:4} /mnt
И в конце скрипта будет достаточно следующей строчки для освобождения
Код: Выделить всё
losetup -d /dev/block${a:4}
и не создавать помехи системе.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay