【3】定製個人的Linux:[3]?

Tags: 文件, 個人,

本資料的目的是在SD卡中安裝嵌入式Linux的全過程超級詳解,以及之後的一些相關配置,從而定製自己的Linux的系統。(Linux系統是Centos6.5最小系統,文本界面)使用的方法是最簡單最懶的方法。

工具/原料

工控板一個。

8G的SD卡一張。

3.1、設置屏幕分辨率。

輸入命令:

vi /boot/grub/grub.conf

【3】定製個人的Linux:[3]

如圖,在quiet後添加一句話。vga=0x318

然後保存退出,reboot重啟。

附顯示模式表 640x480800x6001024x7681280x1024

256色 0x3010x3030x3050x307

32K色  0x3100x3130x316 0x319

64K色  0x3110x314 0x317 0x31A

16M色  0x3120x3150x3180x31B

3.2、配置網絡。

1、進入系統後,輸入命令vi空格/etc/sysconfig/network-scripts/ifcfg-eth0後,按下回車,進入IP地址編輯頁面,如下圖:

【3】定製個人的Linux:[3]

【3】定製個人的Linux:[3]

更改ONBOOT為yes,然後更改IPADDR的ip地址,在添加一個DNS1的DNS服務器地址。其他默認。

修改完成後,按下“Esc”鍵,退出編輯模式,再按下“:”(冒號)鍵,進入命令模式,輸入“wq”後,再按回車即保存設置並退出。如下圖

【3】定製個人的Linux:[3]

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

2、匹配網卡

特殊情況下,由於SD卡更換了工控板,所以有的SD卡上的網卡號和工控板不匹配,所以需要更改。

使用命令“vi空格/etc/udev/rules.d/70-persistent-net.rules”回車,進入該文件,如下圖:

【3】定製個人的Linux:[3]

將具有與實際網絡MAC地址相同的行,按下鍵盤“a”鍵,進入編輯模式,修改為“eth0”和“eth1”,注意靠近DVI接口的那網絡接口為eth0,另一個為eth1,其他改為任意值或刪掉即可,修改完成後,按下“Esc”鍵,退出編輯模式,再按下“:”(冒號)鍵,進入命令模式,輸入“wq”後,再按回車即保存設置並退出。

修改完成後,使用命令“reboot”或斷電,重新啟動系統即可。

3.3、關閉屏幕保護程序。

1、執行下面的命令就可以解決這個問題。

setterm -blank 0

2、永久方法

archlinux 在/etc/bash.bashrc文件中加入:

setterm -blank 0

centos6.5則是在/etc/bashrc加入:

setterm -blank 0

3.4、使用yum下載需要的程序

前提是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

【3】定製個人的Linux:[3]

如上圖,開始安裝。

【3】定製個人的Linux:[3]

3.5、配置VIM顯示行號

在vim中如果想臨時顯示一下行號,則進入一般模式(默認進入的就是一般模式,如果在編輯模式中,按esc鍵返回一般模式),然後輸入: set nu ;取消顯示行號輸入 :set nonu

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

#vim ~/.vimrc

#內容如下

set nu

保存退出後,再次進入vim就可以看到效果了。

~/.vimrc文件中還有其他一些配置,可以參考下:

#自動縮排

set autoindent

#高亮度反白

set hlsearch

#進行語法校驗,顏色顯示

syntax on

#顯示不同的底色色調

set bg=dark

3.6、Linux自動登錄的設置方法。

對於linux的自動登錄,需要用到兩個文件。mingetty和login。

更改mingetty和login的源碼。

該方法只對文本模式有效,因此,需要把/etc/initab中的設置為:id:3:initdefault:

/sbin/mingetty的作用是獲取登陸用戶名,並把用戶名作為參數調用/bin/login。/bin/login其中一個功能就是獲取用戶輸入的密碼。

(1) 查看/sbin/mingetty所屬的軟件包[[email protected] ~]$ rpm -qf /sbin/mingetty mingetty-1.08-5.e16.i686

(2)下載mingetty對應的源碼mingetty-1.08-5.el6.i686.rpm

(3)解壓源碼包[[email protected] Desktop]# rpm -ivh mingetty-1.08-5.el6.i686.rpm

【3】定製個人的Linux:[3]

解壓後的源碼包所在的目錄為:/usr/src/redhat/SOURCES/查看文件[[email protected] ~]# ls /usr/src/redhat/SOURCES/mingetty*/usr/src/redhat/SOURCES/mingetty-1.00-opt.patch/usr/src/redhat/SOURCES/mingetty-1.08.tar.gz繼續解壓源碼包[[email protected] ~]# 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[[email protected] ~]# cd /usr/src/redhat/SOURCES/mingetty-1.07/[[email protected] mingetty-1.08]# make(6)更新mingetty[[email protected] mingetty-1.08]# cp mingetty /sbin/mingettymingetty的源碼更改就完成了。

(1) 查看/bin/login所屬的軟件包[[email protected] ~]# 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

【3】定製個人的Linux:[3]

login-utils文件中不存在make文件,因此,需要自己編寫編譯命令來生成login。

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

【3】定製個人的Linux:[3]

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

(5)編譯生成login[[email protected] login-utils]# gcc -o login login.c ../lib/setproctitle.cchecktty.c -Wall -lcrypt -I ../include/

(6)更新login[[email protected] login-utils]# cp login /bin/login

reboot重啟,即可在文本模式中以root賬戶登錄。

3.7、Linux中自動掛載U盤,並拷貝程序。

這裡用到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】定製個人的Linux:[3]

3、配置和安裝busybox。

#cd busybox-1.22.1

#makemenuconfig

因為是最新的,都默認幫你配置好了(懶人必備,嘿嘿),所以ESC,保存就好。

不過一般是需要這麼配置。選擇支持mdev

LinuxSystem Utilities ---> [*] mdev [*] Support /etc/mdev.conf [*] Support commandexecution at device addition/removal

【3】定製個人的Linux:[3]

【3】定製個人的Linux:[3]

#make

出現如下圖顯示則make成功,否則根據錯誤自己百度吧。我就不多說了

【3】定製個人的Linux:[3]

#make install

【3】定製個人的Linux:[3]

如果出現上面這種情況則說明安裝busybox成功,至此busybox安裝完成。編譯好後在busybox目錄下會生成_install目錄

#chmod 4755 ./_install/bin/busybox

必須要要修改屬性,否則在busybox中很多命令會受限制。

#cd _install

#cp linuxrc /

【3】定製個人的Linux:[3]

將linuxrc複製到 / 中

#cd sbin/

【3】定製個人的Linux:[3]

然後輸入下面命令。複製文件到/sbin/中

#cp * /sbin/

之後一直按n不要覆蓋。然後輸入下面命令

#cp ../usr/sbin/* /usr/sbin/

之後一直按n不要覆蓋。

#vi /etc/mdev.conf

填寫如下圖的信息。稍微懂一些linux指令的應該知道,這個配置文件的作用是,自動掛載SD卡或者U盤後,將其裡面的1.c文件複製到/home下,可根據需要自行修改。

【3】定製個人的Linux:[3]

注:至此裝完busbox後就有個小bug,輸入reboot沒反應,鍵盤也是。可能是配置busbox時偷懶沒配置好,不過你可以手動掉電重啟之後就沒有問題了。

4、自動掛載和卸載U盤。

1、在文件系統添加如下內容

vi /etc/init.d/rcSmount -t tmpfs mdev /dev

mount -t sysfs sysfs /sys

echo/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/sh

mount -t tmpfs mdev /dev

echo/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也是可以的,需要讀者自己去實驗。

文件, 個人,
相關問題答案