當前位置:首頁 » 編程軟體 » 內核文件系統編譯

內核文件系統編譯

發布時間: 2023-08-19 09:34:50

1. 三、內核&文件系統編譯

一、編譯官方提供的內核源碼

1、解壓官方提供的內核源碼包

2、根據官方提供的配置文件對內核進行配置,方式如下
make  ARCH=arm      xxxxx_defult_config
cp   arch/arm/xxxxx_config    .config

3、打開圖形界面對內核進行配置,根據需要增加或者刪除模塊和其他內容

4、對內核進行編譯
make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    uImage  -j6
或者編輯Makefile文件,對其中的ARCH變數和CROSS_COMPILE變數進行修改,然後執行make uImage

5、在編譯編譯的時候回出現mkimage命令缺失,這個命令是UBootr提供的,在編譯的UBoot路徑下面找到這個命令,即可直接使用

6、編譯的時候各個方面需要一致性,
                1、編譯的內核的交叉編譯工具鏈如果支持硬體浮點數運算那麼在配置內核的時候也需要添加硬體浮點數的支持
                        Kernel Features --->
                            [*] Use the ARM EABI to compile the kernel
                2、在編譯的內核的時候注意保持不要做太多的修改,否則會出問題

7、編譯內核模塊
    make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    moles  -j6

8、安裝內核模塊到指定的目錄中去
make moles_install ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- INSTALL_MOD_PATH=/home/fu/hisi/kernel/build

9、不要採用內核模塊安裝的命令來安裝內核,因為內核不需要安裝,在arch/arm/boot/uImage就是所需要的內核文件

二、編譯官方提供的busybox來構建根文件系統

1、解壓需要編譯的busybox源碼

2、進入源碼中對busybox進行配置,主要是配置交叉編譯工具鏈
Busybox Settings --->Build Options ---> 下面有關於busybox是否配置為採用共享庫的模式,還有添加交叉編譯工具鏈的前綴

3、配置需要的文件和命令進行添加或者刪除

4、然後執行命令make -jn   && make install

5、創建根文件系統需要的其他的文件和目錄,在一個空白的目錄中首先拷貝busybox/_install下面的bin、sbin、usr目錄到空白目錄中,在空白目錄中創建其餘的所需要的目錄文件 bin dev etc home lib linuxrc mnt opt proc sbin sys tmp usr var等以上目錄

6、接下來在lib目錄中復制內核模塊,在編譯內核的時候模塊安裝在了指定的地方,直接拷貝過來就行。

6、創建文件系統所需要的其他文件,配置文件(最簡單的辦法就是直接復制busybox文件下面的example文件夾裡面的東西)
1、/etc/inittab     填寫或者    一下是最基本的,還有其他的需要填寫
# /etc/inittab
::sysinit:/etc/init.d/rcS                    //指定初始化腳本
::askfirst:-/bin/sh                            //指定第一次輸入回車後打開的shell
::ctrlaltdel:/sbin/reboot                //指定這三個按鍵按下後的反應
::shutdown:/bin/umount -a -r        //指定關機是進行的操作

2、/etc/init.d/rcS                //這個就沒有詳細額硬性規定了,寫入需要初始化的東西即可
#!/bin/sh
mount -a

3、/etc/fstab                        //寫入mount -a是要自動掛載的文件系統
# device mount-point type options mp fsck order
proc          /proc        proc  defaults        0    0
tmpfs          /tmp        tmpfs  defaults        0    0

7、拷貝需要用到的庫文件,在交叉編譯工具鏈下面存放
arm-linux-xxxxxx-gcc/lib
海思的開發板是在和tahet/lib下面,切記。

