多语言展示
当前在线:1765今日阅读:26今日分享:39

【3】定制个人的Linux:[3]

本资料的目的是在SD卡中安装嵌入式Linux的全过程超级详解,以及之后的一些相关配置,从而定制自己的Linux的系统。(Linux系统是Centos6.5最小系统,文本界面)使用的方法是最简单最懒的方法。
工具/原料
1

工控板一个。

2

8G的SD卡一张。

3.1、设置屏幕分辨率。
1

输入命令:vi /boot/grub/grub.conf

2

如图,在quiet后添加一句话。vga=0x318然后保存退出,reboot重启。 附显示模式表  640x480800x6001024x7681280x1024 256色        0x3010x3030x3050x307 32K色  0x3100x3130x316  0x31964K色  0x3110x314 0x317 0x31A16M色  0x3120x3150x3180x31B

3.2、配置网络。
1

1、进入系统后,输入命令vi空格/etc/sysconfig/network-scripts/ifcfg-eth0后,按下回车,进入IP地址编辑页面,如下图:

2

更改ONBOOT为yes,然后更改IPADDR的ip地址,在添加一个DNS1的DNS服务器地址。其他默认。修改完成后,按下“Esc”键,退出编辑模式,再按下“:”(冒号)键,进入命令模式,输入“wq”后,再按回车即保存设置并退出。如下图

3

此时,修改IP地址即完成,如需立即生效,输入命令:“/etc/init.d/network空格reload”或重启命令:“reboot”后即可生效;

4

2、匹配网卡特殊情况下,由于SD卡更换了工控板,所以有的SD卡上的网卡号和工控板不匹配,所以需要更改。使用命令“vi空格/etc/udev/rules.d/70-persistent-net.rules”回车,进入该文件,如下图:

5

将具有与实际网络MAC地址相同的行,按下键盘“a”键,进入编辑模式,修改为“eth0”和“eth1”,注意靠近DVI接口的那网络接口为eth0,另一个为eth1,其他改为任意值或删掉即可,修改完成后,按下“Esc”键,退出编辑模式,再按下“:”(冒号)键,进入命令模式,输入“wq”后,再按回车即保存设置并退出。修改完成后,使用命令“reboot”或断电,重新启动系统即可。

3.3、关闭屏幕保护程序。
1

1、执行下面的命令就可以解决这个问题。setterm -blank 0

2

2、永久方法archlinux 在/etc/bash.bashrc文件中加入:setterm -blank 0 centos6.5则是在/etc/bashrc加入:setterm -blank 0

3.4、使用yum下载需要的程序
1

前提是linux配置好网络,可以上网。然后输入如下命令:(这是我认为一些要用到的程序,如果差什么就自己再去下吧。)

2

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

3

如上图,开始安装。

3.5、配置VIM显示行号
1

在vim中如果想临时显示一下行号,则进入一般模式(默认进入的就是一般模式,如果在编辑模式中,按esc键返回一般模式),然后输入: set nu ;取消显示行号输入 :set nonu

2

如果想永久生效,需要修改vim的环境设置文件(默认不存在此文件,需手动建立):~/.vimrc

3

#vim ~/.vimrc #内容如下set nu保存退出后,再次进入vim就可以看到效果了。

4

~/.vimrc文件中还有其他一些配置,可以参考下:#自动缩排set autoindent #高亮度反白set hlsearch #进行语法校验,颜色显示syntax on #显示不同的底色色调set bg=dark

3.6、Linux自动登录的设置方法。
1

对于linux的自动登录,需要用到两个文件。mingetty和login。更改mingetty和login的源码。该方法只对文本模式有效,因此,需要把/etc/initab中的设置为:id:3:initdefault:/sbin/mingetty的作用是获取登陆用户名,并把用户名作为参数调用/bin/login。/bin/login其中一个功能就是获取用户输入的密码。

2

(1) 查看/sbin/mingetty所属的软件包[root@localhost ~]$ rpm -qf /sbin/mingetty mingetty-1.08-5.e16.i686

