1. 程式人生 > 其它 >龍芯2K1000開發板編譯Linux核心

龍芯2K1000開發板編譯Linux核心

龍芯目前主推的核心版本有 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下得到解壓生成的編譯器資料夾,如下圖所示:

2、編譯核心

核心映象分為倆種,一種是帶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-alhvmlinuz 來檢視的生成的帶檔案系統的核心映象的大小,如果大小大於10M說明已經編譯成功了,如下圖所示:

圖片18.png

至此,編譯帶檔案系統的核心就編譯完成了。