zhangguanzhang's Blog

安卓安装linux并且源码编译安装搭建lnmp的坑和总结

字数统计: 1.6k阅读时长: 6 min
2017/04/09

新买的内存卡到了,源码搭建lnmp

原创,转载需同意,盗版必究

先说下安装过程

我手机是安卓4.4.2,泛泰a870L 首先不保证能不能成功,毕竟现在很多人做rom适配,成功与否看脸,不要指望一次成功 有两种方式:
一种是加载img镜像文件(缺点是安装后的系统容量就是img大小,img我见过最大的也就3.9G,后来空间满了,好处是可以挂载安卓的所有目录)
第二种是使用linux deploy(两种方式都是使用这个软件来部署)+内存卡分区,软件在线安装linux在内存卡的分区里(优点空间可以自己分配,缺点还没找到)
无论哪种方式只有手机屏幕开启下其他端在ssh下才会正常,不然你锁屏了ssh输入命令卡在那一样

第一种因为小米和魅族底层有点不同,并且路径的权限问题经常出现挂载失败的现象

参照关于挂载不上镜像和创建镜像问题,解决与分析

在安卓上完成内存卡分区,安装原版镜像到分区。
内存卡分区软件在这个帖子里,下载安装后参照帖子里分区就行了

个人经验提醒几点:
这个软件别升级,升级了就要收费的,本身就是一个破解软件
另外我分区提示失败,然后重启后点开软件分区才成功的~
我的分区格式如图所示,我分的是ext4(至于为啥选ext4看后面)

ext2


15G的内存卡
第一次分完后安装不了,后来分区的时候选的ext4就好了




然后先安装linux deploy和busybox
下面链接里的俩bousybox都装,因为我之前只安装的第一个,后面在线安装出现一个ar not found的错误,后面询问别人才知道没安装ru.meefik版的busybox

链接:http://pan.baidu.com/s/1kVymrrT 密码:n5kf
aparted是那个帖子里的内存卡分区软件
juicessh是ssh软件,破解版的,别升级,linux deploy安装完升级下,我找不到我这个版本了。。


arg

上图是我的参数,不过现在源好像改成了http://mirrors.aliyun.com/kali/,架构可以自己用终端命令行或者cpu-z查看下自己手机是啥架构,选错了会安装失败
我也忘了我在线安装的时候用的哪个了


安装过程是下载包,解压包,安装包,当时没截图,借用下别人的图

demo


安装完成后点击下面的启动,可能ssh啥的全部是skip,需要多点击几次停止启动停止启动

demo2


安装完成如上图图所示(请忽略掉那个sdcard的skip,挂载安卓上的路径失败了)

成功与否看脸,另外多去移动linux吧学习下

安卓上linux源码编译安装lnmp的坑和总结

之前安卓安装linux的那个kali的内存卡被我多此读写后坏了 内存卡是网上买的,不知道是不是假的金士顿 如果不是假的话应该是我多次编译安装mysql出问题,死活找不到pid文件(前几天才知道为啥找不到pid)
废话不多说,用图说话 先是分区
准备打算把全部容量格成ext4 但是安卓系统不识别,一直弹sd卡没有文件系统,损坏啥的,没办法给他分1g的fat32吧
接下来是deploy的配置截图 apt系列依赖真差,还是直接上centos,毕竟自己四台主机是centos6的,这次正好借着自己手机上centos7看看有没有变化

源是外国的,我试了中科大的,但是直接不识别,好吧,希望不要开翻墙



下载速度36k左右,期间wifi人连接得多,断开了一次就失败了,为了稳妥开启数据流量安装 经过漫长的等待看到部署完成后点击启动 和之前一样,启动失败,点击停止,启动,无脑多循环几次,就能正常启动了

安装完成后查看信息啥的,设置密码居然提示passwd没找到,然后看了下能不能切换root,发现sudo su能切换,直接yum install passwd 然后切到root后update了下,centos还是很人性化的armhfp架构也有源 然后就是搭建lnmp了
编译nginx没问题 php的时候出过问题 configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no 然后configure加上--enable-opcache=no后又出错 configure: error: off_t undefined; check your library configuration 提示库有问题 好吧,就修复动态链接库 /etc/ld.so.conf里加入下面内容 /usr/local/lib64 /usr/local/lib /usr/lib /usr/lib64 后ldconfig -v刷新 直接两条实现

cat>>/etc/ld.so.conf<<EOF
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
EOF

ldconfig -v

然后编译通过
最后在mysql的时候,编译安装完启动的时候提示找不到pid文件,权限啥的不存在,所有者和用户组都是mysql,但是日志里确是无法创建
2017-04-06 10:30:28 26813 [ERROR] Failed to create a socket for IPv4 ‘0.0.0.0’: errno: 13.
2017-04-06 10:30:28 26813 [ERROR] Can’t create IP socket: Permission denied
百度了很久终于知道了是由于安卓内核的原因
问题答案链接在 arm 手机 chroot 中编译的 mysql 无法启动



好吧,毕竟安卓下运行,安卓内核还是爹,看看用户组

groups|xargs -n1

看了下果真有aid_inet这个用户组,加进去试试

usermod -a -G aid_inet mysql

然后果真启动成功

其实之前php安装完成之后访问php页面一直错误
上面那位大神说网络受用户组限制,我想是不是也这个问题
然后把www用户组加进去

usermod -a -G aid_inet www

然后也访问php页面成功


步骤是按照我写的lnmp脚本来执行的,除了上面的俩个用户组和修正动态链接库的命令以外和我脚本一模一样
脚本里写得步骤清晰,还有注释,有兴趣大家去看看centos一键lnmp脚本
脚本不定期更新,如果使用的话每次下载下

7.30最新进展,录制了安装视频
链接:http://pan.baidu.com/s/1bptScGZ 密码:pdk5

CATALOG
  1. 1. 原创,转载需同意,盗版必究
  2. 2. 先说下安装过程
  3. 3. 安卓上linux源码编译安装lnmp的坑和总结