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="[/[email protected]/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

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

时间: 2024-08-24 17:17:31

X86平台下基于grub2+busybo+linux-2.6.36制作linux系统的相关文章

X86平台下用汇编写"HelloWorld"

首先需要安装一个汇编器,我用的是Nasm,这个汇编器在Linux下安装还是很简单的. Nasm下载地址http://www.nasm.us/pub/nasm/releasebuilds/ 在下载之后对其进行解压,然后进入到其目录下,会发现有configure文件,接下来相信对于熟悉Linux的同学就知道该怎么办了. 输入./configure然会待其执行完成后,会发现在目录下生成了一个Makefile文件,这是输入make命令,就可以完成对Nasm的编译了 然后进入root,输入make ins

windows平台下基于QT和OpenCV搭建图像处理平台

在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并且生成了相应的免费视频.这篇博客的主要内容,就是基于最新版本的相应工具,在windows平台下,"基于QT和OpenCV搭建图像处理平台",并且进一步研究如何基于QT所见即所得的便利,进行图像处理操作,最终还要和vs做一个比较,进行初步小结. 主要分为3个部分,一个是当前模式下,windows+Q

windows平台下基于VisualStudio的Clang安装和配置

LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程语言.Clang 对源程序进行词法分析和语义分析,并将分析结果转换为 AST ( 抽象语法树 ) ,最后使用 LLVM 作为后端代码的生成器. Clang 的开发目标是提供一个可以替代 GCC 的前端编译器.与 GCC 相比,Clang 是一个重新设计的编译器前端,具有一系列优点,例如模块化,代码简

Android平台下基于情境的访问控制模型——CBAC

Context-basedAccess Control Systems for Mobile Devices, IEEE Transactions on Dependable andSecure Computing, 2015年3月 [1] http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6807727 1.1. 背景 普渡大学的研究人员针对BYOD场景中Android终端内恶意软件泄露用户敏感数据的问题,提出了一种基于情境的访问控制模型

(0.2.3)Linux平台下二进制方式安装mysql

本章节:二进制安装mysql 目录: 1.基于Linux平台的Mysql项目场景介绍 2.mysql数据库运行环境准备-最优配置 3.如何下载mysql数据库 4.linux平台下二进制文件方式安装mysql 4.1.环境检查(libaio包) 4.2.安装过程 (1)下载文件.上传安装程序 (2)创建用户,组,创建目录 (3)解压安装程序包 (4)修改权限(授权用户对解压目录的权限) (5)配置环境变量(以便可以直接运行mysql命令) (6)准备参数配置文件 (7)开始初始化Mysql (8

x86平台转x64平台关于内联汇编不再支持的解决

x86平台转x64平台关于内联汇编不再支持的解决     2011/08/25   把自己碰到的问题以及解决方法给记录下来,留着备用!   工具:VS2005  编译器:cl.exe(X86 C/C++)  ml64.exe(X64 ASM64) 前提:X86下内联汇编是嵌在函数当中实现的 在X86平台下,可以轻松的在C/C++代码中嵌入汇编代码,称其为"内联汇编",使用"__asm{}"语法即可,比较简单,这里不做介绍.当你在X86平台下,由于性能和速度的要求,需

x86 x64下调用约定浅析

x86平台下调用约定 我们都知道x86平台下常用的有三种调用约定,__cdecl.__stdcall.__fastcall.我们分别对这三种调用约定进行分析. __cdecl __cdecl是C/C++的默认调用约定,如果不显示声明调用约定的情况下,就是该调用约定.下面我们来从汇编层次来熟悉这种调用约定. 我写了一个函数,如下: 1 int __cdecl TestCdecl(int a, int b, int c, int d, int e) 2 { 3 return a + b + c +

SylixOS x86平台C++符号表

1.C++跨平台问题说明在x86平台下编译C++工程过程后,运行编译好的C++共享库时出现符号表__atomic_fetch_sub_4找不到的问题,如图 1.1所示. 图 1.1 符号表缺失 2.问题解决符号表缺失的原因是由于在跨平台编译时要加对应的平台编译选项,在x86平台下要增加-march=i686选项,如图 2.1所示. 图 2.1 增加Makefile编译选项 编译上传后,再运行动态库,发现动态库没有出现符号表未定义的问题,如图 2.2所示. 图 2.2 动态库正常运行截图 原文地址

基于Linux平台下的僵尸网络病毒《比尔盖茨》

感觉分析的很好,所以决定翻译出来,希望和大家多多交流O(∩_∩)O~ 转载请注明出处:http://blog.csdn.net/u010484477     O(∩_∩)O谢谢 关键字:病毒,linux,信息安全 我昨天写的日志里面提到,家用路由器在x86的CentOS系统下奇怪的自己行动,像是在自己加载处理器.于是我决定爬上去看看,在那里发生了什么,然后我马上意识到有人爬到服务器和挂在进程中的dgnfd564sdf.com.主要是下面几个方面atddd,cupsdd,cupsddh, ksap