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