制作一个最小的CentOS6系统

制作一个最小的CentOS6系统

首先要明确一下CentOS6启动的过程

POST -> BootSequence(BIOS) -> Bootloader(MBR) -> Kernel(ramdisk) -> rootfs -> switchroot -> /sbin/init -> (/etc/inittab,/etc/init/*.conf) -> 设置默认运行级别 -> 系统初始化脚本 ->关闭或启动对应级别下的服务 -> 启动终端

1、POST不用管,硬件的事

2、BootSequence,手动选择某个硬盘启动即可

3、Bootloader即stage1.0阶段,使用grub-install生成

stage1.5阶段也用grub-install生成

4、stage2.0阶段即内核文件vmlinuz和ramdisk镜像从源系统复制一份

然后需要grub文件,CentOS6就手动写一份吧,格式如下:

default=#:设定默认启动的菜单项;落单项(title)编号从0开始
timeout=#:指定菜单等待选项选择的时长
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指定菜单背景图片
hiddenmenu:隐藏菜单
title TITLE:定义菜单标题
    root(hd#,#)grub查找stage2及kernel文件所在的设备分区:为grub的根
    kernel /PATH/TO/VMLINUZ_FILE:启动的内核
    initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件
    password [--md5] STRING:菜单编辑认证

5、复制几个命令,开启也别启动/sbin/init,直接启动/bin/bash行了

脚本:copycmd-拷贝命令及其依赖库

开始搞

一、CentOS6虚拟机加一个硬盘

二、分区挂到临时目录下

swap分区可以不要,刚开始启动不起来,我还以为是缺少swap分区,后来发现,是因为selinux问题,grub.conf里面kernel哪一行加上selinux=0即可

[[email protected] ~]# for i in `seq 0 2`;do echo - - - >/sys/class/scsi_host/host$i/scan;done
[[email protected] ~]# lsblk /dev/sdb -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
#一个boot分区,一个根分区算了
[[email protected] ~]# fdisk /dev/sdb
Command (m for help): n
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +300M
Command (m for help): n
p
Partition number (1-4):
Partition number (1-4): 2
Last cylinder, +cylinders or +size{K,M,G} (40-130, default 130): +100M
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Command (m for help): n
p
Partition number (1-4): 3
Last cylinder, +cylinders or +size{K,M,G} (54-130, default 130):
Command (m for help): w
The partition table has been altered!
#创建文件系统
[[email protected] ~]# mkfs.ext4 /dev/sdb1
[[email protected] ~]# mkswap /dev/sdb2
[[email protected] ~]# mkfs.ext4 /dev/sdb3
[[email protected] ~]# lsblk -f /dev/sdb
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb
├─sdb1 ext4         54632ecc-7b84-400e-9c44-bc01edf500b5
├─sdb2 swap         6ca8ef8e-3753-447e-ba89-569b6258ea25
└─sdb3 ext4         a80dd4f2-d9f6-4eb0-909a-54d1ac06fd6b
#临时挂
[[email protected] ~]# mkdir /mnt/{boot,sysroot}
[[email protected] ~]# mount /dev/sdb1 /mnt/boot/
[[email protected] ~]# mount /dev/sdb3 /mnt/sysroot/

三、生成grubstage1.0-stage2.0文件

[[email protected] ~]# grub-install --root-directory=/mnt /dev/sdb
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install‘.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

四、复制内核文件vmlinuz和ramfs镜像

[[email protected] ~]# cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /mnt/boot/vmlinuz
[[email protected] ~]# cp /boot/initramfs-2.6.32-754.el6.x86_64.img /mnt/boot/initramfs.img

手写grub.conf,照着/boot/grub/grub.conf

注意:selinux=0不启用selinux,init=/bin/bash表示开机使用/bin/bash,不使用/sbin/init

[[email protected] ~]# cat /mnt/boot/grub/grub.conf
default=0
timeout=5
title CentOS6 test (hehehaha)
kernel /vmlinuz ro root=/dev/sda3 selinux=0 init=/bin/bash
initrd /initramfs.img

五、创建目录,复制命令

脚本:copycmd-拷贝命令及其依赖库

[[email protected] sysroot]# mkdir home tmp root usr lib lib64 proc etc mnt bin sbin dev opt var sys

切根试试:

[[email protected] ~]# chroot /mnt/sysroot/
bash-4.1# ls
bin  etc   lib    mnt  proc  sbin  tmp  var
dev  home  lib64  opt  root  sys   usr
bash-4.1# pwd
/
bash-4.1# cd root
bash-4.1# pwd
/root

顺便复制个网卡驱动

[[email protected] ~]# ethtool -i eth0
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version:
bus-info: 0000:02:01.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
[[email protected] ~]# find / -name e1000.ko
/lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
[[email protected] ~]# cp /lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/

六、关机,新建虚拟机使用该磁盘启动

自定义创建虚拟机

神奇的grub界面:

进去之后,加载网卡,配IP,ping一下别的虚拟机

LFS:构建最小Linux文档:https://lctt.github.io/LFS-BOOK/

原文地址:https://blog.51cto.com/14012942/2434184

时间: 2024-11-07 11:44:29

制作一个最小的CentOS6系统的相关文章

编译内核制作一个小型的linux系统

前言 今天我将会给大家带来如何定制一个属于自己linux系统,也就是编译内核,那为什么要编译内核呢? 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统管理,决定着系统的性能和稳定性.Linux作为一个自由软件,在广 大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核的bug,并增加了许多新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一 个更高效,更稳定的内核,就需要重新编译内核 对开源操作系统(主要是指Linux)的内核源代码在本机进行

C++程设实验项目二:用正则表达式制作一个简易的SQL系统

本文将尽可能简单地概括如何搭起这个SQL系统的框架. 一.正则表达式分析语句 首先需要使用c++的regex库: #include <regex> 推荐到菜鸟教程上了解正则表达式的最基础语法. 然后,新建一个表达式.假定现在要分析的语句是CREATE TABLE (col1,col2,...) TO filename regex r("CREATE TABLE \\((.+)\\) TO ([^ ]+)"); 注意,在c++中还要转义一次反斜杠,所以一般的像\w, \(这样

制作openstack用的centos6.5镜像

目的: 在centos6.5操作系统环境下制作一个centos6.5的kvm镜像,安装cloud-init,能自动扩展根分区 一.制作环境: 操作环境是在openstack平台开一个实例,装的是centos6.5,镜像来自:http://cloud.centos.org/centos/6.5/images/CentOS-6-x86_64-GenericCloud-20140929_01.qcow2 centos社区制作的镜像,不支持自动扩展根分区,导致创建实例时不论你指定硬盘大小是多大,它都是7

Delphi 7下最小化到系统托盘(主要是WM_TRAYMSG和WM_SYSCOMMAND消息)

在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本.定义如下: 123456789   _NOTIFYICONDATAA = record   cbSize: DWORD;   Wnd: HWND;   uID: UINT;   uFlags: UINT;   uCallbackMessage: UINT;   hIcon: HICON;   szTip: array [0..63] of Ansi

用香蕉派制作香蕉派路由openwrt系统镜像

BPI-R1最新版全功能的openwrt系统还没有发布,等得着急啊,还是自己先来制作一个可以运行的系统吧.不过由于这里的配置文件是香蕉派的,所以有些功能路由是运行不了的,就当是热热身吧. 所有的操作都是在香蕉派Lubuntu下完成的,不需要交叉编译的环境,省了不少事. 1.下载必须的文件: 这个网站是openwrt最新的文件,已经编译好的,直接用吧.下载的时候把和香蕉派有关的东西都下载来,其他的就不用了.当然这个方法也适用于其他的板子,有兴趣可以自己做. http://downloads.ope

基于kickstart实现网络共享以及制作光盘和U盘实现半自动安装centos6系统

一.使用kickstart实现网络共享半自动化安装. ①在centos6上安装system-config-kickstart.ftpd包.   ②使用system-config-kickstart命令,编辑里面的内容,该文件生成ks.cfg文件. 修改完之后在File菜单中选择Save保存,在最上面输入ks.cfg名字,选择保存位置,点击Save按钮即可. #platform=x86, AMD64, or IntelEM64T #version=DEVEL     # Firewall conf

Linux系统裁减之,制作一个极度精简的Linux-3-为精简的系统增加网络功能和关机重启功能

第3章 为精简的Linux系统增加网络功能和开关机功 在阅读这篇博文之前,建议先阅读我的上两篇博文,而且最好按顺序阅读:(不然可能会觉得我写得不知所云,呵呵!) 第1篇:Linux系统裁减之,制作一个极度精简的Linux-1http://blog.51cto.com/linuxprince/2045703 第2篇:Linux系统裁减之,制作一个极度精简的Linux-2-用脚本实现自动拷贝命令和依赖库文件http://blog.51cto.com/linuxprince/2046142 3.1 为

Linux系统裁减之,制作一个极度精简的Linux-5-重新编译login去除对pam模块的依赖

第5章 重新编译login去除对pam模块的依赖 在阅读这篇博文之前,建议先阅读我的前4篇博文,而且最好按顺序阅读:(不然可能会觉得我写得不知所云,呵呵!) 第1篇:Linux系统裁减之,制作一个极度精简的Linux-1 http://blog.51cto.com/linuxprince/2045703 第2篇:Linux系统裁减之,制作一个极度精简的Linux-2-用脚本实现自动拷贝命令和依赖库文件 http://blog.51cto.com/linuxprince/2046142 第3篇:L

制作一个只运行bash的系统及破坏mbr表并修复

制作一个只运行bash的系统 1.新增一块硬盘,分三个区. 分区1:boot目录100M 分区2:2G,swap分区 分区3:5G,根目录. 其中分区1.3格式化为ext4文件系统,分区2格式化为swap. 2./mnt下新建两个目录boot和sysroot. 分区1挂载至boot目录,分区3挂载至sysroot目录 grub安装至分区1,复制内核和initramfs至boot目录 [[email protected] ~]# mount /dev/sdb1 /mnt/boot [[email