工控板一个。
8G的SD卡一张。
输入命令:vi /boot/grub/grub.conf
如图,在quiet后添加一句话。vga=0x318然后保存退出,reboot重启。 附显示模式表 640x480800x6001024x7681280x1024 256色 0x3010x3030x3050x307 32K色 0x3100x3130x316 0x31964K色 0x3110x314 0x317 0x31A16M色 0x3120x3150x3180x31B
1、进入系统后,输入命令vi空格/etc/sysconfig/network-scripts/ifcfg-eth0后,按下回车,进入IP地址编辑页面,如下图:
更改ONBOOT为yes,然后更改IPADDR的ip地址,在添加一个DNS1的DNS服务器地址。其他默认。修改完成后,按下“Esc”键,退出编辑模式,再按下“:”(冒号)键,进入命令模式,输入“wq”后,再按回车即保存设置并退出。如下图
此时,修改IP地址即完成,如需立即生效,输入命令:“/etc/init.d/network空格reload”或重启命令:“reboot”后即可生效;
2、匹配网卡特殊情况下,由于SD卡更换了工控板,所以有的SD卡上的网卡号和工控板不匹配,所以需要更改。使用命令“vi空格/etc/udev/rules.d/70-persistent-net.rules”回车,进入该文件,如下图:
将具有与实际网络MAC地址相同的行,按下键盘“a”键,进入编辑模式,修改为“eth0”和“eth1”,注意靠近DVI接口的那网络接口为eth0,另一个为eth1,其他改为任意值或删掉即可,修改完成后,按下“Esc”键,退出编辑模式,再按下“:”(冒号)键,进入命令模式,输入“wq”后,再按回车即保存设置并退出。修改完成后,使用命令“reboot”或断电,重新启动系统即可。
1、执行下面的命令就可以解决这个问题。setterm -blank 0
2、永久方法archlinux 在/etc/bash.bashrc文件中加入:setterm -blank 0 centos6.5则是在/etc/bashrc加入:setterm -blank 0
前提是linux配置好网络,可以上网。然后输入如下命令:(这是我认为一些要用到的程序,如果差什么就自己再去下吧。)
yum install gcc gcc-c++autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devellibxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogse2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-develnss_ldap openldap openldap-devel openldap-clients openldap-serverslibxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhancedpython wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-develTcl/Tk cmake ncurses-devel bison setuptool popt-devel rsynx opensshsystem-config-network-tui gcc gc bc gd make perl ncurses-devel xz -y
如上图,开始安装。
在vim中如果想临时显示一下行号,则进入一般模式(默认进入的就是一般模式,如果在编辑模式中,按esc键返回一般模式),然后输入: set nu ;取消显示行号输入 :set nonu
如果想永久生效,需要修改vim的环境设置文件(默认不存在此文件,需手动建立):~/.vimrc
#vim ~/.vimrc #内容如下set nu保存退出后,再次进入vim就可以看到效果了。
~/.vimrc文件中还有其他一些配置,可以参考下:#自动缩排set autoindent #高亮度反白set hlsearch #进行语法校验,颜色显示syntax on #显示不同的底色色调set bg=dark
对于linux的自动登录,需要用到两个文件。mingetty和login。更改mingetty和login的源码。该方法只对文本模式有效,因此,需要把/etc/initab中的设置为:id:3:initdefault:/sbin/mingetty的作用是获取登陆用户名,并把用户名作为参数调用/bin/login。/bin/login其中一个功能就是获取用户输入的密码。
(1) 查看/sbin/mingetty所属的软件包[root@localhost ~]$ rpm -qf /sbin/mingetty mingetty-1.08-5.e16.i686
(2)下载mingetty对应的源码mingetty-1.08-5.el6.i686.rpm
(3)解压源码包[root@localhost Desktop]# rpm -ivh mingetty-1.08-5.el6.i686.rpm
解压后的源码包所在的目录为:/usr/src/redhat/SOURCES/查看文件[root@localhost ~]# ls /usr/src/redhat/SOURCES/mingetty*/usr/src/redhat/SOURCES/mingetty-1.00-opt.patch/usr/src/redhat/SOURCES/mingetty-1.08.tar.gz继续解压源码包[root@localhost ~]# tar zxvf /usr/src/redhat/SOURCES/mingetty-1.08.tar.gzmingetty-1.08/mingetty-1.08/mingetty.8mingetty-1.08/COPYINGmingetty-1.08/Makefilemingetty-1.08/mingetty-0.9.4-autologin.patchmingetty-1.08/mingetty.c
(4)修改mingetty.c中的代码更改mingetty的代码需要进行两步操作。第352行的char *logname, *s;更改为char *logname = 'root', *s;把第409-415行注释/* if (autologin) { do_prompt (0); printf ('login: %s (automatic login)\n', autologin); logname = autologin; } else while ((logname = get_logname ()) == 0) /* do nothing */ /*; */
(5)编译生成mingetty[root@localhost ~]# cd /usr/src/redhat/SOURCES/mingetty-1.07/[root@localhost mingetty-1.08]# make(6)更新mingetty[root@localhost mingetty-1.08]# cp mingetty /sbin/mingettymingetty的源码更改就完成了。
(1) 查看/bin/login所属的软件包[root@localhost ~]# rpm -qf /bin/loginutil-linux-2.17.2-12.14-e16.i686(2)下载login对应的源码
(3)解压源码包#Tar –zxvfutil-linux-ng-2.17.2.tar.gz得到util-linux-ng-2.17.2文件。#cdlogin-utils
login-utils文件中不存在make文件,因此,需要自己编写编译命令来生成login。
(4)修改login.c中的代码把434行的passwd_req = 1;更改为passwd_req = 0;
在文件中添加locale.h头文件#include
(5)编译生成login[root@localhost login-utils]# gcc -o login login.c ../lib/setproctitle.cchecktty.c -Wall -lcrypt -I ../include/
(6)更新login[root@localhost login-utils]# cp login /bin/loginreboot重启,即可在文本模式中以root账户登录。
这里用到linux中的热插拔和mdev机制。mdev是busybox自带的一个简化版的udev,作用是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的mdev扫描/sys/class和/sys/block中所有的类设备目录,如果在目录中含有名为'dev'的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点用法 下面介绍方法。
1、下载最新的busybox。我这里下的是busybox-1.22.1.tar.bz2这个版本。
2、解压busybox。 老版本的linux要两步,一步是解压缩,一步是解包bzip2 -d **.tar.bz2 //将文件解压成**.tartar -xf **.tar //解包现在新出的linux版本,只要一步就可以解压完毕tar -xf **.tar.bz2
3、配置和安装busybox。#cd busybox-1.22.1#makemenuconfig因为是最新的,都默认帮你配置好了(懒人必备,嘿嘿),所以ESC,保存就好。不过一般是需要这么配置。选择支持mdevLinuxSystem Utilities ---> [*] mdev [*] Support /etc/mdev.conf [*] Support commandexecution at device addition/removal
#make install
如果出现上面这种情况则说明安装busybox成功,至此busybox安装完成。编译好后在busybox目录下会生成_install目录#chmod 4755 ./_install/bin/busybox 必须要要修改属性,否则在busybox中很多命令会受限制。#cd _install#cp linuxrc /
将linuxrc复制到 / 中#cd sbin/
然后输入下面命令。复制文件到/sbin/中#cp * /sbin/之后一直按n不要覆盖。然后输入下面命令#cp ../usr/sbin/* /usr/sbin/之后一直按n不要覆盖。#vi /etc/mdev.conf填写如下图的信息。稍微懂一些linux指令的应该知道,这个配置文件的作用是,自动挂载SD卡或者U盘后,将其里面的1.c文件复制到/home下,可根据需要自行修改。
注:至此装完busbox后就有个小bug,输入reboot没反应,键盘也是。可能是配置busbox时偷懒没配置好,不过你可以手动掉电重启之后就没有问题了。
4、自动挂载和卸载U盘。1、在文件系统添加如下内容vi /etc/init.d/rcSmount -t tmpfs mdev /devmount -t sysfs sysfs /sysecho/sbin/mdev > /proc/sys/kernel/hotplugmdev -s[etc]# vi inittab::sysinit:/etc/init.d/rcS::respawn:-/bin/sh ::ctrlaltdel:/bin/umount -a -r ::shutdown:/bin umount -a -r::shutdown:/sbin/swapoff -a[etc]# vi ../usr/etc/init#!/bin/shmount -t tmpfs mdev /devecho/sbin/mdev > /proc/sys/kernel/hotplugmdev -s
2、添加对热插拔事件的响应,实现U盘和SD卡的自动挂载。 这里有两种方法,一种是输入命令的形式,当然只是临时的,一掉电或者重启就没了。另外一种是永久形式。 先说下第一种:1. 执行mdev前要挂载 /sys#mount -t tmpfs mdev /dev#mount-t sysfs sysfs /sys 2.命令内核在增删设备时执行/sbin/mdev,使设备节点会被创建和删除#echo /sbin/mdev >/proc/sys/kernel/hotplug 3.设置mdev,让它在系统启动时创建所有的设备节点#mdev -s退出,保存。然后reboot重启。至此Linux中自动挂载U盘,并拷贝程序,之后自动卸载U盘的方法。你可以实验下,在U盘中建一个1.c文件,然后插入工控板,之后拔出来,看看linux中/home下是否有1.c文件
在这里第二种方法是,每次让系统重新启动的时候,自动执行一些用户指定的命令,一般这些命令可以放在/etc/rc.d/rc.local文件中。有个问题,这里一定要手打,注意换行符,不然会出错。各位读者请注意好格式!一定要注意啊,且行且珍惜!!
这是继《在SD卡上定制嵌入式Linux。:[1]U盘启动篇》之后的第三篇
注:本人使用的工控板是X86架构的,不是ARM。当然理论上ARM也是可以的,需要读者自己去实验。