Linux on android sd card

Run Ubuntu from SD Card on Android Tablet

I’ll be acquiring my first tablet in a few weeks, and haven’t tinkered with Android much besides my 1st gen Motorola Droid (I had an HTC Sense, but a power surge fried it and turned it into a brick, same with my old laptop) I feel like such a noob asking this but first I want to clarify that. I DON’T wanna install Ubuntu on the tablet! I still want Android, I just wanna be able to run Ubuntu directly off of a SD Card or Flash Drive. Now I have Ubuntu 11.04 on my old flash drive, and was wondering if I can boot directly to Ubuntu from my flash drive on the tablet. I figure it’s possible, just don’t know if it’s a simple plug in and go type concept, not sure if I’ll have to install any additional applications in order to get it functioning properly. I figure it’s more then possible. I just want to know what I’m doing prior before I do anything. So if anyone has any tips it’d be greatly appreciated.

I imagine what you want to do might be possible in theory. But it is going to FAR from a «plug in and go type concept». You will likely have a lot of very extensive work on your hands to even get this almost working

This is probably on topic here, but you might get better answers over at Ask Ubuntu. I know for sure that you can run Ubuntu on an Android device, but I don’t know if you can run it off of an SD card.

I suppose I can run it as a virtual machine inside of the tablet, which is safer, but sharing the ram may make it more sluggish as it has 512MB of DDR3. With Ubuntu already on my flash drive I would prefer to use that than installing it all over again. It sounds like it’d be easier as it is a simple concept, but haven’t found any luck searching. Thanks for the link for Ask Ubuntu btw.

@mikethedj4 the thing is though android doesn’t really have a concept of «boot from thumbdrive» the same way that normal PCs do. You’d likely have to heavily modify the android system to allow for that. Then after that you’d have to probably have an ubuntu thumbdrive that was meant specifically for running on an android device as opposed to whatever you have now which is probably meant for PCs. I’m afraid you are probably wading into un-explored territory here, so you are going to have to do a lot of the legwork yourself.

Читайте также:  Установка php oracle linux

Well that sucks. I’ll go with a virtual machine then. I do hope this gets implemented somehow it’d be real nice. I’ll leave this question open encase someone makes some modification/hack to enable this capability.

Источник

Boot Ubuntu on smartphone SD card?

Now here’s what I want: Ubuntu on the SD card that lives in my phone. I like using Ubuntu portably and my phone as a flash drive, but I haven’t been able to make these work together yet. I’ve tried booting off my Huawei U8800 (Android 2.2) and Nokia E66 with a micro-SD card (with 11.10, boots OK in a card-reader) on an eeepc 901 without luck. The Huawei doesn’t show up in the BIOS boot menu. BIOS sees the Nokia but halts at «Boot error». I guess this is related to the phone’s flash drive emulation and how it handles bootsectors, but I don’t know enough about how that works to go any further. Has anyone succeeded in this?

2 Answers 2

Some phones present themselves as a USB Mass Storage device, but with multiple «partitions». One of these will be the SD card and the other will be a static partition used to store things like the Windows driver software for the phone.

What is the output of lsusb -v when you plug your phone and memory card into a Linux computer?

I just tried to do that on my Nexus One. I had to rsync from an existing installation, and installed the boot loader manually to get Ubuntu on the micro SD card. The card switched into read only state a few times so I had to remount the card (card not in phone, mounted via integrated card reader) and restart rsync.

It may just be this card, but I have serious doubts that using such memory devices for desktop operating systems is a good idea. Notice that process management and logging cause a lot of writes to the memory and that in turn causes wear.

I tried booting from the card mounted in the Nexus One and hooked up via USB. I was able to choose the phone as boot device on my laptop, but it wasn’t able to find the bootloader. It may be specific to Android or the computer that the USB mass storage is not properly detected at boot, since Android disables UMS when it loses the USB connection.

You can try to reinstall the boot loader via Live CD to your SD card while mounted in your Nokia, as it sounds like there is some issue there.

grub-install --root-directory /media/path_to_your_sdcard /dev/device_name_of_your_sdcard 

UUID in grub.conf and fstab should already be correct.

Читайте также:  Check all processes running in linux

However I can not stress this enough: it is not a good idea. Future Android phones will probably drop UMS mode and micro SD card slots in favor of the MTD mode introduced with ICS.

Источник

Установка Archlinux на телефон с Android во второй раздел SD или просто подпапку системной карты памяти

image

Обычный, классический Botbrew имеет свой репозиторий, но в нем мало пакетов, что грустно. Тем, кто действительно хочет беспредельничать, понравится Borbrew-Basil, который использует дебиановский репозиторий emdebian. Однако, с ним нынче тоже все грустно, так как

As of July 2014, updates to the Emdebian distributions ceased. There will be no further updates and no further stable releases.

Получается, что даже те, кто когда-то поставил себе emdebian, нынче в пролете. Данный пост будет о том, как поставить на рутованный телефон Archlinux, но не как обычно в loop образ, а на родную файловую систему Android или второй раздел SD. Предполагается, что имеется рутованный телефон с установленным busybox, включенной отладкой по USB и утилита adb на основном компьютере.

Готовим устройство

