贴一:
100从咸鱼收购一个oes一代的盒子,开始鼓捣,两周时间做各种推测,整理一下自己的处理流程:
1.盒子到手,捅屁股恢复出厂设置,可以反复做,最好让盒子开机固定ip 在10.9.8.7,官网有介绍,自己可以用浏览器打开10.9.8.7:8080看恢复出厂设置后,工作状态对不对。如果不是,盒子网络工作在dhcp模式,自己要去自己家的路由器上查询盒子的IP地址,最好的办法继续捅屁股,直到开机固定ip ,10.9.8.7。
2.装Moba xterm,这个有个工具端口扫描,看盒子开的端口,盒子默认开通了ssh,22端口,无论咋分析密码,Moba xterm显示链接失败。
3.分析原因:ssh这个错误和平时的SSH连接失败反馈的结果不一样,显示Bandon,而不是提示密码错误。分析厂家做了手脚,ssh密码错误是我们输入的不对,禁止登陆就是别的原因,后面的结果证明: 恢复出厂设置后root的密码为空,SSH登录不了,既然这样telent因该开放啊,解开后的系统说明厂家确实开了telent,只不过专门将telent设置成无法工作状态,这样两头无法破解。大佬们可以参考这个语句:
#sleep 10
factorymode=`fw_printenv xl_softmode | awk -F”=” ‘{print $2}’`
if [ “${factorymode}” = “factory” ]; then
echo “fatorymode = ${factorymode}, S98 exit”
exit 1;
fi
check_pswd=`cat /etc/shadow | grep “root:” | awk NR==1 | awk -F’:’ ‘{print $2}’`
if [ “${check_pswd}” = “” ]; then
echo “no has passwd” > /tmp/S98.log
rm -f ‘/etc/shadow+’
myhostname=`hostname | awk -F’_’ ‘{print $2}’`
mypswd=”${myhostname}””a311d2019″
(echo ${mypswd}; sleep 1; echo ${mypswd}) | passwd root
else
echo “already has passwd” > /tmp/S98.log
fi
在/etc/init.d里面S98passwd文件专门配置密码的,呵呵你们自己琢磨。
3.单机用户推荐自己用ttl串口 波特115200,自己去破,与本人无关
4.刷机,进去看里面/etc/init.d目录,改造S00initrootfs S01rootfs_upgrade S20urandom S40network S42wifi S49ntp S50telnet S81named S87usbgadget S88wxmnt S90xyipkmng S98passwd rcK xyipkmng
S01logging S10mdev S30dbus S41inetd S48wx_earlyipk S50dropbear S80dnsmasq S86wxinit S88cache S89wxbase S95monit rc.modules rcS 里面的文件。
比如 S40network 设置你想要网络ip、网关; S50telnet S50dropbear 是重点,输入passwd命令 设置root密码,这样ssh就可以登陆了。其他的网心服务如S98passwd 该删就删了。
5.系统分析,整个系统是buildroot下生成,安卓9.0的底子,4.9的核心。进去以后就是一个docker服务,所有业务全部属在docker内,本来想安装一个debian或armbian,结果看了分区,整个system只有不到1G,难啊,这个固件活脱脱就是安卓架构
[ 2.564317] meson-mmc: [mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000
[ 2.573850] meson-mmc: [mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000
[ 2.583389] meson-mmc: [mmcblk0p03] cache offset 0x000006c00000, size 0x000020000000
[ 2.592929] meson-mmc: [mmcblk0p04] env offset 0x000027400000, size 0x000000800000
[ 2.602461] meson-mmc: [mmcblk0p05] logo offset 0x000028400000, size 0x000000800000
[ 2.612010] meson-mmc: [mmcblk0p06] recovery offset 0x000029400000, size 0x000001800000
[ 2.621538] meson-mmc: [mmcblk0p07] misc offset 0x00002b400000, size 0x000002000000
[ 2.631080] meson-mmc: [mmcblk0p08] dto offset 0x00002dc00000, size 0x000000800000
[ 2.640611] meson-mmc: [mmcblk0p09] cri_data offset 0x00002ec00000, size 0x000000800000
[ 2.650151] meson-mmc: [mmcblk0p10] param offset 0x00002fc00000, size 0x000001000000
[ 2.659681] meson-mmc: [mmcblk0p11] boot offset 0x000031400000, size 0x000002000000
[ 2.669221] meson-mmc: [mmcblk0p12] rsv offset 0x000033c00000, size 0x000001000000
[ 2.678764] meson-mmc: [mmcblk0p13] tee offset 0x000035400000, size 0x000002000000
[ 2.688303] meson-mmc: [mmcblk0p14] vendor offset 0x000037c00000, size 0x000010000000
[ 2.697831] meson-mmc: [mmcblk0p15] odm offset 0x000048400000, size 0x000010000000
[ 2.707370] meson-mmc: [mmcblk0p16] system offset 0x000058c00000, size 0x000040000000
[ 2.716914] meson-mmc: [mmcblk0p17] kernel offset 0x000099400000, size 0x000002000000
[ 2.726455] meson-mmc: [mmcblk0p18] backup offset 0x00009bc00000, size 0x000040000000
[ 2.736000] meson-mmc: [mmcblk0p19] instaboot offset 0x0000dc400000, size 0x000020000000
[ 2.745521] meson-mmc: [mmcblk0p20] data offset 0x0000fcc00000, size 0x0000d5400000
安卓system分区会挂载不,想自己动手的可以参照,rootfs就在system,下面是内核,想扩展分区很难。
4.刷入自己的系统,把nas的弄进去,重点安装docker,原来的linux,没有bash,没有bash,我折腾10天时间,把docker安装好,好像原系统包含一个docker安装包,我用opkg 装不了,无语。
5.系统测试结果:
a311d的性能可以肯定的,上传下载都可以满速度1000兆,最高的cpu占用36%左右。
6.最后吐槽两句,那个装硬盘的盒子太小,3碟的2.5寸硬盘装不进去,ssd可以装3片,1%负载正常温度38度,36%以上温度飙升。
贴二:
今天重点说一下如何给oes oec等使用build root等老固件的机器如何安装docker
1.去官网或国内镜像网站下载docker的二进制包,这种包没有任何依赖,可以在任何linux平台下运行。
我下载的是aarch64 架构对应的最新包
https://download.docker.com/linux/static/stable/aarch64/docker-27.3.1.tgz
2. 同理下载二进制的docker compass ,名字 docker-compose-linux-aarch64.
3.解压 docker-27.3.1.tgz文件 :tar -zxvf docker-27.3.1.tgz,得到250兆左右的6个文件,参照官网的说明,
https://docs.docker.com/engine/install/binaries/,全部拷贝/usr/bin文件夹下面,如果/usr/bin
没有空间,就要用软链接到/usr/bin下,当然/usr/sbin也行。
cp ./docker/* /usr/bin
4.解压docker compass,也拷贝到/usr/bin下。至此第一步文件安装完成。
5.运行 dockerd ,如果没修改环境,应该会出几行显示就退出,关键的环境还没有搭好,重点看下面的环境设置:
6. 第一个错误提示,docker的用户组,寻找系统里面groupadd 还是 addgroup,敲命令 addgroup -S docker。
7. 再运行dockerd ,显示failed to start daemon: Devices cgroup isn‘t mounted,这个问题牵涉的地方较多,
我只说需要修改的地方;
7.1) 执行第一句,挂载cgroup : echo ‘tmpfs /sys/fs/cgroup cgroup 0755 0 0’ >> /etc/fstab
7.2)添加一个服务 ,上面的那个语句再 fstab里面挂载了,但是还有问题, 可能重启以后 cgroup 挂载就变成 none
建议再/etc/init.d/建立一个开机挂载服务。脚本参考这个网页: https://github.com/tianon/cgroup … ster/cgroupfs-mount
最后的那几句非常重要。
7.3)再运行dockerd,此时应该没有错误,界面不退出,说明配置正确,这时按 ctl+ C打断程序,安装的第二部完成。
7.4) 继续添加docker的开机服务,开机要执行 nohup dockerd &, 后面的& 表示开机在后台执行,不要像第三小步那样,ssh卡在那里。
7.5)重启,检查后台有没有,可以继续运行dockerd,如果还和第3不一样,说明开机自启动失败,如果显示出两行提示,docker已经运行。
7.6)继续执行 docker info 能够和网上的成果差不多
7.7 docker -H <hostname> run hello-world,检查成功不。这一步非常麻烦,基本肯定失败,先看下面:
8. docker 无法拉取镜像,今年7月,dock的镜像服务器国内屏蔽,根本下载不了镜像,必须设置代理。
新建 /etc/docker/daemon.json,内容如下
{ “registry-mirrors”:[“https://hub.rat.dev”], “registry-mirrors”:[“https://docker.m.daocloud.io”], “registry-mirrors”:[“https://do.nark.eu.org”], “registry-mirrors”:[“https://dockerproxy.cn”], “registry-mirrors”:[“https://docker.1panel.live”], “data-root”:”/mnt/data/docker” }
“data-root”:”/mnt/data/docker” 指向自己的docker工作目录。否则下一个程序,估计overlay就没有空间了。
9.继续搞 docker run hello-world ,这时候错误可能变成两行,没有运行,关键的提示,docker无法申请内存和cpu,这个问题
又回到cgroup上面,网上的一群人,都是台式机,在windows或者ubuntu糊弄了两下,都是apt命令自动安装进去的,oes和oec要自己搞
他们的好多原因分析根本对不上。armbian也是自动配置的,不需要人修改cgroup配置。
10. 研究https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount,里面的提示ubuntu 16才能系统配置cgroup,14就不行
需要人手动配置。作者提示了,cgroup挂载必须要执行这一段:
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
cd /sys/fs/cgroup
# get/mount list of enabled cgroup controllers
for sys in $(awk ‘!/^#/ { if ($4 == 1) print $1 }’ /proc/cgroups); do
mkdir -p $sys
if ! mountpoint -q $sys; then
if ! mount -n -t cgroup -o $sys cgroup $sys; then
rmdir $sys || true
fi
fi
done
if [ -e /sys/fs/cgroup/memory/memory.use_hierarchy ]; then
echo 1 > /sys/fs/cgroup/memory/memory.use_hierarchy
fi
return 0
}
echo 1 > /sys/fs/cgroup/memory/memory.use_hierarchy这一句执行了,docker才能申请内存,这个值默认是0,docker无法执行任何程序。
11.正常执行的结果如下:
12.有了docker,自己安装吧,实际上好多程序都是几年前的,一个导航也费劲,实际上sun_panel,根本不需要装docker也能运行的。
你们折腾吧,昔映也发布了,我给大家点福利,oes的设备树文件,还有vim3的设备树文件,你们研究下,除了led gpio不一样,两个的设备树是一样的,
能否搞个系统出来,好像他的uboot和dtb都是加锁的。
- 最新
- 最热
只看作者