1. 系统要求需要在一个android pad中集成nginx,mysql,php,sshd,因为芯片方案为广州某厂提供,故他们愿意帮助我们,由他们提供集成好后的rom.
2. 第一版rom拿到后尝试启动sshd 正常,但是nginx发生问题,找不到errors.log和access.log,于是手动创建,发现不可写,使用mount后发现/和/system为ro,于是重新挂载为可读写
mount -o remount -o rw /(/system)
nginx启动后测试正常,但是无法执行phpinfo,于是启动php-fpm,正常.
3. mysql尝试启动后发现没有安装,于是mysql_install_db --user=root,然后发现不知道这样的密码,后来发现可以
mysqladmin -u root password '1234'
,但是当时没有想到,于是
mysqld_safe --user=root --skip_grant_table &
正常.
4. 至此一切经测试无误,接下来既是自启动问题,android启动在/init.rc中,于是vi进入在末尾添加
service csetup /var/setup.sh
class main
user root
group root
oneshot
5. 这时需要编写setup.sh,按照顺序依次启动即可,但是发现每次pad重启后/和/system均挂载为ro,所以脚本中需要先remount
#!/system/bin/sh
mount -o remount -o rw /
mount -o remount -o rw /system
/bin/sshd
/bin/php-fpm
/bin/nginx
mysqld_safe --user=root --skip_grant_table &
但是此时发现mysql偶尔会不启动,于是将其拆分至另一脚本mysql-setup.sh,问题解决.
6. 此时发现需要创建2个文件,修改3个文件,添加4个软链(/bin中),所以决定使用shell书写一个脚本去解决问题,否则批量出货后时间成本太高,所以尝试0基础书写- -!
#!/system/bin/sh
#重新挂载/和/system为可读写
mount -o remount -o rw /
mount -o remount -o rw /system
#添加dns
touch /etc/resole.conf
echo 'nameserver 119.29.29.29' >> /etc/resovl.conf
echo 'nameserver 114.114.114.114' >> /etc/resovl.conf
chmod 644 /etc/resovl.conf
#添加软链到/bin
ln /share/lijin/system_sec/sbin/sshd /bin/sshd
ln /share/lijin/system_sec/sbin/nginx /bin/nginx
ln /share/lijin/system_sec/sbin/php-fpm /bin/php-fpm
ln /share/lijin/system_sec/share/mysql/mysqld_safe /bin/mysqld_safe
#初始化mysql
/share/lijin/system_sec/share/mysql/mysql_install_db --user=root
#创建启动脚本文件
touch /var/setup.sh
touch /var/mysql-setup.sh
#改变文件权限
chmod +x /var/setup.sh
chmod +x /var/mysql-setup.sh
#将内容写入启动脚本
#setup.sh
echo '#!/system/bin/sh' >> /var/setup.sh
echo '#启动脚本Edit by Christ!' >> /var/setup.sh
echo '/bin/sshd' >> /var/setup.sh
echo '/bin/php-fpm' >> /var/setup.sh
echo '/bin/nginx' >> /var/setup.sh
echo '/var/mysql-setup.sh' >> /var/setup.sh
#mysql-setup.sh
echo '#!/system/bin/sh' >> /var/mysql-setup.sh
echo 'mysqld_safe --user=root --skip_grant_table &' >> /var/mysql-setup.sh
#在/init.rc中添加启动项
echo '#nmp启动脚本Edit by Christ!' >> /init.rc
echo 'service csetup /var/setup.sh' >> /init.rc
echo '\tclass main' >> /init.rc
echo '\tuser root' >> /init.rc
echo '\tgroup root' >> /init.rc
echo '\toneshot' >> /init.rc
#重启设备
reboot
7. 因为这样写虽然明了但是并不给用户看,于是做了简化
#!/system/bin/sh
#重新挂载/和/system为可读写
mount -o remount -o rw /
mount -o remount -o rw /system
#添加dns
echo 'nameserver 119.29.29.29\nnameserver 114.114.114.114' >> /etc/resovl.conf
chmod 644 /etc/resovl.conf
#添加软链到/bin
ln /share/lijin/system_sec/sbin/sshd /bin/sshd
ln /share/lijin/system_sec/sbin/nginx /bin/nginx
ln /share/lijin/system_sec/sbin/php-fpm /bin/php-fpm
ln /share/lijin/system_sec/share/mysql/mysqld_safe /bin/mysqld_safe
#初始化mysql
/share/lijin/system_sec/share/mysql/mysql_install_db --user=root
#创建启动脚本文件
echo '#!/system/bin/sh\nmysqld_safe --user=root --skip_grant_table &' >> /var/mysql-setup.sh
echo '#!/system/bin/sh\n/bin/sshd\n/bin/php-fpm\n/bin/nginx\n/var/mysql-setup.sh' >> /var/setup.sh
#改变权限
chmod +x /var/*.sh
#添加启动项
echo '#nmp启动脚本Edit by Christ!\nservice csetup /var/setup.sh\n\tclass main\n\tuser root\n\tgroup root\n\toneshot' >> /init.rc
#重启
reboot
至此完成.