在 nexus 7 2013 运行 ubuntu touch 上安装 linux-headers
Install linux-headers on nexus 7 2013 running ubuntu touch
我最近在我的 nexus 7 2013 上安装了 ubuntu touch,但在为 Moxa Uport USB 适配器安装 driver 时遇到了问题。实际上 driver 需要编译,这就是我需要安装 linux headers 的原因。
我发现:
apt-get install linux-headers-`uname -r`
需要向 /lib/modules 写入一些内容,此路径属于 /dev/loop1,它以只读方式挂载。我可以将它重新挂载到 rw,但是一旦尝试在那里写入,它就会退回到只读状态。
/etc/fstab
中的 loop1 或 /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 (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
我认为是以下原因:
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)
所以,我卡在了这个问题上,有人可以帮助我吗?
此致,维克多
嗯,由于在 ubuntu 触摸、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 aslo 顺便写入 /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
我知道这是相当奇怪的解决方案,但对我有用:)
on ubuntu touch rootfs 是只读的,因此您必须将其重新挂载为一般读写才能在其上使用 apt。
我最近在我的 nexus 7 2013 上安装了 ubuntu touch,但在为 Moxa Uport USB 适配器安装 driver 时遇到了问题。实际上 driver 需要编译,这就是我需要安装 linux headers 的原因。 我发现:
apt-get install linux-headers-`uname -r`
需要向 /lib/modules 写入一些内容,此路径属于 /dev/loop1,它以只读方式挂载。我可以将它重新挂载到 rw,但是一旦尝试在那里写入,它就会退回到只读状态。
/etc/fstab
中的 loop1 或 /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 (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
我认为是以下原因:
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)
所以,我卡在了这个问题上,有人可以帮助我吗?
此致,维克多
嗯,由于在 ubuntu 触摸、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 aslo 顺便写入 /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
我知道这是相当奇怪的解决方案,但对我有用:)
on ubuntu touch rootfs 是只读的,因此您必须将其重新挂载为一般读写才能在其上使用 apt。