龍芯目前主推的內核版本有 linux‐2.6.32 和 linux‐3.10 兩個版本,其中 linux‐2.6.32 主要用于龍芯1號CPU、龍芯 2H 和龍芯 3A , linux‐3.10 主要用于龍芯 3A2000和2K以上的 CPU 版本。 LS2K1000使用的內核版本為linux‐3.10。交叉編譯器版本為gcc‐4.9.3‐64‐gnu。 1、安裝Linux內核交叉編譯器編譯Linux內核使用的是“gcc-4.9.3-64-gnu.tar.gz”,大家可以在迅為龍芯開發板資料中找到,位置:LS2K1000開發板資料\02_開發及燒寫工具 將編譯器拷貝到Ubuntu的任意目錄下,接著使用命令sudo tar -xvf gcc-4.9.3-64-gnu.tar.gz -C /”解壓編譯器,如下圖所示: ![]() 注意:解壓命令必須為這個命令,目錄是保證腳本里面的交叉編譯器環境變量的路徑跟編譯器實際解壓的路徑一致。因為我們在編譯的時候使用的是均為絕對路徑并已經在編譯腳本中寫好,大家只要按照這個路徑解壓即可,也就不用給編譯器設置環境變量了。解壓完成后會在/opt下得到解壓生成的編譯器文件夾,如下圖所示: ![]() 內核鏡像分為倆種,一種是帶ramdisk文件系統的內核鏡像,一種是不帶ramdisk文件系統的鏡像。下面我們就一起來看一下要怎么編譯這倆種內核鏡像。編譯帶文件系統的內核鏡像和編譯不帶文件系統的內核鏡像,他們的內核源碼都是一樣的。 內核源碼包位置:LS2K1000開發板資料\04_pmon&Linux內核源碼 2.1、編譯不帶文件系統內核首先,我們將龍芯2k1000的內核源碼拷貝到Ubuntu的任意目錄下,使用命令sudo tar -xf linux-3.10-loongsonpai_20210601.tar.gz 解壓源碼包得到內核源碼并使用命令cd linux-3.10-loongsonpai進到內核源碼下,注:源碼日期大家使用最新的即可。如下圖所示: ![]() 在Linux內核源碼根目錄下有配置文件“config-ls2k”,該文件就是不帶文件系統的內核配置文件,如下圖所示: ![]() 接著我們輸入“sudo cp config-ls2k .config”命令生成內核配置文件“.config”,運行結果如下圖所示: ![]() 配置好.config文件以后,我們就可以直接輸入命令sudo ./create.sh執行create.sh編譯腳本來編譯內核了,如下圖所示: ![]() 編譯過程如下: ![]() 編譯完成后,會在Linux源碼根目錄下生成“vmlinuz”內核鏡像文件,如下圖所示: ![]() 至此,不帶ramdisk的內核鏡像編譯完成。 2.2、編譯帶文件系統內核1、準備ramdisk文件系統源碼 編譯帶文件系統的內核,首先需要準備一個制作好的ramdisk文件系統,可以使用busybox或者buildroot來制作。這里已經給大家制作好了,位置:LS2K1000開發板資料\06_文件系統源碼\3_ramdisk源碼 然后我們把這個文件系統源碼拷貝到和內核源碼所在的同一級目錄下,注意:該文件系統壓縮包必須要和linux的內核源碼放在同一個目錄下面目錄下,拷貝完成后如下圖所示: ![]() 然后輸入“sudo tar -xvf ramdisk_2.tar.gz”命令,解壓文件系統,解壓完成后會生成“ramdisk_2”文件夾,如下圖所示: ![]() 2、生成config配置文件 我們進入到Linux內核源碼目錄下,Linux內核源碼根目錄下有配置文件“config-ls2k_ramdisk”,該文件就是帶最小文件系統的內核配置文件,如下圖所示: ![]() 我們輸入“sudo cp config-ls2k_ramdisk .config”命令生成內核配置文件“.config”,運行結果如下圖所示: ![]() 3、配置ramdisk路徑 準備好ramdisk文件系統源碼以后,我們記住他的路徑,作者這里的路徑為/home/topeet/LS2K1000/kernel/ramdisk_2,后面我們要用到這個路徑。 在進行配置內核的操作之前,我們需要先安裝圖像化配置依賴工具Ncurses,如果這里大家安裝過了則不必再次安裝,安裝命令:sudo apt‐get install libncurses5‐dev 接著我們進到內核源碼所在的目錄,輸入命令sudo ./mymake menuconfig打開內核的圖像化配置界面,如下圖所示: ![]() 打開成功如下圖所示: ![]() 接著我們進到General setup 選項里面,保證Initial RAM filesystem and RAM disk (initramfs/initrd) support選項是勾選上的,然后在Initramfs source file(s)填入ramdisk文件系統所在的絕對路徑,作者這里的路徑為/home/topeet/LS2K1000/kernel/ramdisk_2。設置完成后如下圖所示: ![]() 設置完成后,我們保存退出圖形化界面。如下圖所示: ![]() 4.1、編譯內核鏡像 在內核源碼下,我們輸入“sudo ./create.sh”命令,開始編譯Linux內核,如下圖所示: ![]() 編譯完成后,會在Linux源碼根目錄下生成“vmlinuz”鏡像文件,我們輸入命令ls -alh vmlinuz 來查看的生成的帶文件系統的內核鏡像的大小,如果大小大于10M說明已經編譯成功了,如下圖所示: ![]() 至此,編譯帶文件系統的內核就編譯完成了。 |