3

(2)下载mingetty对应的源码mingetty-1.08-5.el6.i686.rpm

4

(3)解压源码包[root@localhost Desktop]# rpm -ivh mingetty-1.08-5.el6.i686.rpm

5

解压后的源码包所在的目录为:/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

6

(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 */ /*; */

7

(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的源码更改就完成了。

8

(1) 查看/bin/login所属的软件包[root@localhost ~]# rpm -qf /bin/loginutil-linux-2.17.2-12.14-e16.i686(2)下载login对应的源码

9

(3)解压源码包#Tar –zxvfutil-linux-ng-2.17.2.tar.gz得到util-linux-ng-2.17.2文件。#cdlogin-utils

10

login-utils文件中不存在make文件,因此,需要自己编写编译命令来生成login。

11

(4)修改login.c中的代码把434行的passwd_req = 1;更改为passwd_req = 0;

12

在文件中添加locale.h头文件#include

13

(5)编译生成login[root@localhost login-utils]# gcc -o login login.c ../lib/setproctitle.cchecktty.c -Wall -lcrypt -I ../include/

14

(6)更新login[root@localhost login-utils]# cp login /bin/loginreboot重启,即可在文本模式中以root账户登录。

3.7、Linux中自动挂载U盘,并拷贝程序。
1

这里用到linux中的热插拔和mdev机制。mdev是busybox自带的一个简化版的udev,作用是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的mdev扫描/sys/class和/sys/block中所有的类设备目录,如果在目录中含有名为'dev'的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点用法    下面介绍方法。

2

1、下载最新的busybox。我这里下的是busybox-1.22.1.tar.bz2这个版本。

3

2、解压busybox。    老版本的linux要两步,一步是解压缩,一步是解包bzip2 -d **.tar.bz2   //将文件解压成**.tartar -xf **.tar //解包现在新出的linux版本,只要一步就可以解压完毕tar -xf **.tar.bz2

4

3、配置和安装busybox。#cd busybox-1.22.1#makemenuconfig因为是最新的,都默认帮你配置好了(懒人必备,嘿嘿),所以ESC,保存就好。不过一般是需要这么配置。选择支持mdevLinuxSystem Utilities --->   [*] mdev   [*] Support /etc/mdev.conf   [*] Support commandexecution at device addition/removal

6

#make install

7

如果出现上面这种情况则说明安装busybox成功,至此busybox安装完成。编译好后在busybox目录下会生成_install目录#chmod 4755 ./_install/bin/busybox      必须要要修改属性,否则在busybox中很多命令会受限制。#cd _install#cp linuxrc /

8

将linuxrc复制到 / 中#cd sbin/

9

然后输入下面命令。复制文件到/sbin/中#cp * /sbin/之后一直按n不要覆盖。然后输入下面命令#cp ../usr/sbin/* /usr/sbin/之后一直按n不要覆盖。#vi /etc/mdev.conf填写如下图的信息。稍微懂一些linux指令的应该知道,这个配置文件的作用是,自动挂载SD卡或者U盘后,将其里面的1.c文件复制到/home下,可根据需要自行修改。

10

注:至此装完busbox后就有个小bug,输入reboot没反应,键盘也是。可能是配置busbox时偷懒没配置好,不过你可以手动掉电重启之后就没有问题了。

11

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

12

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文件

13

在这里第二种方法是,每次让系统重新启动的时候,自动执行一些用户指定的命令,一般这些命令可以放在/etc/rc.d/rc.local文件中。有个问题,这里一定要手打,注意换行符,不然会出错。各位读者请注意好格式!一定要注意啊,且行且珍惜!!

注意事项
1

这是继《在SD卡上定制嵌入式Linux。:[1]U盘启动篇》之后的第三篇

2

注:本人使用的工控板是X86架构的,不是ARM。当然理论上ARM也是可以的,需要读者自己去实验。

推荐信息