Chinaunix首页 | 论坛 | 博客
  • 博客访问: 77349
  • 博文数量: 11
  • 博客积分: 140
  • 博客等级: 入伍新兵
  • 技术积分: 208
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-22 00:51
个人简介

天外有天,人外有人。

文章分类

全部博文(11)

文章存档

2013年(10)

2012年(1)

我的朋友

分类: LINUX

2013-09-04 22:38:58

1.     在PC或虚拟机安装Linux

省略。

Note: 下载的文件不能放在linux和win的共享文件夹,否则link会出问题。

 

2.     下载和安装QEMU

QEMU是一种开源的模拟器/虚拟机. QEMU恩在PC机上模拟ARM等机器。.

从,然后

# tar zxf qemu-0.14.0.tar.gz

# cd qemu-0.14.0

# /.configure

# make

# make install

#qemu                     //测试qemu是否安装成功

3.     制作根文件系统3.1. 下载编译busybox

 

busybox占用了很小的空间却集成了多个最常用linux命令和工具. 常用命令都是直接链接到busybox

从下载busybox-1.18.3.tar.bz2

$tar –jxf busybox-1.18.3.tar.bz2

$cd busybox-1.18.3

$make menuconfig

常见的2个选项:.

Build Options

Build BusyBox as a static binary (no shared libs)

确保不会对共享库产生依赖。

Installation Options

Don't use /usr

确保make install后会所有命令存放在busybox目录下生成的_install目录,否则会覆盖掉现有系统的/usr目录。

然后,保存退出。

$make

$make install

$ ls _install/ -l

total 12

drwxr-xr-x 2 user user 4096 Jun 21 22:05 bin

lrwxrwxrwx 1 user user 11 Jun 21 22:05 linuxrc -> bin/busybox

drwxr-xr-x 2 user user 4096 Jun 21 22:05 sbin

drwxr-xr-x 4 user user 4096 Jun 21 22:05 usr

$ ls _install/bin -l

total 1536

lrwxrwxrwx 1 chenojun chenojun       7 Jun 21 22:05 addgroup -> busybox

lrwxrwxrwx 1 chenojun chenojun       7 Jun 21 22:05 adduser -> busybox

lrwxrwxrwx 1 chenojun chenojun       7 Jun 21 22:05 ash -> busybox

所以命令都链接到_install/bin/busybox

其中可执行文件busyboxbin目录下,其他的都是指向他的符号链接.

 

$ _install/bin/busybox ls

AUTHORS                 archival                libpwdgrp

Config.in               busybox                 loginutils

可以看出常见命令是作为busybox的参数传入的,输出是该命令的输出。

另外,busybox只有1.5M左右。相对常见的binsbin目录非常小。

3.2. 制作root文件系统

 

$ dd if=/dev/zero of=rootfs.img bs=10240k count=1

1+0 records in

1+0 records out

10485760 bytes (10 MB) copied, 0.306331 seconds, 34.2 MB/s

dd : Copy a file, converting and formatting according to the operands.

if=file 输入文件名. /dev/zero: 输出2进制0

of=file 输出文件名.

bs=bytes 设置输入&出块的大小为bytes,强制ibs=bytesobs=bytes

3.2.1.  格式化ext3文件系统

$ mkfs -t ext3 rootfs.img

mke2fs 1.39 (29-May-2006)

rootfs.img is not a block special device.

Proceed anyway? (y,n) y

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

2560 inodes, 10240 blocks

512 blocks (5.00%) reserved for the super user

First data block=1 

$ mkdir rootfs

$ sudo mount -t ext3 -o loop rootfs.img rootfs

$ ls rootfs

lost+found

拷贝busyboxrootfs.img

$ cp -rf busybox-1.18.3/_install/* rootfs/

$ ls rootfs

bin  linuxrc  lost+found  sbin  usr

$ rsync -a busybox-1.18.3/_install/ rootfs

$ sudo chown -R root:root rootfs

Password:

rsync根据地方法刷新, 减少数据传输量。

$ cd rootfs

$ sudo mkdir dev

3.2.2.  创建常用device(mknod 用于制作字符或块相关文件):

$sudo  cd dev

$ sudo mknod tty0 c 4 0

$ sudo mknod tty1 c 4 1

$ sudo mknod tty2 c 4 2

$ sudo mknod tty3 c 4 3

$ sudo mknod console c 5 1

$ sudo mknod null c 1 1

3.2.3.  创建init启动脚本

/etc/inittab文件

$ sudo mkdir etc

$ cd etc/

$ sudo vim inittab

#This is the first script to run when startup

::sysinit:/etc/rc.d/rc.sysinit

::restart:/sbin/init

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a –r

$ sudo mkdir rc.d

$ cd rc.d/

$ sudo vim rc.sysinit

加入以下内容:

#!/bin/sh

mount -t proc none /proc

mount -t sysfs none /sys

/bin/sh

$ sudo chmod a+x rc.sysinit

$ cd ../../../

3.2.4.  根文件系统制作完成,umount rootfs

$ sudo umount rootfs.img

$ls rootfs

rootfs umount 后为空目录

 

4.     编译内核

下载源代码

$tar –jxf linux-3.3.4.tar.bz2

$cd linux-3.3.4

$ make menuconfig

$make

$ ls arch/x86/boot/bzImage -l

-rwxrwxrwx 1 root root 2573200 Jun 14 00:10 arch/x86/boot/bzImage

copy bzImage 到测试目录(一般跟rootfs.img同一目录)

5.     用QEMU跑内核

准备就绪,现在可以开始带根文件系统跑内核

#sudo qemu -hda rootfs.img -kernel bzImage --append "root=/dev/hda"

可以看到linuxquem上跑起来了,并且可以输入busybox支持的命令

阅读(2189) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~