Установите linux-заголовки на nexus 7 2013 под управлением Ubuntu Touch

Недавно я установил Ubuntu Touch на Nexus 7 2013 и столкнулся с проблемой при установке драйвера для USB-адаптера Moxa Uport. На самом деле драйвер должен быть скомпилирован, и поэтому мне нужно установить заголовочные файлы linux. Я обнаружил, что:

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

необходимо что-то записать в / lib / modules, и этот путь принадлежит / dev / loop1, который монтируется как только для чтения. Я могу перемонтировать его в rw, но при однократной попытке записи туда он возвращается только для чтения.

ничего о loop1 или / lib / modules в / etc / fstab

команда:

mount | grep loop1

выход:

/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)

команда:

blockdev --report |grep loop1

выход:

ro   256   512  4096          0       126427136   /dev/loop1

затем:

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

выход:

rw   256   512  4096          0       126427136   /dev/loop1

команда:

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

выход:

/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)

странно, только / var / lib / lxc / android / rootfs / system был установлен на rw

так:

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

выход:

/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)

но:

mkdir /lib/modules/rrr

выход:

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

Я думаю, что abowe является причиной:

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

не удается с:

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)

Итак, я застрял на этом, пожалуйста, кто-нибудь может мне помочь?

С уважением, Виктор

1 ответ

Решение

Ну, будучи не очень опытным в Ubuntu Touch, Android, Linux, ArmHF вещи, я не смог сделать это правильно и прямо. Возможно, взлом boot.img может помочь, но я не готов к этому.

Единственный обходной путь, который я смог представить, - это монтирование /lib/modules/3.4.0-5-flo к другому новому устройству цикла. Это работает, хотя.

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

С этого момента я смог установить заголовочные файлы linux и скомпилировать драйверы Moxa. Я обнаружил, что makefile драйверов, кстати, пишет в /lib/modules/3.4.0-5-flo.

Итак, чтобы сделать монтирование постоянным и не удалось изменить / etc / fstab, мне пришлось добавить в rc.local:

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

Я знаю, что это довольно странное решение, но у меня получилось:)

На ubuntu touch rootfs доступен только для чтения, поэтому вам придется перемонтировать его как чтение и запись в целом, чтобы иметь возможность использовать на нем apt.

Другие вопросы по тегам