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