miércoles, 30 de octubre de 2024

Alpine en Android

Finalmente probé con lo siguiente

[setup.sh](https://gist.githubusercontent.com/coderofsalvation/43d7d476dc5eeba98926b9437e52bb49/raw/c0fbd270deaa6d42df58e7c94b4df94245410c35/install.sh)

```bash
#!/bin/bash
INSTALL='/data/data/berserker.android.apps.sshdroid/home/alpine'
APKTOOLS='2.10.3-r1'
ARCH='armv7'
MIRROR='http://dl-cdn.alpinelinux.org/alpine'
MIRROR='http://nl.alpinelinux.org/alpine'
VER='v3.9'
RED='\033[0;31m'
NC='\033[0m'
set -e

mkdir -p $INSTALL/etc
printf "${RED}remounting /system as writable to write /etc/resolv.conf${NC}"
mount -o remount,rw $(mount | grep '/system' | awk '{ print $1 }') /system

printf "${RED}initing DNS settings"
echo -e "nameserver $(getprop net.dns1)\nnameserver $(getprop net.dns2)" > /etc/resolv.conf
set +e; mkdir $INSTALL/etc; set -e
cp /etc/resolv.conf $INSTALL/etc/.

printf "${RED}Downloading Static installer apk...${NC}\n"
set -x
wget $MIRROR/$VER/main/$ARCH/apk-tools-static-$APKTOOLS.apk
tar -xzf apk-tools-static-*.apk
rm apk-tools-static-*.apk
rm .PKGINFO


printf "\n${RED}Installing Base Alpine...${NC}\n"
./sbin/apk.static -X $MIRROR/$VER/main -U --allow-untrusted --root $INSTALL --initdb add alpine-base
rm -r ./sbin/

printf "\n${RED}Adding Repos to chroot${NC}\n"
echo "$MIRROR/$VER/main" > $INSTALL/etc/apk/repositories
echo "$MIRROR/$VER/community" >> $INSTALL/etc/apk/repositories
echo "http://nl.alpinelinux.org/alpine/edge/testing/" >> $INSTALL/etc/apk/repositories

printf "\n\n${RED} Done! Logging into chroot..${NC}\n"
echo "in the future you can do this using: chroot $INSTALL bash"
chroot $INSTALL apk update
```

### Esto tampoco funcionó

El script lo saqué de [Laurynas Četyrkinas / AlpineDroid · GitLab](https://gitlab.com/stnby/alpinedroid)

Acá el [setup.sh](https://gitlab.com/stnby/alpinedroid/-/raw/master/setup.sh?ref_type=heads)

```bash
#!/system/bin/sh
set -e

# PARAMETERS ---
DEST='/data/alpinedroid'
MIRR='http://dl-cdn.alpinelinux.org/alpine'
DNS1='1.1.1.1'
DNS2='1.0.0.1'
# --------------

# Prepare (start)
ARCH=`uname -m`
mkdir -p $DEST
cd $DEST
echo "> prepare"
# Prepare (end)



# Download rootfs (start)
echo "< download rootfs"
FILE=`busybox wget -qO- "$MIRR/latest-stable/releases/$ARCH/latest-releases.yaml" | busybox grep -o -m 1 'alpine-minirootfs-.*.tar.gz'`

busybox wget "$MIRR/latest-stable/releases/$ARCH/$FILE" -O rootfs.tar.gz
echo "> download rootfs"
# Download rootfs (end)



# Extract rootfs (start)
echo "< extract rootfs"
busybox tar -xf rootfs.tar.gz
echo "> extract rootfs"
# Extract rootfs (end)



# Configure (start)
echo "> configure"
mkdir -p mnt/sdcard

echo "nameserver $DNS1
nameserver $DNS2" > etc/resolv.conf

echo "#!/system/bin/sh -e
busybox mount -t proc none $DEST/proc
busybox mount --rbind /sys $DEST/sys
busybox mount --rbind /dev $DEST/dev
busybox mount --rbind /sdcard $DEST/mnt/sdcard" > up.sh

echo "#!/system/bin/sh
busybox umount $DEST/proc
busybox umount -l $DEST/sys
busybox umount -l $DEST/dev
busybox umount -l $DEST/mnt/sdcard" > down.sh

echo "#!/system/bin/sh
busybox chroot $DEST /bin/sh --login" > chroot.sh

busybox chmod +x {up,down,chroot}.sh
echo "< configure"
# Configure (end)
```

Luego hacemos:
```bash
cd /data/alpinedroid
./up.sh
./chroot.sh
exit
./down.sh
```
  
---


#### TODO ESTO NO ME SIRVIÓ PARA NADA Y CUANDO HACÍA LOS MOUNTS EL CELULAR QUEDA COMPLETAMENTE BUGGEADO POR ESOS MOUNTS

Miralo en YouTube: [Install Alpine in android | fossfrog - YouTube]()



Mirala en invidious: [Install Alpine in android | fossfrog - Invidious]()

Googleá alpine download y bajá el rootfs de la arquitectura de tu celular, en mi caso armv7 (moto g3 2015) esto lo podés hacer desde tu PC y pasarlo al celular o directamente lo podés hacer desde tu celular bajandolo con wget o desde el navegador, si lo haces del navegador tendras que ubicarte en la carpeta de downloads desde la terminal.


Tenés que rootear el telefono, yo instalé lineageos 14.1, addonsu 14.1, open_gapps-nano-7.1



Ahora andá a settings habilitá la terminal, ejecutá su y deberias poder tener root.



Ahora:

```bash
cd /data/local/ ; mkdir rootfs
tar xvf alpine-minirootfs.tar.gz -C rootfs
```

Esto lo podes hacer desde tu computadora y pasarlo al celular o desde el celular directamente :

```bash
cd /data/local
touch alpine_start.sh
chmod 755 alpine_start.sh (para hacerlo ejecutable)
o chmod +x alpine_start.sh
```

#### Poné lo siguiente:

```bash
!#/bin/sh

mount --bind /sys rootfs/sys
mount --bind /proc rootfs/proc
mount --bind /dev rootfs/dev
mount --bind /dev/shm rootfs/dev/shm
mount --bind /dev/pts rootfs/dev/pts

export PATH="/bin:/sbin:/usr/local/bin:/usr/bin:/usr/sbin"

chroot rootfs bin/ash
umount rootfs/dev/pts
umount rootfs/dev/shm
umount rootfs/proc
umount rootfs/dev
umount rootfs/sys
```

Guardalo en `/data/local` o copialo con cp y ejecutalo: `cd /data/local` y  `./alpine_start.sh`



Ahora estarás ejecutando alpine con chroot.

Probá tirar un `ping` porque a veces el DNS no está bien configurado en ese caso tenés que cambiar `/etc/resolv.conf` y pone las dns de google o las que quieras.

Ahora probá ejecutar `apk` el gestor de paquetes de alpine.


```bash
apk update
apk search apache
apk search mariadb
apk add vim
```

También podés construir tu propia busybox 

Si lo estás haciendo en windows tenes que tener cuidado porque el fin de linea en windows es diferente que el de linux por lo tanto no funcionaran tus scripts.

```bash
\n = linux
\r\n = windows
```

Si usas vim o gvim podes ejecutar para ver el ^M al final de la linea :e ++ff=unix

0 comentarios:

Publicar un comentario