鑑於本身製做根文件系統太麻煩了,因此想用buildroot管理uboot,kernel,另外還能夠自動生產rootfs,因而花了兩天研究了下buildroot的框架和使用,在本身的2440開發板上也跑起來了,故整理成文檔,以便本身未來忘記的時候能參考下:linux
源碼下載,我下載的是2018.02.3版本,官方下載地址:http://buildroot.org/downloads/git
因爲我是玩的JZ2440的板子,故我就以這個板子做爲藍本說明:github
1.cd到buildroot根目錄下。框架
2.首先查看當前buildroot支持哪些單板:less
a.去configs/目錄下直接查看。工具
b.在根目錄下執行make list-defconfigs。ui
3. 因爲個人板子是比較老的s3c2440的板子,因而只好我本身建立了,執行make menuconfig,一項一項的去設置:blog
a.Target options:開發
b.Build options:文檔
暫時保持默認便可。
Toolchain:
Toolchain type --------> External toolchain #由於我使用本身安裝的toolchain
Toolchain --------> Custom toolchain #客戶定製的工具鏈
Toolchain origin --------> Pre-installed toolchain #事先安裝的工具鏈
Toolchain path --------> ****/toolschain/4.4.3/ #填上本身工具鏈的絕對路徑便可,注意這裏只是到bin的上一級目錄便可,好比我舉例的,知道4.4.3目錄
Toolchain prefix --------> $(ARCH)-linux #工具鏈的前綴,通常就是arm-linux
External toolchain gcc version --------> 4.4.x #gcc版本,跟實際保持一致便可
External toolchain kernel headers series --------> 4.15.x #不清楚這個是幹嗎的,但我選擇跟將使用的kernel版本一致,個人kernel版本是4.15.1,這裏後面編譯的時候會報錯,後面再說明。
External toolchain C library --------> glibc/eglibc #彷佛通常都是用這個庫
c.System configuration:
System hostname --------> smdk2440 #隨便設置一個名稱,不重要
System banner --------> welcome to smdk2440 #設置一個歡迎詞,當掛在上根文件系統以後就會打印這個字符串
[*]Enable root login with password --------> #開啓密碼,這樣在登陸linux的時候就會出現詢問密碼的界面
Root password --------> #設置一個密碼
d.Kernel:
Kernel version --------> Custom Git repository #個人代碼是在github上,因此我選擇了這個
URL of custom repository --------> #填上github上的地址,這裏有點說明,若是是開發階段,確定不但願每次修改都往girhub上推,那麼這裏就能夠填上本身本地git倉庫的絕對地址。
Custom repository version --------> #填上須要克隆的版本,就是用git log|less看到的那個哈希值,這樣buildroot就會去克隆相應的linux版本,我猜想能夠直接寫成master也能夠,這樣不須要每次都是人爲的修改 版本號,保證每次拉下來的都是最新的,這個還有待確認。
Kernel configuration --------> Using a custom (def)config file #kernel須要一個config文件,這裏就是選擇使用defconfig,這樣下一個選擇路徑的選項就會出現
Configuration file path --------> $(TOPDIR)/board/arm/smdk2440/smdk2440_linux_defconfig) #填上本身將使用的config文件,這個路徑是本身建立的,保持buildroot規範
在linux下使用s3c2410_defconfig直接拷貝過來修更名字,若是後期linux的config還須要改動,那麼就要將新的拷貝到這個目錄下。
e.Filesystem images:
[*] jffs2 root filesystem --------> #我先使用jffs2吧,使用yaffs2編譯的時候報錯了,我不知道怎麼修改。
f.Bootloaders:
跟kernel相似,再也不重複介紹。
4. 通過上述操做就會在根目錄下生產一個.config文件,而後make,這樣buildroot就會根據相應的設置去編譯uboot,kernel,以及自動製做rootfs。
通過漫長的下載,編譯,最後生成的文件位於:output/images/下。
5.遇到的問題就是那個linux header跟linux不相符,由於Toolchain-> kernel headers series選的是4.15.x,而個人工具鏈是4.4.3,有一個宏不匹配,暫時不記得了,這篇帖子是寫的第二次了,第一次弄丟了,博客園的草稿箱裏也找不到了,真是奇怪。