2. linux如何編譯安裝新內核支持NTFS文件系統(

第一步: 對硬體進行設置,使其滿足要求並下載內核:

1. 新添加一塊20G的硬碟及修改內存:

3. 如何配置編譯在mini2440開發板上運行的linux內核

參考:http://www.it165.net/os/html/201409/9334.html

系統ubuntu12.04(非虛擬機下)
mini2440
CPU型號: S3C2440AL-40
Nanflash型號:K9F1G08
Norflash型號:SST39VF1601
LCD: 統寶 240 x 320
$: 普通賬戶
#:root賬戶
*當shell下輸入路徑時可使用tab鍵自動補全

(一)建立交叉編譯環境

1.將mini2440光碟中的linux文件夾拷貝到 /home/lianghuiyong 並改名為Linux_share
(其中兩個文檔為我後面添加進去的)

2.Ctrl+Alt+T打開shell
3.$ su - root (切換root許可權)
4.# cd /home/lianghuiyong/Linux_share
5.解壓安裝arm-linux-gcc編輯器
# tar xvzf arm-linux-gcc-4.4.3.tar.gz –C / //注意:C後面有個空格
執行該命令,將把 arm-linux-gcc 安裝到/usr/loca/arm/4.4.3 目錄。這句來自mini2440用戶手冊,我發現其實是安裝到 /opt/FriendlyARM/toolchain/4.4.3 目錄

6.# vim /root/.bashrc
7.在最後一行添加:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin //opt/FriendlyARM/toolschain/4.4.3/bin 為arm-linux-gcc 環境變數
:wq保存退出。
# source ~/.bashrc
8.# sudo gedit /etc/environment
games後面添加標記部分

9.# arm-linux-gcc -v //gcc後面有空格

測試hello.c(這是在安裝了第二部分的linux示常式序才有examples/hello目錄)
# cd /opt/FriendlyARM/mini2440/examples/hello
# arm-linux-gcc -o hello hello.c
# ./hello

(二)安裝源代碼及其他工具
創建工作目錄(以下都為root環境下):
# mkdir -p /opt/FriendlyARM/mini2440

1>>解壓安裝linux內核源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/linux-2.6.32.2-mini2440-20100106.tar.gz

2>>解壓安裝嵌入式圖形系統qtopia源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/x86-qtopia.tgz
# tar xvzf /home/lianghuiyong/Linux_share/arm-qtopia.tgz

3>>解壓安裝嵌入式圖形系統 QtE-4.6.1 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/arm-qte-4.6.3-20100802.tar.gz

4>>解壓安裝busybox 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/busybox-1.13.3-mini2440.tgz

5>>解壓安裝 Linux 示常式序
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/examples-20100108.tgz

6>>解壓安裝 vboot 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/vboot-src-20100106.tar.gz

7>>解壓安裝 bootloader 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/bootloader.tgz

8>>解壓創建目標文件系統
# cd /opt/FriendlyARM/mini2440
#tar xvzf /home/lianghuiyong/Linux_share/rootfs_qtopia_qt4-20100816.tar.gz

9>>解壓安裝目標文件系統映象製作工具 mkyaffs2image
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/mkyaffs2image.tgz –C /

10>>解壓安裝LogoMaker
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/logomaker.tgz –C /

(三)定製linux內核及製作文件系統

config_mini2440_x35 – 適用於 Sony 3.5」 LCD 的內核配置文件
config_mini2440_t35 – 適用於統寶 3.5」 LCD 的內核配置文件
config_mini2440_l80 – 適用於 Sharp 8」 LCD(或兼容)的內核配置文件
config_mini2440_n35 – 適用於 NEC3.5」 LCD 的內核配置文件
config_mini2440_h43 – 適用於 4.3」 LCD 的內核配置文件
config_mini2440_a70 – 適用於群創 7」 LCD 的內核配置文件
config_mini2440_vga1024x768 – 適用於 VGA 顯示輸出(解析度 1024x768)模塊的內核
配置文件

1.配置預設文件config_t35 (統寶240x320)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# cp config_mini2440_t35 .config
# make menuconfig
出現界面
不做更改,exit退出。這樣做是為了生成相應配置(統寶240x320)的頭文件。

2.編譯內核

在/opt/FriendlyARM/mini2440/linux-2.6.32.2 目錄下編譯內核
#make zImage
編譯結束後,會在 arch/arm/boot 目錄下生成 linux 內核映象文件:zImage(zImage 可下載到開發板測試)

3.定製linux內核(根據用戶手冊來走一遍)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# make menuconfig
出現配置選項:

3.1配置cpu
主菜單-->System --> Type S3C2400 Machines --> FriendlyARM Mini2440 development board
3.2配置lcd驅動
主菜單-->Device Drivers-->Graphics support-->Support for frame buffer devices-->Backlight-->LCD select-->3.5 inch 240x320 Toppoly LCD

3.3配置觸摸屏
主菜單-->Device Drivers-->Input device support-->Touchscreens-->Samsung s3c24410 touchscreen input driver

3.4配置usb滑鼠和鍵盤
主菜單-->Device Drivers-->hid devices-->USB Human interface Device

3.5 配置優盤
主菜單-->Device Drivers-->SCSI device support--> SCSI disk

3.6配置萬能驅動USB攝像頭
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters -->V4L USB devices-->GSPCA based webcams-->ALi USB m 5602 Camera Driver

3.7 配置CMOS攝像頭驅動
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters-->OV9650 on the s3c2440 driver

3.8配置網卡驅動
主菜單-->Netwoking support-->Networking options -->選擇Unix和TCP/IP

主菜單-->Device Drivers-->Network device support-->Ethernet (10 or 100Mbit)-->
選擇 <*> Generic Media Independent Interface device support
<*> DM9000 support

3.9 配置USB無線網卡驅動
主菜單-->Netwoking support-->wireless-->IEEE 802.11

主菜單-->Device Drivers-->Netwoking device support-->wireless LAN-->Wireless LAN(IEEE 802.11)-->Ralink driver support-->

3.10 配置音頻驅動
主菜單-->Device Drivers-->Sound card supprt-->OSS Mixer API -->ALSA for Soc audio support-->SoC Audio for the samsung S3Cxxxx Chips

3.11 配置SD/MMC卡驅動
主菜單-->Device Drivers-->MMC/SD/SDIO card-->samsung S3C SD/MMC card

3.12 配置看門狗驅動支持
主菜單-->Device Drivers-->Watchdog Timer-->s3c2440 Watchdog

3.13 配置LED驅動
主菜單-->Device Drivers-->Character devices-->LED support for Mini2440

3.14 配置按鍵驅動
主菜單-->Device Drivers-->Character devices-->Buttons driver

3.15 配置PWM控制蜂鳴器驅動
主菜單-->Device Drivers-->Character devices-->buzzer driver for

3.16 配置AD轉換驅動
主菜單-->Device Drivers-->Character devices-->ADC driver for

3.17 配置串口驅動
主菜單-->Device Drivers-->Character devices-->Serial drivers-->samsung S3C2440/S3C2442

3.18 如何配置RTC實時時鍾驅動
主菜單-->Device Drivers-->Real Time Clock-->samsung S3C series SoC RTC

3.19 配置I2C-EEPROM驅動支持
主菜單-->Device Drivers-->I2C support -->I2C Hardware Bus support-->S3C2410 I2C Driver

3.20 配置yaff2s文件系統的支持
主菜單-->Device Drivers-->MTD-->NAND Device Support -->NAND FLASH Support
主菜單-->File systems-->Miscellaneous filesystems -->YAFFS2 file system support

3.21 配置EXT2/VFAT/ NFS等文件系統
主菜單-->File systems-->Network File Systems -->root file system on NFS

為了支持FAT32 文件系統.
主菜單-->File systems-->DOS/FAT/NT Filesystems -->VFAT (windows-95) fs support

關於mini2440 linux內核裁剪到此為止,退出後有一個是否保存提示,選擇保存!

3.22 製作Linux logo

本來想使用Logomaker,結果生成的圖片都是無數據的,這可能和系統內一些參數有關
使用命令方式製作logo:
在圖片(open_show.png)目錄下
# pngtopnm open_show.png > temp.ppm
# ppmquant 224 temp.ppm >temp2.ppm
# pnmnoraw temp2.ppm > logo.ppm
將目錄下生成的logo.ppm改成linux_logo_clut224.ppm,替代linux2.6.32.2/drivers/video/logo 目錄下的同名文件

4. 在編譯內核版本為3.12.6中加入yaffs2文件系統時出現以下情況,如何破!!

所有人回答都不對,linux 版本總是對這些宏改來改去,搞的早期的軟體都不支持了,比如說:
早期內核是這樣定義的:
typedef uid_t kuid_t;

typedef gid_t kgid_t;

linux 3.1以後內核,不知道世界某個角落的2B程序員奇思妙想,改成下面這樣的:
typedef struct {
uid_t val;
}kuid_t;
typedef struct {
gid_t val;
}kgid_t;

看到上面的代碼,你就會明白,所有引用到uid_t和gid_t變數的地方,都要改為下面的調用方法:
ia_uid.val;
ia_gid.val;

5. Linux用戶程序如何編譯到文件系統里去。

這個就類似於自己製作Linux發行版的rootfs了。不同系統不同環境製作方法是不同的。比如我有塊板子我是用yocto自己生成rootfs的,隨意加入任何東西,當然不只是簡單改makefile。

最省事的方法是把已經做好的rootfs解包出來,把文件復制進去,然後再打包就完事了。

6. linux內核編譯和根文件系統製作過程

內核編譯:
make
menuconfig配置相應的平台,然後保存退出直接make命令就可以編譯了。
文件系統製作:
一般都用busybox開源軟體來做,下載,解壓,然後make
menuconfig配置你想要的屬性,然後保存退出,make就可以了,然後make
install就會在目錄下看到__install的目錄就是你要的根文件系統目錄了。

7. linux 文件系統 內核編譯

1、第一條命令沒問題;
2、第二條命令:
#mkfs.ext2 myfs
myfs is not a block special device.
無路如何也要繼續?(y,n)
這時要輸入y
3、第三條命令,linux kernel不支持myext2文件系統。我猜你是想要在紅帽或ubuntu上mount一個ext2文件系統的loop設備,但是想使用myext2的文件系統驅動,對吧。我沒有這么做過,猜不出你的myext2摘出來之後是什麼樣子的。我以前試過在linux安裝新的文件系統支持,比如fuse系統,源碼編譯通過後會生成一個.ko的模塊文件,使用insmod命令將其加入內核,才能獲得內核對該文件系統的支持。我想你可能也應該這樣做,你應該需要生成一個類似myext2.ko的模塊,然後將其insmod到內核中去。

8. linux內核主要由哪幾個部分組成

一個完整的Linux內核一般由5部分組成,它們分別是內存管理、進程管理、進程間通信、虛擬文件系統和網路介面。

1、內存管理
內存管理主要完成的是如何合理有效地管理整個系統的物理內存,同時快速響應內核各個子系統對內存分配的請求。

Linux內存管理支持虛擬內存,而多餘出的這部分內存就是通過磁碟申請得到的,平時系統只把當前運行的程序塊保留在內存中,其他程序塊則保留在磁碟中。在內存緊缺時,內存管理負責在磁碟和內存間交換程序塊。

2、進程管理
進程管理主要控制系統進程對CPU的訪問。當需要某個進程運行時,由進程調度器根據基於優先順序的調度演算法啟動新的進程。:Linux支持多任務運行,那麼如何在一個單CPU上支持多任務呢?這個工作就是由進程調度管理來實現的。

在系統運行時,每個進程都會分得一定的時間片,然後進程調度器根據時間片的不同,選擇每個進程依次運行,例如當某個進程的時間片用完後,調度器會選擇一個新的進程繼續運行。

由於切換的時間和頻率都非常的快,由此用戶感覺是多個程序在同時運行,而實際上,CPU在同一時間內只有一個進程在運行,這一切都是進程調度管理的結果。

3、進程間通信
進程間通信主要用於控制不同進程之間在用戶空間的同步、數據共享和交換。由於不用的用戶進程擁有不同的進程空間,因此進程間的通信要藉助於內核的中轉來實現。

一般情況下,當一個進程等待硬體操作完成時,會被掛起。當硬體操作完成,進程被恢復執行,而協調這個過程的就是進程間的通信機制。

4、虛擬文件系統
Linux內核譽衫鉛中的虛擬文件系統用一個通用的文件模型表示了各種不同的文件系統,這個文件模型屏蔽了很多具體文件系統的差異,使Linux內核支持很多不同的文件系統。

這個文件系統可以分為邏輯文件系統和設備驅動程序:邏輯文件系統指Linux所支持的文件系統,例如ext2、ext3和fat等;設備驅動程序指為每一種硬體控制器所編寫的設備驅動程序模塊。

5、網路介面
網路介面提供了對各種網路標準的實現和各種網路硬體的支持。網路介面一般分為網路協議慶好和網路驅動程序。網路協議部分負責實現每一種可能的網路傳輸協議。

網路設備驅動程序則主要負責與硬體設備進行通信,每一種可能的網路硬體設備都有相應的設備驅動程序。

(8)內核文件系統編譯擴展閱讀

Linux 操作系統的誕生、發展和成長過程始終依賴著五個重要支柱:UNIX操作系統、MINIX操作系統、GNU計劃、POSIX標准和Internet 網路。

1981 年IBM公司推出微型計算機IBM PC。

1991年,GNU計劃已經開發出了許多工具軟體,最受期盼的GNU C編譯器已經出現,GNU的操作系統核心HURD一直處於實驗階段,沒有任何可用性,實質上也沒能開發出完整的GNU操作系統,但是GNU奠定了Linux用戶基礎和開發環境。

1991年初,林納斯·托瓦茲開始在一台386sx兼容微機上學習minix操作系統。1991年4月,林納斯·托瓦茲開始醞釀並著手編制自己的操作系統。

1991 年4 月13 日在comp.os.minix 上發布說自己已經成功地將bash 移植到了minix 上,而且已經愛不釋手、不能離開這個shell軟體了。

1993年,大約有100餘名程序員參與了Linux內核代碼編寫/修改工作,其中核心組由5人組成,此時Linux 0.99的代碼大約有十萬行,用戶大約有10萬左右。

1994年3月,Linux1.0發布,代碼量17萬行,當時是按照完全自由免費的協議發布,隨後正式採用GPL協議。

1995年1月,Bob Young創辦了RedHat(小紅帽),以GNU/Linux為核心,集成了400多個源代碼開放的程序模塊,搞出了一種冠以品牌的Linux,即RedHat Linux,稱為Linux"發行版",在市場上出售。這在經營模式上是一種創舉。

2001年1月,Linux 2.4發布,它進一步地提升了SMP系統的擴展性,同時它也集成了很多用於支持桌面系統的特性:USB,PC卡(PCMCIA)的支持,內置的即插即用,等等功能。

2003年12月,Linux 2.6版內核發布,相對於2.4版內核2.6在對系統的支持都有很大的變化。

2004年的第1月,SuSE嫁到了Novell,SCO繼續頂著罵名四處強行「塌棚化緣」, Asianux, MandrakeSoft也在五年中首次宣布季度贏利。3月,SGI宣布成功實現了Linux操作系統支持256個Itanium 2處理器。

熱點內容
哪些車有配置前後防撞鋼梁 發布:2025-03-16 22:55:35 瀏覽:727
伺服器怎麼設置外網訪問 發布:2025-03-16 22:53:03 瀏覽:184
安卓手機如何繞過緩存軟體 發布:2025-03-16 22:35:16 瀏覽:241
c語言求職 發布:2025-03-16 22:34:23 瀏覽:429
在線教育培訓源碼 發布:2025-03-16 22:31:57 瀏覽:233
反編譯vb工具 發布:2025-03-16 22:27:04 瀏覽:353
安卓流程為什麼越來越多 發布:2025-03-16 22:26:50 瀏覽:933
五軸編程模型 發布:2025-03-16 22:17:48 瀏覽:181
linuxc函數庫 發布:2025-03-16 22:03:33 瀏覽:921
iphone最新版系統從哪裡改密碼 發布:2025-03-16 21:56:19 瀏覽:596