首页 > 代码库 > X86平台下基于grub2+busybo+linux-2.6.36制作linux系统

X86平台下基于grub2+busybo+linux-2.6.36制作linux系统

X86平台下基于grub2+busybo+linux-2.6.36制作linux系统

一、下载内核源码,grub2源码,以及busybox源码:

  1. 下载grub2源码

ftp://ftp.gnu.org/gnu/grub/ 找到需要的版本就好了,这里选择grub-1.99.tar.gz

  1. 下载busybox源码

http://www.busybox.net/downloads/ 找到需要的版本就好了,这里选择busybox-1.22.1.tar.bz2

  1. 下载linux-2.6.36内核源码

 https://www.kernel.org/ 找到需要的版本就好了,这里选择linux-2.6.36.tar.xz

二、编译源码

创建目录 /mylinux,将源码压缩包拷贝到/mylinux。

1、  编译grub2

解压:tar –xf grub-1.99.tar.gz

切换路径进行编译:cd grub-1.97

编译:./configure &&make&&make install

编译完成后,成生的执行文件在/usr/local/sbin目录下

2、  编译busybox

解压:tar –xf busybox-1.22.1.tar.bz2

切换路径进行编译:cd busybox-1.22.1

配置编译选项:make menuconfig

           注:配置编译选项时,要将Don‘t use /usr 选上,要不然make install时,会将产生的执行文件拷贝到/usr相应目录下。其他的配置根据自己的需求决定

编译:make&& make install

注:编译产生的目标文件将输出到:_install目录下

3、 编译linux-2.6.36内核代码

解压: tar –xf linux-2.6.36.tar.xz

切换编译路径:cd linux-2.6.36

配置编译选项:

           先拷贝当前系统的配置作为默认配置:cp /boot/config-xxx .config

           再make menuconfig根据自己的需求修改内核配置

编译:make && make modules && make modules_install && make install

三、制作根文件系统目录

创建目录:mkdir –p /mylinux/sysroot

切换路径:cd /mylinux/sysroot

创建根目录:mkdir -p boot dev etc home linuxrc proc root tmp usr var lib

从系统中拷贝必要的设备文件:console kmem mem ram stderr stdout tty0 ttyS0 zero

fd/ loop null random stdin tty tty1 urandom

         注:也可以自行用mknod命令创建

拷贝可执行文件:cp -Raf /mylinux/ busybox-1.22.1/_install/* /mylinux/sysroot/

拷贝内核模块:cp –Raf /lib/modules/linux-2.6.36xxx/* /mylinux/sysroot/lib/

编写系统配置文件:cd /mylinux/sysroot/etc

创建如下文件:busybox.conf  fstab  group  init.d  inittab  issue  motd  mtab  passwd  profile  resolv.conf  shadow  shadow-

创建目录:init.d

  1. busybox.conf为空
  2. fstab

/dev/sda1            /boot                 ext3       defaults              0 0

/dev/sda2            /                    ext3       acl,user_xattr        1 1

proc                 /proc                proc       defaults              0 0

sysfs                /sys                 sysfs      noauto                0 0

debugfs              /sys/kernel/debug    debugfs    noauto                0 0

usbfs                /proc/bus/usb        usbfs      noauto                0 0

devpts               /dev/pts             devpts     mode=0620,gid=5       0 0

  1. group

root:x:0:root

  1. inittab

::sysinit:/etc/init.d/rcS

 

::askfirst:/bin/sh

tty2::respawn:/bin/getty 38400 tty2

tty3::respawn:/bin/getty 38400 tty3

tty4::respawn:/bin/getty 38400 tty4

 

# Stuff to do when restarting the init process

::restart:/bin/init

 

# Stuff to do before rebooting

::ctrlaltdel:/bin/reboot

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

::shutdown:/bin/swapoff –a

  1. issue

My Linux release 0.1

  1. motd为空
  2. mtab为空
  3. password

root::0:0:root:/root:/bin/ash

  1. profile

# /etc/profile: system-wide .profile file for the Bourne shells

 

echo

echo

export PS1="[/u@/h /w]/$"

echo "Done"

alias ll=‘ls -l‘

alias du=‘du -h‘

alias df=‘df -h‘

alias rm=‘rm -i‘

echo

  1. resolv.conf

nameserver 202.96.209.5

nameserver 202.96.209.6

  1. shadow

root:$1$$adltAB9Sr/MSKqylIvSJT/:12705:0:99999:7:::

  1. shadow-

root:$1$DWU.tenP$B7ANiXoGoiZMwJR6Ih8810:12705:0:99999:7:::

  1. init.d目录下创建rcS启动脚本文件,加上可执行权限,内容如下:

#! /bin/sh

mount -o remount,rw /

 

/bin/mount -a

>/etc/mtab

echo

echo -en "/t/tWelcom to //033[0;32mBabyLinux//033[0;39m/n"

echo

hostname My Linux

四,制作系统启动盘

         注:暂时在虚拟机上进行操作,实际硬盘也是一个道理

1、  在虚拟机上增加一块硬盘,大小定为8G。

通过命令fdisk –l 可以看到新增加的硬盘:

 

                   尚未进行分区

2、  对新增硬盘用fdisk命令进行分区,分区如下:

 

3、  对新磁盘分区进行格式化:

mkfs.ext3 /dev/sdb1

mkfs.ext3 /dev/sdb2

4、  创建挂载目录:

mkdir –p /mnt/boot /mnt/sysroot

5、  挂载新磁盘

mount /dev/sdb1 /mnt/boot

mount /dev/sdb2 /mnt/sysroot/

6、  拷贝相应的文件到新磁盘中:

cp /boot/vmlinuz-2.6.36-12-xxx /mnt/boot/vmlinuz

cp /boot/initrd-2.6.36-12-xxx /mnt/boot/initrd

cp -Raf /mylinux/rootfs/* /mnt/sysroot/

7、  加入grub启动引导:

grub-install --root-directory=/mnt /dev/sdb

8、  创建grub启动菜单:

/mnt/boot/grub/grub.cfg:

set default=0

set timeout=5

menuentry "GNU/Linux, with Linux 3.16.3-12-default" {

        set root=(hd0,1)

        linux  /vmlinuz 

        initrd  / initrd

}

9、  卸载磁盘:

umount /mnt/boot

umount /mnt/sysroot

四、到这里系统就制作完成了,新系统已经写入磁盘,将新磁盘作为系统盘,即可引导系统.

 

X86平台下基于grub2+busybo+linux-2.6.36制作linux系统