buildroot管理uboot+kernel+rootfs


鑒於自己制作根文件系統太麻煩了,所以想用buildroot管理uboot,kernel,另外還可以自動生產rootfs,於是花了兩天研究了下buildroot的框架和使用,在自己的2440開發板上也跑起來了,故整理成文檔,以便自己將來忘記的時候能參考下:

源碼下載,我下載的是2018.02.3版本,官方下載地址:http://buildroot.org/downloads/

由於我是玩的JZ2440的板子,故我就以這個板子作為藍本說明:

1.cd到buildroot根目錄下。

2.首先查看當前buildroot支持哪些單板:

   a.去configs/目錄下直接查看。

   b.在根目錄下執行make list-defconfigs。

3. 由於我的板子是比較老的s3c2440的板子,於是只好我自己創建了,執行make menuconfig,一項一項的去設置:

    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,有一個宏不匹配,暫時不記得了,這篇帖子是寫的第二次了,第一次弄丟了,博客園的草稿箱里也找不到了,真是奇怪。   

 

                                       

 

   

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM