Instale os cabeçalhos linux no nexus 7 2013 executando o ubuntu touch

2

Eu instalei o ubuntu touch no meu nexus 7 2013 recentemente, e enfrentei problemas ao instalar o driver para o adaptador usb Moxa Uport. Na verdade, o driver precisa ser compilado e é por isso que eu preciso de cabeçalhos Linux para ser instalado. Eu descobri que:

apt-get install linux-headers-'uname -r'

precisa escrever algo em / lib / modules e esse caminho pertence a / dev / loop1, que é montado como readonly. Eu sou capaz de remontá-lo para rw, mas em uma única tentativa de escrever lá, ele cai de volta para readonly.

nada sobre loop1 ou / lib / modules em / etc / fstab

comando:

mount | grep loop1

saída:

/dev/loop1 on /android/system type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /etc/ubuntu-touch-session.d/android.conf type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /lib/udev/rules.d/70-android.rules type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /usr/share/powerd/device_configs/config-default.xml type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /lib/modules type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /var/lib/lxc/android/rootfs/system type ext4 (ro,relatime,data=ordered)

comando:

blockdev --report |grep loop1

saída:

ro   256   512  4096          0       126427136   /dev/loop1

então:

blockdev --setrw /dev/loop1
blockdev --report |grep loop1

saída:

rw   256   512  4096          0       126427136   /dev/loop1

comando:

mount -o remount,rw /dev/loop1
mount | grep loop1

saída:

/dev/loop1 on /android/system type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /etc/ubuntu-touch-session.d/android.conf type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /lib/udev/rules.d/70-android.rules type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /usr/share/powerd/device_configs/config-default.xml type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /lib/modules type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /var/lib/lxc/android/rootfs/system type ext4 (rw,relatime,data=ordered)

estranho, apenas / var / lib / lxc / android / rootfs / system foi definido como rw

então:

mount -o remount,rw /lib/modules
mount | grep loop1

saída:

/dev/loop1 on /android/system type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /etc/ubuntu-touch-session.d/android.conf type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /lib/udev/rules.d/70-android.rules type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /usr/share/powerd/device_configs/config-default.xml type ext4 (ro,relatime,data=ordered)
/dev/loop1 on /lib/modules type ext4 (rw,relatime,data=ordered)
/dev/loop1 on /var/lib/lxc/android/rootfs/system type ext4 (rw,relatime,data=ordered)

mas:

mkdir /lib/modules/rrr

saída:

mkdir: cannot create directory Б─≤/lib/modules/rrrБ─≥: Read-only file system

dmesg:

[ 8280.681213] EXT4-fs (loop1): previous I/O error to superblock detected
[ 8280.681579] Buffer I/O error on device loop1, logical block 0
[ 8280.682006] lost page write due to I/O error on loop1
[ 8280.682037] EXT4-fs error (device loop1): ext4_journal_start_sb:328: Detected aborted journal
[ 8280.682891] EXT4-fs (loop1): Remounting filesystem read-only
[ 8280.683135] EXT4-fs (loop1): previous I/O error to superblock detected
[ 8280.683593] Buffer I/O error on device loop1, logical block 0

Eu acho que a razão é a razão de:

apt-get install linux-headers-'uname -r'

falha com:

Unpacking linux-headers-3.4.0-5-flo (3.4.0-5.19~15.04.1) ...
dpkg: error processing archive /var/cache/apt/archives/linux-headers-3.4.0-5-flo_3.4.0-5.19~15.04.1_armhf.deb (--unpack):
 error creating symbolic link './lib/modules/3.4.0-5-flo/build': Read-only file system
Errors were encountered while processing:
 /var/cache/apt/archives/linux-headers-3.4.0-5-flo_3.4.0-5.19~15.04.1_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Então, fiquei preso nisso, poderia agradar a alguém que me ajudasse?

Atenciosamente, Victor

    
por Victor K. 06.06.2016 / 09:48

1 resposta

0

Bem, por não ser muito experiente no ubuntu touch, android, linux, armhf, eu não era capaz de fazer o caminho certo e direto. Talvez hacking boot.img possa ajudar, mas não estou pronto para isso.

A única solução que consegui imaginar é montar o /lib/modules/3.4.0-5-flo em um novo dispositivo de loop diferente. Funciona embora.

cd /userdata
dd bs=1M count=100 if=/dev/zero of=build.img
losetup /dev/loop2 build.img
mkfs -t ext3 -m 1 -v /dev/loop2
mkdir /eee
mount -t ext3 /dev/loop2 /eee
cp -r /lib/modules/3.4.0-5-flo/. /eee
umount /eee
mount /dev/loop2 /lib/modules/3.4.0-5-flo
rmdir /eee

A partir deste ponto, consegui instalar os cabeçalhos do linux e compilar os drivers do Moxa. Eu descobri que drivers makefile também escreve para /lib/modules/3.4.0-5-flo pelo caminho.

Assim, para tornar a montagem permanente e não foi possível alterar o / etc / fstab, tive que adicionar a rc.local:

losetup /dev/loop2 /userdata/build.img
mount /dev/loop2 /lib/modules/3.4.0-5-flo
modprobe mxu11x0

Eu sei que é uma solução bastante estranha, mas funcionou para mim:)

    
por Victor K. 08.06.2016 / 08:16