构建linux之最小系统.docx

上传人:b****3 文档编号:4983036 上传时间:2022-12-12 格式:DOCX 页数:13 大小:23.49KB
下载 相关 举报
构建linux之最小系统.docx_第1页
第1页 / 共13页
构建linux之最小系统.docx_第2页
第2页 / 共13页
构建linux之最小系统.docx_第3页
第3页 / 共13页
构建linux之最小系统.docx_第4页
第4页 / 共13页
构建linux之最小系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

构建linux之最小系统.docx

《构建linux之最小系统.docx》由会员分享,可在线阅读,更多相关《构建linux之最小系统.docx(13页珍藏版)》请在冰豆网上搜索。

构建linux之最小系统.docx

构建linux之最小系统

构建linux之最小系统

声明:

该文件是对我2009年最后两周学习过程的总结,希望能帮助到学习中的人们。

该文档按照当前日期的最新版GPL协议发布。

欢迎转载,但须注明作者及出处。

作者:

JimZheng。

接触Linux4年,但是一直处于自学状态,没有机会参与Linux平台的产品开发。

很希望能用上Linux平台作实际开发。

联系方式:

zhengweishang@

日期:

2010.1.1

内容提要:

1。

最小系统的意义

2。

最小系统的要素

3。

主机环境介绍

4。

软件版本选择

5。

构建完成之文件

6。

最小系统启动信息

7。

详细构建过程

8。

下一步工作

1。

最小系统的意义

在我的开发经历中,每当要使用新的硬件或软件平台时,我都会从他们的最小系统开始。

比如新使用一款单片机,我会首先研究其电源、复位、时钟、JTAG、UART。

根据这些可以搭建一个开发的最小硬件系统。

我在维护一套3W行的C语言软件时,也曾将起其精简到1千行的最小系统,仅包含消息机制、在屏幕上显示一个小图标、队列服务等,而其他的功能都是一些添加上去的模块。

吃透这个最小系统后,增加功能或修正bug就简单很多。

最小系统有些像建房子打的地基,对它理解透了,会发现那些眼花缭乱的功能通过添砖加瓦的工作就可以完成了。

现今的软硬件系统设计时模块化都做得很好,增减一个功能模块已经是个比较简单的事情。

我想比较深入的学习Linux,于是想到:

Linux的最小系统是什么样?

2。

最小系统的要素

Linux的发布版本都提供了大量完善的功能和服务,而我想建立的最小系统之仅包含以下要素:

A.有字符显示。

B。

能通过键盘输入字符

C。

能执行ls等简单命令

根据以上需求,并分析Linux平台的架构。

该最小系统特征如下

A。

kernel+rootfs,不使用initrd.

B.ls等命令放在rootfs中,elf格式。

静态编译,不支持动态链接库。

C。

kernel支持elf可执行文件格式

D。

kernel不支持可加载模块功能。

必要的驱动直接编译到kernel中。

E。

kernel应包含字符的显示驱动、键盘驱动。

F。

rootfs放在IDE硬盘上,所以kernel应包含PATA驱动

G。

rootfs为EXT3文件系统,kernel应包含EXT2、EXT3文件系统驱动。

3。

主机环境介绍

[root@goldway~]#cat/proc/version

Linuxversion2.6.18-1.2798.fc6(brewbuilder@hs20-bc2-)(gccversion4.1.120061011(RedHat4.1.1-30))#1SMPMonOct1614:

37:

32EDT2006

[root@goldway~]#cat/proc/cpuinfo

processor    :

0

vendor_id    :

GenuineIntel

cpufamily    :

15

model        :

2

modelname    :

Intel(R)Celeron(R)CPU2.60GHz

stepping      :

9

cpuMHz      :

2625.987

cachesize    :

128KB

fdiv_bug      :

no

hlt_bug      :

no

f00f_bug      :

no

coma_bug      :

no

fpu        :

yes

fpu_exception  :

yes

cpuidlevel    :

2

wp          :

yes

flags        :

fpuvmedepsetscmsrpaemcecx8apicmtrrpgemcacmovpatpse36clflushdtsacpimmxfxsrssesse2sshttmpbeupcidxtpr

bogomips      :

5257.90

[root@goldway~]#lspci

00:

00.0Hostbridge:

VIATechnologies,Inc.P4M266HostBridge

00:

01.0PCIbridge:

VIATechnologies,Inc.VT8633[ApolloPro266AGP]

00:

10.0USBController:

VIATechnologies,Inc.VT82xxxxxUHCIUSB1.1Controller(rev80)

00:

10.1USBController:

VIATechnologies,Inc.VT82xxxxxUHCIUSB1.1Controller(rev80)

00:

10.2USBController:

VIATechnologies,Inc.VT82xxxxxUHCIUSB1.1Controller(rev80)

00:

10.3USBController:

VIATechnologies,Inc.USB2.0(rev82)

00:

11.0ISAbridge:

VIATechnologies,Inc.VT8235ISABridge

00:

11.1IDEinterface:

VIATechnologies,Inc.VT82C586A/B/VT82C686/A/B/VT823x/A/CPIPCBusMasterIDE(rev06)

00:

11.5**audiocontroller:

VIATechnologies,Inc.VT8233/A/8235/8237AC97AudioController(rev50)

00:

12.0Ethernetcontroller:

VIATechnologies,Inc.VT6102[Rhine-II](rev74)

01:

00.0VGAcompatiblecontroller:

nVidiaCorporationNV34[GeForceFX5200](reva1)

[root@goldway~]#fdisk-l

Disk/dev/hda:

160.0GB,160041885696bytes

255heads,63sectors/track,19457cylinders

Units=cylindersof16065*512=8225280bytes

  DeviceBoot    Start      End    Blocks  Id  System

/dev/hda1  *        1      1001    8040501  7  HPFS/NTFS

/dev/hda2        1002    19457  148247820  f  W95Ext'd(LBA)

/dev/hda5        1002      5001  32129968+  7  HPFS/NTFS

/dev/hda6        5002      9001  32129968+  7  HPFS/NTFS

/dev/hda7        9002    13001  32129968+  c  W95FAT32(LBA)

/dev/hda8        13002    17001  32129968+  c  W95FAT32(LBA)

/dev/hda9        18213    19457  10000431  83  Linux

/dev/hda10      17002    18081    8675068+  83  Linux

/dev/hda11      18082    18212    1052226  82  Linuxswap/Solaris

Partitiontableentriesarenotindiskorder

[root@goldway~]#mount

/dev/hda10on/typeext3(rw)

procon/proctypeproc(rw)

sysfson/systypesysfs(rw)

devptson/dev/ptstypedevpts(rw,gid=5,mode=620)

tmpfson/dev/shmtypetmpfs(rw)

/dev/hda7on/mnt/windows/ftypevfat(rw)

/dev/hda8on/mnt/windows/gtypevfat(rw)

noneon/proc/sys/fs/binfmt_misctypebinfmt_misc(rw)

sunrpcon/var/lib/nfs/rpc_pipefstyperpc_pipefs(rw)

/dev/hda9on/mnt/cdromtypeext3(rw)

请注意以下几点:

A。

硬盘是IDE接口,所以这篇文档描述的操作不适合于使用SATA硬盘的朋友。

B。

我使用的linuxdist是fedoracore6.gccversion4.1.1

C。

/dev/hda10是fc6的/,即将构建的最小系统的文件将放在/dev/hda9中。

4。

软件版本选择

A.选择busybox-1.15.3构建rootfs.

B.内核版本选择linux-2.6.26.5。

gcc4.1.1不支持最新版的kernel.

5。

构建完成之文件

[root@goldway~]#ll/mnt/cdrom

总计728

drwxr-xr-x2rootroot  409612-3119:

20bin

-rw-r--r--1rootroot70187201-0100:

28bzImage

drwxr-xr-x2rootroot  409612-3119:

27dev

-rw-r--r--1rootroot  39002010-01-01dmesg.txt

drwxr-xr-x3rootroot  409601-0113:

03etc

drwxr-xr-x2rootroot  409601-0113:

07mnt

drwxr-xr-x2rootroot  409612-3119:

25proc

drwxr-xr-x2rootroot  409612-3119:

20sbin

drwxr-xr-x2rootroot  409612-3119:

25sys

drwxr-xr-x4rootroot  409612-3119:

20usr

以上文件夹打包给大家

[root@goldwaycdrom]#tarjcf../rootfs.tar.bz2*

[root@goldwaycdrom]#ll..

总计1508

drwxr-xr-x10rootroot  40962010-01-01cdrom

-rw-r--r--  1rootroot151670901-0113:

14rootfs.tar.bz2

drwxr-xr-x  2rootroot  409612-1119:

14usb

drwxr-xr-x  6rootroot  409611-0717:

38windows

以下为grub引导设置:

[root@goldway~]#cat/etc/grub.conf

#grub.confgeneratedbyanaconda

#

#Notethatyoudonothavetorerungrubaftermakingchangestothisfile

#NOTICE:

  Youdonothavea/bootpartition.  Thismeansthat

#      allkernelandinitrdpathsarerelativeto/,eg.

#      root(hd0,9)

#      kernel/boot/vmlinuz-versionroroot=/dev/hda10

#      initrd/boot/initrd-version.img

#boot=/dev/hda

default=2

timeout=5

splashimage=(hd0,9)/boot/grub/splash.xpm.gz

hiddenmenu

titlekerneltest

      root(hd0,8)

      kernel/bzImageroroot=/dev/hda9

titleFedoraCore(2.6.18-1.2798.fc6)

      root(hd0,9)

      kernel/boot/vmlinuz-2.6.18-1.2798.fc6roroot=LABEL=/1rhgbquiet

      initrd/boot/initrd-2.6.18-1.2798.fc6.img

titleOther

      rootnoverify(hd0,0)

      chainloader+1

