VMware中编译最小系统

https://blog.csdn.net/yejingx/article/details/6525405

一. 最小系统要求

1. 接受键盘输入,能显示字符信息

2. 能处理普通linux发行版中的大部分基本命令,如:ls, mv...

3. 具有网络功能

4. 不使用ramdisk, 所需驱动全部编译进内核


二. 主机环境

1. VMware 7.0 / windows 7

2. 主机系统Ubuntu 10.04 x86 (kernel version 2.6.32)

3. 最小系统内核版本 linux-2.6.38


三. 详细构建过程

1. 下载linux-2.6.38内核

[c-sharp] view plain copy

#cd /usr/src  

#wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.gz  

#tar xvf linux-2.6.38.tar.gz  

#cd linux-2.6.38   



2.编译内核

这一步主要就是内核的配置,如果配置错了可能导致系统无法启动,因此需要非常仔细。

[c-sharp] view plain copy

#make mrproper               

#make allnoconfig  

#make menuconfig   


首先利用lspci查看硬件信息:

[c-sharp] view plain copy

#lspci    

00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)

00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)

00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)

00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)

00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)

00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)

00:0f.0 VGA compatible controller: VMware SVGA II Adapter

00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)

00:11.0 PCI bridge: VMware PCI bridge (rev 02)

00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01)

................... ......................... .......................

00:18.6 PCI bridge: VMware PCI Express Root Port (rev 01)

00:18.7 PCI bridge: VMware PCI Express Root Port (rev 01)

02:00.0 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB

02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

02:02.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)

02:03.0 USB Controller: VMware USB2 EHCI Controller


根据查到的硬件型号配置.config文件


以下详细介绍内核的配置(除以下选项外其它都可以不选)

General setup --->

[*] System V IPC

[*] Enable loadable module support --->

Processor type and features --->

Processor family (Pentium Pro) --->

[*] Generuc x86 support

Bus options (PCI etc.) --->

[*] PCI support

PCI access mode (Any) --->

Executable file formats / Emulations --->

[*] Kernel support for ELF binaries

[*] Write ELF core dumps with partial segments

[*] Networking support  --->

Networking options --->

<*> Packet socket

<*> Unix domain sockets (NEW)

[*] TCP/IP networking

<*>   IP: IPsec transport mode (NEW)

<*>   IP: IPsec tunnel mode (NEW)

<*>   IP: IPsec BEET mode (NEW)

<*>   Large Receive Offload (ipv4/tcp) (NEW)

<*>   INET: socket monitoring interface (NEW)

Device Drivers  --->

[*] Block devices --->

<*> Loopback device support

SCSI device support --->

<*> SCSI device support

[*] legacy /proc/scsi/ support (NEW)

<*> SCSI disk support

[*] SCSI low-level drivers (NEW) --->

<*> BusLogic SCSI support

[*] Fusion MPT device support --->

<*> Fusion MPT ScsiHost drivers for SPI

<*> Fusion MPT ScsiHost drivers for FC

<*> Fusion MPT ScsiHost drivers for SAS

<*> Fusion MPT misc device (ioctl) driver

[*] Network device support --->

[*] Ethernet (10 or 100Mbit) --->

[*] EISA, VLB, PCI and on board controllers

<*> AMD PCnet32 PCI support

Graphics support  --->

<*> Support for frame buffer devices --->

File systems  --->

<*> Second extended fs support

[*]   Ext2 extended attributes

[*]     Ext2 POSIX Access Control Lists 

[*]     Ext2 Security Labels

[*] Ext2 execute in place support

<*> Ext3 journalling file system support

[*]   Default to 'data=ordered' in ext3 (NEW)

[*]   Ext3 extended attributes (NEW) 

[*]     Ext3 POSIX Access Control Lists  

[*]     Ext3 Security Labels  

CD-ROM/DVD Filesystems --->

<*> ISO 9660 CDROM file system support

<*> Native language support --->

<*> Codepage 437 (United States, Canada)

<*> Simplified Chinese charset (CP936, GB2312)


配置完成后就可以开始编译了:

[c-sharp] view plain copy

#make bzImage    

注意:在make menuconfig的时候一定要选对磁盘驱动,否则会出现

kernel panic -- VFS error: unable to mount …

这里我用的是SCSI的磁盘,IDE的要做相应修改。



3. 制作根文件系统

为简单起见,我们利用busybox制用根文件系统。

[c-sharp] view plain copy

#wget http://busybox.net/downloads/busybox-1.18.4.tar.bz2  

#tar xvf busybox-1.18.4.tar.bz2  

#cd busybox-1.18.4  

#make menuconfig  


下面是需要编译进busybox的功能选项。

  General Configuration应该选的选项

   Don't use /usr

      这个选项一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令。

  Build Options

   Build BusyBox as a static binary (no shared libs)

  这个选项也是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使它正常工作。

其它选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。

编译并安装busybox

[c-sharp] view plain copy

#make  

#make install   


make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向它的链接。

接下来给虚拟机添加一块SCSI磁盘并分区,假设根分区为sdb1

[c-sharp] view plain copy

#mount /dev/sdb1 /mnt       将根分区挂载到/mnt    

#cp _install/* /mnt/            将_install下的文件全复制到sdb1    

#rm -f linuxrc    

#cp -r ./examples/bootfloppy/etc /mnt       将etc下的配置文件拷到sdb1下    

#cd /mnt/    

#mkdir proc mnt usr var tmp dev sys         创建目录    

#cp -a /dev/{console,tty,tty2} dev/  




4. 更新grub

这步既可以在ubuntu的grub中引导也可以在sdb上装上grub,从sdb1进行引导。

为简单起见我们就用ubuntu中的grub来引导。

修改/boot/grub/grub.cfg

[c-sharp] view plain copy

#gedit /boot/grub/grub.cfg  


新添加

menuentry "My Linux-2.6.38" {

insmod ext2

set root='(hd1,1)'

linux /bzImage ro root=/dev/sdb1

}



5. 最后重启一下(启动时按住shift,否则不进入grub2引导菜单)

[c-sharp] view plain copy

#reboot    

选择My Linux-2.6.38

如果一切顺利,就会出现下图的信息, ----- 启动成功。



---------------------

作者:yejingx

来源:CSDN

原文:https://blog.csdn.net/yejingx/article/details/6525405

版权声明:本文为博主原创文章,转载请附上博文链接!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • 背景 一月中旬,ZDI宣布了2017年比赛的规则,其中包括了攻破VMware,完成虚拟机逃逸的队伍会获得相当高额的...
    0f534b43b700阅读 32,628评论 0 3
  • 今天开始,小区上方的空域大概开了新的航线,三不五时的,就有飞机划过的“轰隆隆”声。 早午饭后,走在去加班的路上,快...
    小周老师阅读 305评论 0 0
  • 灵修记录20171203 读经 希伯来书第三章 研经 耶稣超越摩西 摩西只是仆人,耶稣是神子。 旷野悖逆摩西的人,...
    他不在这里阅读 811评论 0 0
  • 我有四个妈妈,分别是厨师妈妈、美发师妈妈、大书虫妈妈和摄影师妈妈。 我的妈妈是一个厨师。她爱做各种各样的美食:有黄...
    思思Linda阅读 231评论 0 2
  • 每个人都有自己的软肋吧,也许在别人看来不是什么事可是自己却很在意。每当有人触碰到这一点,不论是有意还是无意都会觉得...
    一不小心成了大哥阅读 232评论 0 0