2012年10月25日 星期四

[轉貼]zImage,uImage 區別


資料來源: zImage,uImage 區別
對於Linux內核,編譯可以生成不同格式的映像文件,例如:
# make zImage
# make uImage
zImage是ARM Linux常用的一種壓縮映像文件,uImage是U-boot專用的映像文件,它是在zImage之前加上一個長度為0×40的「頭」,說明這個映像文件的類型、加載位置、生成時間、大小等信息。換句話說,如果直接從uImage的0×40位置開始執行,zImage和uImage沒有任何區別。另外,Linux2.4內核不支持uImage,Linux2.6內核加入了很多對嵌入式系統的支持,但是uImage的生成也需要設置。
一、vmlinuz
vmlinuz是可引導的、壓縮的內核。「vm」代表「Virtual Memory」。Linux 支持虛擬內存,不像老的操作系統比如DOS有640KB內存的限制。Linux能夠使用硬盤空間作為虛擬內存,因此得名「vm」。
vmlinuz 的建立有兩種方式。一是編譯內核時通過「make zImage」創建,然後通過:「cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage/boot/vmlinuz」產生。zImage適用於小內核的情況,它的存在是為了向後的兼容性。
二是內核編譯時通過命令make bzImage創建,然後通過:「cp/usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz」產生。bzImage是壓縮的內核映像,需要注意,bzImage不是用bzip2壓縮的,bzImage中的bz容易引起誤解,bz表示「big zImage」。 bzImage中的b是「big」意思。 zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip壓縮的。它們不僅是一個壓縮文件,而且在這兩個文件的開頭部分內嵌有 gzip解壓縮代碼。所以你不能用gunzip 或 gzip –dc解包vmlinuz。
二、initrd-x.x.x.img
initrd是「initial ramdisk」的簡寫。initrd一般被用來臨時的引導硬件到實際內核vmlinuz能夠接管並繼續引導的狀態。
initrd 映像文件是使用mkinitrd創建的。mkinitrd實用程序能夠創建initrd映像文件。這個命令是RedHat專有的。其它Linux發行版或許有相應的命令。這是個很方便的實用程序。具體情況請看幫助:man mkinitrd下面的命令創建initrd映像文件。
最後生成的內核鏡像有兩種 zImage 以及 uImage 。其中 zImage 下載到目標板中後,可以直接用 uboot 的命令go 來進行直接跳轉。這時候內核直接解壓啟動。但是無法掛載文件系統,因為 go 命令沒有將內核需要的相關的啟動參數傳遞給內核。傳遞啟動參數我們必須使用命令 bootm 來進行跳轉。 Bootm 命令跳轉只處理 uImage 的鏡像。
uboot 源代碼的 tools/ 目錄下有 mkimage 工具,這個工具可以用來製作不壓縮或者壓縮的多種可啟動映像文件。
mkimage 在製作映像文件的時候,是在原來的可執行映像文件的前面加上一個 0×40 字節的頭,記錄參數所指定的信息,這樣 uboot 才能識別這個映像是針對哪個 CPU 體系結構的,哪個 OS 的,哪種類型,加載內存中的哪個位置, 入口點在內存的那個位置以及映像名是什麼
用法如下:
./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
-A ==> set architecture to ‘arch’
-O ==> set operating system to ‘os’
-T ==> set image type to ‘type’
-C ==> set compression type ‘comp’
-a ==> set load address to ‘addr’ (hex)
-e ==> set entry point to ‘ep’ (hex)
-n ==> set image name to ‘name’
-d ==> use image data from ‘datafile’
-x ==> set XIP (execute in place)
參數說明:
-A 指定 CPU 的體系結構:
取值 表示的體系結構
alpha Alpha
arm A RM
x86 Intel x86
ia64 IA64
mips MIPS
mips64 MIPS 64 Bit
ppc PowerPC
s390 IBM S390
sh SuperH
sparc SPARC
sparc64 SPARC 64 Bit
m68k MC68000
-O 指定操作系統類型,可以取以下值:
openbsd 、 netbsd 、 freebsd 、 4_4bsd 、 linux 、 svr4 、 esix 、 solaris 、 irix 、 sco 、 dell 、 ncr 、 lynxos、 vxworks 、 psos 、 qnx 、 u-boot 、 rtems 、 artos
-T 指定映像類型,可以取以下值:
standalone 、 kernel 、 ramdisk 、 multi 、 firmware 、 script 、 filesystem
-C 指定映像壓縮方式,可以取以下值:
none 不壓縮
gzip 用 gzip 的壓縮方式
bzip2 用 bzip2 的壓縮方式
-a 指定映像在內存中的加載地址,映像下載到內存中時,要按照用 mkimage 製作映像時,這個參數所指定的地址值來下載
-e 指定映像運行的入口點地址,這個地址就是 -a 參數指定的值加上 0×40 (因為前面有個 mkimage 添加的0×40 個字節的頭)
-n 指定映像名
-d 指定製作映像的源文件
我在編譯時用到的命令如下:
# make zImage      // 生成 zImage 鏡像
# /usr/local/arm/k9uboot/tools/ mkimage -n ‘Linux 2.4.27′ -A arm -O linux -T
kernel -C none -a 0×20007fc0 -e 0×20008000 -d zImage uImage

2012年10月18日 星期四

