2013年7月19日 星期五

[Linux] Step by step compile Liunx Kernel for Add F2FS

Step by step compile Linux kernel for Add F2FS
(base on Ubuntu10.04& 3.10.0+ Kernel)

2013.7.9整理
編譯步驟:
1. http://www.kernel.org/ 上下載最新的内核source code: linux-2.6.35.2.tar.bz2(目前最新的版本),然後     放在/usr/src目錄下。
2. 為了使編譯過程方便,建議進入root帳戶進行操作,這樣做使你不用每次都用sudo命令。(原作者不太確     定這樣做安全性是否可靠)
    進入Termainal,執行: su root (我用這個才能進root: sudo -s) 然後輸入你的Password,這一就             在root帳戶權限下進行剩下的操作了。
3.下載的Linux source code是壓縮檔,需要解壓縮到目錄下: tar -j x vf linux-2.6.35.2.tar.bz2 -C                 /usr/src
4. 進入解壓後的目錄:cd /usr/src/linux-2.6.35.2
F2fs_1. 在你指定的目錄中(~/Desktop/f2fs/),下載3.10.0+kernel:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
F2fs_2.& 5. 檢查有無不正確的.o文件和依賴關係: make mrproper ( 其實這一部可以省略,因為是剛下載好的source code,一定是乾淨的;如果使用的是已經編譯過的code,則需要做這一步)
F2fs_2.& 6. 配置Kernel選項: make menuconfig (這一步很重要,它決定了你可以個人客製化你的Kernel。當你使用menuconfig時,會有一些選擇列出來) 主列表如下:
    General Setup 常規的配置,比如Kernel config, CPU GroupAduiting等等
    Loadable module support 客製化你要加載哪些modules
    Enable the block layer 主要是block設備和大文件的設置
    Processor type and features 處理器配置和特性
    Power management options 電源管理的客製化,比如Hibernate這種
    Bus options PCI總線的客製化
    Executable file formats 主要是設置ELF的配置
    Networking support 客製化網路選項,包括WirelessBluetoothNetwork選項
    Device Drivers 客製化你需要加載的設備驅動
    Fireware Drivers BIOSEFI這樣的固件驅動設置
    File System 文件系统的設置,包括EXT3, EXT4, FAT, CD/DVD...等等N
    Kernel hacking 主要是設置Kernel debugging的,做內核調試會有用
    Security options 安全選項
    Cryptographic API 加密設置,包括MD5, SHA1, CRC等等N種加密算法的配置
    Virtualization 虛擬化設置
    Library routines 主要客製CRC校驗的function
    上面是16大項,每一項都有n多小項,說真的這裡面每一項都夠研究一陣子的。不過對內核編譯而言,你可以全部採用默認選項(會延長編譯時間)。設置好了menuconfig,保存退出。
F2fs_3.&7. 建立Modules依賴關係: make dep
F2fs_4.&8. 刪除配置後剩下的不適用的文件:make clean
F2fs_5.&9. 編譯內核:make bzImage (這個會花些時間,看機器情況和menuconfig的定義而言。作者採用默認的設置,編譯時間花了20分鐘左右。如果kernel 小於512K,可以用make zImage命令)
F2fs_6.&10. 编譯内核模組:make modules (這個也會花點時間,要看你客製化的modules數量而言。採用默認設置,花了大約25分鐘。你可以用make –j<n> 加快編譯速度,n代表你CPU的數量)
F2fs_7.&11. 安裝內核模組:make modules_install
F2fs_8.&12. 安裝内核:make install
13. 創建initrd文件: (1) cd / (2) 輸入: mkinitramfs 2.6.35.2 -o /boot/initrd.img-2.6.35.2-generic
F2fs_9. 創建initrd文件: (1) cd / (2)輸入: mkinitramfs 3.10.0+ -o /boot/initrd.img-3.10.0+
14. 拷貝編譯好的內核image: cp /usr/src/linux-2.6.35.2/arch/i386/boot/bzImage /boot/vmlinuz-2.6.35.2-generic
F2fs_10. 拷貝編譯好的內核image: cp ~/Desktop/f2fs/f2fs/arch/i386/boot/bzImage /boot/vmlinuz-3.10.0+
F2fs_11.&.15. 最後一步,修改Grub,更新啟動列表: update-grub (如須手動編輯grub.cfg,則在root帳戶下使用gedit就可以了)
(注:Ubuntu10.04已經使用了Grub2來管理啟動設置,而不是Grub,所以在以往的/boot/grub路徑下你是找不到menu.lst, 因為Grub2已經使用了/boot/grub/grub.cfg來管理配置啟動設置,不過最好不要手動編譯這個文件,具體的方式是編輯/etc/default/grub/etc/grub.d下的腳本文件。有關Grub2的詳細教程,請參考https://docs.google.com/Doc?docid=0AeVQ5PqmbeaoZGc0czgyOWtfMjRjbWo0ODVoYw&hl=en )
F2fs_11.& 16. Reboot機器,然後Enjoy it!


實際執行截圖:
1.    格式化: mkfs.f2fs –l label /dev/sdb
2.    掛載: sudo mount –t f2fs /dev/sdb /mnt/f2fs

3.    Check設備是否完成掛載: df
4.    Check 設備file system type: df -T
5.    Menuconfig中和f2fs相關的選項



Reference: blog.csdn.ntw/zufeng_chen/article/details/5824544

沒有留言:

張貼留言