Entware下建立debian环境

继续对电视盒子android9进行折腾。
前面已经建立好了Entware环境,想安装caddy https服务器,主要看中它的文件展示系统,但是entware中没有,于是想装个debian玩玩。
主要参考https://github.com/Entware-for-kernel-3x/Entware-ng-3x/wiki/Installing-Debian-chroot-environment
运用debootstrap chroot方法安装debian,简单记录下遇到的巨坑,耗了我二天时间

opkg update
opkg upgrade
opkg install debootstrap

出现问题:

/opt/sbin/debootstrap[592]: can't create /opt/debian/test-dev-null: Permission denied
E: Cannot install into target '/opt/debian' mounted with noexec or nodev

搜索后参考这个答案
https://askubuntu.com/questions/409609/cannot-install-into-target-mounted-with-noexec-or-nodev-while-doing-qemu-deboot
使用命令

/system/bin/mount -o exec.dev,remount /opt

重新opkg install debootstrap顺利通过。
继续install-debian,执行命令之前更改了/opt/bin/install-debian的二个地方,
因为是armv7 的cpu,所以


图片.png

想速度快一些,更改了国内的mirror


图片.png
install-debian

又出现问题

/opt/bin/install-debian[40]: can't create /opt/debian/usr/sbin/policy-rc.d: No such file or directory
chmod: /opt/debian/usr/sbin/policy-rc.d: No such file or directory
/opt/bin/install-debian[44]: can't create /opt/debian/etc/profile: No such file or directory
/opt/bin/install-debian[47]: can't create /opt/debian/etc/securetty: No such file or directory
/opt/bin/install-debian[48]: can't create /opt/debian/etc/securetty: No such file or directory
/opt/bin/install-debian[49]: can't create /opt/debian/etc/securetty: No such file or directory

用winscp ssh进入盒子后发现opt下已经有debian文件夹,但是下面完全是空的,没有文件,考虑是权限问题,赋权并赋予写操作后,似乎顺利进行。

/opt/etc/init.d/S99debian start
start-debian

结果似乎是进入了debian中,也有/#,通过passwd命令也新建了root:ZHANG0114的帐户,但是总少了些东西,因为apt或apt-get update 或者 apt install locales时总会报错,

Err:1 http://ftp2.cn.debian.org/debian stable InRelease
  Temporary failure resolving 'ftp2.cn.debian.org

很明显是网络不通,运用service --status-all查看服务,networking是?,心想应该是没有启动,于是开始了大搜索,debian的网络设置,当时想,debian作为chroot运行,是不是像是虚拟机一样,可以有个不同的ip地址但和主机是在同一网段内的。

~ # /opt/etc/init.d/S99debian start
Starting Debian services...
WARNING: No Debian services defined.
Please, define Debian services to start in /opt/debian/chroot-services.list file!
One service per line. Hint: these are script names from Debian /etc/init.d/

很明显是没有service出现,于是新建了/opt/debian/chroot-services.list文件,在其中写入networking


图片.png

重新运行:

~ # /opt/etc/init.d/S99debian start
Starting Debian services...
[....] Configuring network interfaces...Running in chroot, ignoring request.
RTNETLINK answers: File exists
ifup: failed to bring up eth0
failed.

从这个“Running in chroot, ignoring request”应该是网络不需要设置的,但当时没有意识到这一点,

查看opt/debian/etc/init.d/networking得知,重要的设置文件是opt/debian/etc/network/interfaces,当时很惊异原始的设置就只有这一行

source-directory /etc/network/interfaces.d

心想这肯定不行啊,于是参考网上的教程设置成了

source-directory /etc/network/interfaces.d
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.1.118  #这个地址不能是他的真实地址,chroot应该像是虚拟网卡,和真实地址同一网段,静态给他另一个地址,当时的想法。现在来看是错误的。chroot下debian是不需要设置网络的。
netmask 255.255.255.0
gateway 192.168.1.1

重新service networking start(restart)后盒子的以太网地址一般出现二个ip,但有时候ssh会断开,有时候会断网,总之状况不断,因为断网后我必须打开盒子重新开机才行,我连的是有线网络,盒子没有wifi设置那样对有线进行设置的地方。
但无论如何设置,apt update命令始终出现网络的问题

图片.png

可以看到ping是没有任何问题的,网上的答案大部分都是resolv.conf的DNS设置更改,我改了无数遍问题依旧。也有说是opt/debian/apt/etc/source.list问题,后来参考https://wiki.debian.org/SourcesList#Name_Resolution的解决方法,直接将其中ftp.debian.org ping后更改成了IP,

opt/debian/apt/etc/source.list:
deb http://130.89.148.12/debian stable main

仍然出现问题


图片.png

继续搜索,终于不负有心人,通过近二天的搜索,终于发现在android下apt的group问题才会出现这个情况,

图片.png

图片.png

这个应该是android下apt问题的通病了吧,stackoverflow上高人很多,感谢
https://stackoverflow.com/questions/43724042/apt-get-update-fails-on-chroot-ubuntu-16-04-on-android
最后参考https://stackoverflow.com/questions/36451444/what-can-cause-a-socket-permission-denied-error 中完美解决
图片.png

前后的passwd区别就是
图片.png

apt group从65543变成了3003,总之这样以后问题解决了
图片.png

apt install也能用了
图片.png

你可能感兴趣的:(Entware下建立debian环境)