buildroot管理uboot+kernel+rootfs

鑑於本身製做根文件系統太麻煩了,因此想用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,有一個宏不匹配,暫時不記得了,這篇帖子是寫的第二次了,第一次弄丟了,博客園的草稿箱裏也找不到了,真是奇怪。   

相關文章
相關標籤/搜索