Fedora 14以上版本 [ cross-compile 時發生Makefile:XXX: *** mixed implicit and normal rules. Stop.

% yum --nogpgcheck --releasever=13 downgrade make

Fedora 17 安裝 NFS Server


1.安裝NFS 套件
% yum -y install nfs-utils

2.設定指定檔案掛載
% vi /etc/exports

  # write like below *note
  /home 172.16.0.0/16 (rw,nohide,insecure,no_subtree_check,async,no_root_squash)

3. mount folder
%  mount -t nfs 172.16.24.187:/tmp ./nfs/

4. unmount folder
%  umount nfs

5. 顯示目前掛載
% showmount --exports 127.0.0.1

Install in detail:
http://www.server-world.info/en/note?os=Fedora_17&p=nfs
http://linux.vbird.org/linux_server/0330nfs.php


Fedora17 設置 openssh server

1. 安裝openssh-server
% yum install openssh-server

2. 查看是否成功安裝openssh-server
% rpm -qa | grep openssh-server

3. sshd_config 設定參數
% vim /etc/ssh/sshd_config
 
4. 防火牆允許port22服務
% iptables -I INPUT -p tcp --dport 22 -j ACCEPT

5. enable and start the SSH service
% systemctl enable sshd.service
% systemctl start sshd.service

6. restart the SSH Server to activate the configuration
% systemctl restart sshd.service

2012年10月13日 星期六

回 饋社會 無關年華--洪蘭


人不管怎麼巧,終逃不過死亡,所以一生一定要做些對別人也有利的事才可。當生命消失時,至少要讓這副臭皮囊化作春泥更護花!
一位在國外進修的學生寄了張賀年卡來,信裡開玩笑說他被我們騙了,學問原來是臭的。原來他在開刀房實習,用電刀劃開病人的脂肪組織時,會冒出臭的青煙,但是手術台上躺著卻是國家科學院的院士,某學術領域的大師。
他說學問再大,仍是一副臭皮囊。雖是玩笑話,卻讓人深思,讀了一大堆書,如果沒有用出來,滿腹經綸化成塵土,的確是白走人世一遭。 難怪古人把懷才不遇、壯志未酬當作讀書人最大的不幸。

想做事,不必等待

不過成功的定義有很多種,對自己有利的叫「成功」,只有對別人也有利的才叫「成就」,這兩者是不同的。 《紅樓夢》中賈府的家廟叫鐵檻寺,因為「縱有千年鐵門檻,終需一個土饅頭 」
人不管怎麼巧,終逃不過死亡,人一生一定要做些對別人也有利的事才可。
我在大學教書時的校長是林清江校長,他說五十歲以前要努力證明自己是有用之人,五十歲以後,要努力將這個有用回饋社會,所以他要我們去嘉義的文化中心對民眾演講,要把實驗室做的研究講到一般老百姓聽得懂才行,他要我們學以致用。
最近一位八歲的華裔女孩出了本書,記者問她,「妳長大要做什麼?」她說, 「我為什麼要等到長大才做什麼?這是很奇怪的觀念,你們大人都假設沒有長大之前就什麼都不是,我現在就是個作家。」
Bravo !你不必等長大才去做你想要做的事,現在就可以做。人生難以預料,說不定等到長大時就已經太晚了。
你也不必擔心太老了,不能去做你想要做的事,因為青春無關年華,它是內心境界。
有句英文諺語說得好,「假如你認為你還青澀,你可以繼續成長,如果你認為你已成熟,那只能等著爛掉。」 我們的心決定我們的行為,我們的行為反過頭來決定大腦神經的連接,只要心中覺得是年輕就可以做很多的事,最主要是做的事不能只為自己。有一個研究訪問九十歲以上的老人,問他們如果可以重新再活一次,他們會做什麼改變? 結果大多數人說, 「我會多做一些事情,讓這些事情在我死後仍然可以延續下去。」
的確,如果一切隨風而逝,那就彷彿不曾走過,所以人一定要做一些比生命更長久的事情,當生命消失時,至少要讓這副臭皮囊化作春泥更護花!

知人之道有七焉

知人之道有七焉: 
一曰,問之以是非而觀其志; 
二曰,窮之辭辯以觀其變; 
三曰,咨之以計謀而觀其識; 
四曰,告之以禍難而觀其勇; 
五曰,醉之以酒而觀其性; 
六曰,臨之以利而觀其廉; 
七曰,期之以事而觀其信。    ~諸葛亮

一曰:問之以是非而觀其志 

(故意用各種是是非非的問題來考察其是否有堅定的意向和主見,屬於操守。) 

二曰:窮之以辭辯而觀其變 

(用各種辯論來考察其隨機應變的能力,屬於才幹。) 

三曰:咨之以計謀而觀其識 

(要求其出謀劃策以觀察其見識,屬於才幹。) 

四曰:告知以禍難而觀其勇 

(如實告知甚至誇大事情的嚴重性,考查是否臨危不懼,屬操守。) 

五曰:醉之以酒而觀其性 

(將其帶到紙醉金迷的場合而觀其品性,屬於操守。) 

六曰:臨之以利而觀其廉 

(使其處於能獲利的地位來考察其是否廉潔奉公,屬操守。) 

七曰:期之以事而觀其信 

(讓其做一些小事而考察其是否能言行如一,屬操守。)

挫折是本分,順利是福分

「挫折是本分,順利是福分」
每個人一生中沒有不受挫的,任何痛苦都是取決於心態
                                                                                       ~洪蘭

2012年10月12日 星期五

linux proxy 設定 for apt and yum

1.yum proxy setting

(Step1) yum 的設定檔在 /etc/yum.conf ,修改設定檔,加入以下參數
 # The proxy server - proxy server:port number
 proxy=http://your_proxy_ip_server:port

 # The account details for yum connections
 proxy_username=user_name
 proxy_password=user_password

(Step2) 修改後要順手清空 yum 本身的 cache,
   # yum clean all



2. apt proxy setting

(Step1) apt 的設定檔在 /etc/apt/apt.conf ,修改設定檔,加入以下參數
# export http_proxy=http://proxy.my.company:port/

#http://login:password@proxyaddress:port