6。

最小系统启动信息

Linuxversion2.6.26.5(root@goldway)(gccversion4.1.120061011(RedHat4.1.1-30))#12FriJan100:

28:

28CST2010

BIOS-providedphysicalRAMmap:

BIOS-e820:

0000000000000000-000000000009fc00(usable)

BIOS-e820:

000000000009fc00-00000000000a0000(reserved)

BIOS-e820:

00000000000f0000-0000000000100000(reserved)

BIOS-e820:

0000000000100000-000000000fff0000(usable)

BIOS-e820:

000000000fff0000-000000000fff3000(ACPINVS)

BIOS-e820:

000000000fff3000-0000000010000000(ACPIdata)

BIOS-e820:

00000000fec00000-0000000100000000(reserved)

0MBHIGHMEMavailable.

255MBLOWMEMavailable.

Enteringadd_active_range(0,0,65520)0entriesof256used

ZonePFNranges:

  DMA        0->    4096

  Normal    4096->  65520

  HighMem    65520->  65520

MovablezonestartPFNforeachnode

early_node_map[1]activePFNranges

  0:

      0->  65520

Onnode0totalpages:

65520

  DMAzone:

32pagesusedformemmap

  DMAzone:

0pagesreserved

  DMAzone:

4064pages,LIFObatch:

0

  Normalzone:

480pagesusedformemmap

  Normalzone:

60944pages,LIFObatch:

15

  HighMemzone:

0pagesusedformemmap

  Movablezone:

0pagesusedformemmap

DMI2.3present.

AllocatingPCIresourcesstartingat20000000(gap:

10000000:

eec00000)

Built1zonelistsinZoneorder,mobilitygroupingon.  Totalpages:

65008

Kernelcommandline:

roroot=/dev/hda9

EnablingfastFPUsaveandrestore...done.

EnablingunmaskedSIMDFPUexceptionsupport...done.

InitializingCPU#0

PIDhashtableentries:

1024(order:

10,4096bytes)

Detected2625.912MHzprocessor.

Console:

colourVGA+80x25

console[tty0]enabled

Dentrycachehashtableentries:

32768(order:

5,131072bytes)

Inode-cachehashtableentries:

16384(order:

4,65536bytes)

Memory:

257764k/262080kavailable(912kkernelcode,3808kreserved,300kdata,100kinit,0khighmem)

virtualkernelmemorylayout:

  fixmap  :

0xfffee000-0xfffff000  (  68kB)

  pkmap  :

0xff800000-0xffc00000  (4096kB)

  vmalloc:

0xd0800000-0xff7fe000  (751MB)

  lowmem  :

0xc0000000-0xcfff0000  (255MB)

    .init:

0xc0232000-0xc024b000  (100kB)

    .data:

0xc01e4097-0xc022f42c  (300kB)

    .text:

0xc0100000-0xc01e4097  (912kB)

CheckingifthisprocessorhonourstheWPbiteveninsupervisormode...Ok.

CPA:

pagepoolinitialized1of1pagespreallocated

SLUB:

Genslabs=12,HWalign=128,Order=0-3,MinObjects=0,CPUs=1,Nodes=1

Calibratingdelayusingtimerspecificroutine..5257.16BogoMIPS(lpj=10514322)

Mount-cachehashtableentries:

512

CPU:

Tracecache:

12Kuops,L1Dcache:

8K

CPU:

L2cache:

128K

CPU:

Intel(R)Celeron(R)CPU2.60GHzstepping09

Checking'hlt'instruction...OK.

FreeingSMPalternatives:

0kfreed

SettingupstandardPCIresources

ioschedulernoopregistered(default)

UniformMulti-PlatformE-IDEdriver

ide:

Assuming50MHzsystembusspeedforPIOmodes;overridewithidebus=xx

ide_generic:

pleaseuse"probe_mask=0x3f"moduleparameterforprobingalllegacyISAIDEports

ProbingIDEinterfaceide0...

hda:

ST3160215A,ATADISKdrive

ProbingIDEinterfaceide1...

ide0at0x1f0-0x1f7,0x3f6onirq14

ide1at0x170-0x177,0x376onirq15

hda:

maxrequestsize:

512KiB

hda:

312581808sectors(160041MB)w/2048KiBCache,CHS=19457/255/63

hda:

cacheflushessupported

hda:

hda1hda2

serio:

i8042KBDportat0x60,0x64irq1

serio:

i8042AUXportat0x60,0x64irq12

mice:

PS/2mousedevicecommonforallmice

UsingIPIShortcutmode

input:

ATTranslatedSet2keyboardas/devices/platform/i8042/serio0/input/input0

kjournaldstarting.  Commitinterval5seconds

EXT3-fs:

mountedfilesystemwithordereddatamode.

VFS:

Mountedroot(ext3filesystem)readonly.

Freeingunusedkernelmemory:

100kfreed

EXT3-fswarning:

maximalmountcountreached,runninge

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1