Первое, что нам понадобится — создать папку, куда будем ставить наш линух. Варианта два — папка на разделе /data или отдельный ext4 раздел карты памяти. Во втором случае раздел надо будет как-то смонтировать в основную ФС телефона. Сделать это можно например с помощью Link2SD. Далее я буду исходить из того, что используется второй раздел SD, смонтированный в /data/sdext2, ставить будем в папку /data/sdext2/arch.
Также надо понять, репозиторий для какой архитектуры процессора будем использовать. У меня Qumo Quest 454 с процессором armv7l и для него подошел http://mirror.archlinuxarm.org/arm/.

Подключаем телефон по USB, заходим на него через adb и понеслась.

Собираем минимальный стартовый вариант

Для минимальной установки понадобятся следующие пакеты (выполняем от рута, версии пакетов со временем могут стать новее):

mkdir -p /data/sdext2/arch/packages cd /data/sdext2/arch/packages wget http://mirror.archlinuxarm.org/arm/core/acl-2.2.52-2-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/attr-2.4.47-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/bash-4.3.030-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/bzip2-1.0.6-5-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/curl-7.39.0-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/e2fsprogs-1.42.12-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/expat-2.1.0-4-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/filesystem-2014.10-3-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/gcc-libs-4.9.2-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/glibc-2.20-4-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/gpgme-1.5.2-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/keyutils-1.5.9-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/krb5-1.13-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libarchive-3.1.2-8-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libassuan-2.1.3-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libgpg-error-1.17-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libidn-1.29-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libssh2-1.4.3-2-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/lzo-2.08-3.1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/ncurses-5.9-6.1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/openssl-1.0.1.j-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/pacman-4.1.2-7-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/pacman-mirrorlist-20141208-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/readline-6.3.006-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/util-linux-2.25.2-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/xz-5.0.7-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/zlib-1.2.8-3-arm.pkg.tar.xz

После того, как все скачалось, распаковываем:

cd /data/sdext2/arch tar xvf packages/*.pkg.xz 

У нас получилось что-то типа минимальной установки Archlinux. Теперь попробуем сделать в нее chroot, предварительно смонтировав системные папки ():

busybox mount -t proc none ./proc busybox mount -o rbind /dev ./dev busybox mount -t sysfs none ./sys busybox mount -t tmpfs none ./tmp busybox mount -o size=10%,mode=0755 -t tmpfs none ./run chroot . /bin/bash 

Если все прошло успешно, то запустится bash из нашего минимального окружения и станет доступен pacman. У меня при запуске любого процесса система ругалась, что не может найти libsuc.so, описанный в LD_PRELOAD. В этом случае просто чистим LD_PRELOAD:

Читайте также:  Управление программным обеспечением linux

Приводим в порядок пакеты

Итак, мы в chroot’е, у нас работает pacman и bash. Первым делом приведем в порядок то, что есть. Пропишем DNS и загрузим репозитории:

echo "nameserver 8.8.8.8" > /etc/resolv.conf pacman -Sy 

Теперь поставим официально то, что просто так распаковали и добавим остальные минимально необходимые для жизни пакеты и еще вернем на место dns, который нам побила установка filesystem:

pacman -S base --force --noconfirm echo "nameserver 8.8.8.8" > /etc/resolv.conf 

Если все прошло удачно, то имеем полноценный за вычетом systemd и ядра Archlinux. Выходим из chroot и размонтируем все, что намонтировали:

exit umount ./dev/pts umount ./dev/cpuctl umount ./proc umount ./sys umount ./tmp umount ./run 

Добавляем автомонтирование и прочие плюшки

Чтобы пользоваться тем, что получилось легко и просто, прикрутим init от botbrew-basil. Это утилита, которая проверяет, смонтировано ли у нас все, что надо и делает chroot в наше окружение. Я не смог найти, как скачать ее с репозитория botbrew, поэтому пока что просто выложил на Яндекс.Диск, ссылка. Копируем init в /data/sdext2/arch и добавляем атрибут на исполнение.

Заходим в adb shell и набираем:

В результате все, что надо само однократно подмонтируется и мы окажемся в свежепоставленном Arch. В виде бонуса init создаст в корне chroot’а папки /storage, /mnt и /android, куда смонтирует куски оригинальной файловой системы.

Чтобы наслаждаться линухом не через USB провод, а прямо с телефона, можно прописать /data/sdext2/init /bin/bash в качестве шела в любимом терминале. Дальше можно по вкусу создать пользователей, поднять sshd и т.п. Но любой арчевод и так знает, как это сделать, поэтому здесь про это писать не буду.

Спасибо за внимание, дополнения и исправления приветствуются.

UPDATE: небольшой скрипт, который я запускаю один раз после ребута

#!/bin/bash if [[ `whoami` != "root" ]] then sudo bash $0 $@ exit $? fi chmod 777 /tmp c=`ps afx | grep /usr/sbin/sshd | grep -cv grep` if [[ "$c" != "1" ]] then echo Strating sshd /usr/sbin/sshd else echo sshd already started fi if [[ ! -e /dev/fd ]] then echo Creating /dev/fd links ln -s /proc/self/fd /dev/fd ln -s /proc/self/fd/0 /dev/stdin ln -s /proc/self/fd/1 /dev/stdout ln -s /proc/self/fd/2 /dev/stderr fi if [[ ! -e /dev/net/tun ]] then echo Creating /dev/net/tun mkdir /dev/net ln -s /dev/tun /dev/net/tun else echo /dev/net/tun already exists fi 

Источник

Оцените статью
Adblock
detector