移植了uboot/kernel/fs后,又移植了qt5.5.1,现在需要每次需要press Enter才能进入命令行,而且需要每次手动启动qt程序,手动获取ip地址设置网关等着实麻烦,这里记录一下自动设置的方法。
1.设置ip自动获取
这个网上一大堆,只需要设置udhcpc得到的ip设置到对应网卡就好。步骤如下
(1)制作文件系统时需要选中udhcpc命令,即在busybox的选项中选中udhcpc命令即可。
注:我这里用的busybox是1.23.2版本
在网上(http://www.busybox.net/)下载busybox1.23.2,解压到自己的文件夹中。执行make menuconfig,得到下面界面
注:以下前两步是我制作文件系统的需要,关于udhcpc的步骤是3)中所述。
1)在Busybox Setting → Build Options → Cross Compiler prefix (NEW)选项中设置自己交叉编译器的头,我这里设置为(arm-linux-gnueabi-)
2)选中Busybox Setting → Build Options→Build BusyBox as a static binary (no shared libs)属性
3)选中编译命令(这里只演示udhcpc),进入Networking Utilities 选中[*] udhcp Client (udhcpc) ,用于生成udhcpc(client)命令,见下图
4)如果没有别的需求,退出保存即可。制作文件系统需要后续编译安装,这里就不介绍了。
(2)编译内核是需要对DHCP添加支持
1)在内核源码目录下执行make menuconfig (注:请先设置好编译器和平台等变量,我的是arm, arm-linux-gnueabi-gcc)
2)依次选中并进入[*] Networking support --->Networking options --->目录下选中
<* > Packet socket //添加.配置CONFIG_PACKET
[ * ] IP: DHCP support //添加
[ * ] Network packet filtering (replaces ipchains) --->
如下图:
3)其他各项根据自己需要设置,这里不介绍,退出保存,编译内核。
(3)文件拷贝+脚本设置
1)将busybox安装目录下的examples/udhcp/simple.script文件拷贝到开发板/usr/share/udhcpc/下(如果开发板上没有该路径,请自行创建),重命名为default.script文件
2)在开发板的etc/init.d/rcS文件中添加自动获取命令/sbin/udhcpc(不过前提是先启动网卡如ifconfig eth0 up)
2.qt自启动
qt自启动需要在用户登录后进行,所以一定要注意执行时机。
(1)设置自动登录,并进入命令行
1)打开开发板etc目录下的inittab文件,设置进入命令行模式的语句 console::respawn:-/bin/sh,这里的respawn就是自动进入命令行,如果设置为console::askfirst:-/bin/sh,就需要手动敲击Enter键进入命令行。
2)添加启动语句。
在linux中/etc/init.d/rcS一般是登录前的初始化,即在启动过程中的初始化。而profile一般是设置环境变量的,设置完成后即可启动qt了,于是在/etc/init.d中创建rcqt文件,内容为
#!/bin/sh -e
#
# rcqt
#
# start qt
/test/qt_test -qws
注:我的qt执行文件名为qt_test,放在开发板的/test/文件夹下了。
将rcqt文件添加可执行权限(chmod a+x rcqt),在profile中文件中调用刚刚创建的文件,添加语句
# start qt
./etc/init.d/rcqt
这样就OK了。