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 Group,Aduiting等等
    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: 客製化網路選項,包括Wireless,Bluetooth和Network選項
    Device Drivers: 客製化你需要加載的設備驅動
    Fireware Drivers: BIOS和EFI這樣的固件驅動設置
    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

沒有留言:

張貼留言