创建一个能成功引导开机的小linux裸机-2015090401

我们自行使用创建一个可以正常开机的linux系统,但是功能不健全,仅为其能正常引导开机:步骤如下:

第一步:在虚拟机添加一块新硬盘

第二步:在新硬盘上创建分区,1个/boot ,1个swap分区,一个根分区:

[[email protected] ~]# fdisk -l /dev/sdb
 
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x950bee79
 
  Device Boot      Start         End     Blocks   Id  System
/dev/sdb1               1          26      208813+ 83  Linux
/dev/sdb2              27         158    1060290   82  Linux swap / Solaris
##swap分区类型需要调整为82  Linux swap / Solaris
/dev/sdb3             159         812    5253255   83  Linux
[[email protected] ~]# partx -a /dev/sdb           ##通知内核重读新分区
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3

第三步:为新分区创建文件系统

[[email protected] ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
52208 inodes, 208812 blocks
10440 blocks (5.00%) reserved for the superuser
First data block=1
Maximum filesystem blocks=67371008
26 block groups
8192 blocks per group, 8192 fragments pergroup
2008 inodes per group
Superblock backups stored on blocks:
         8193,24577, 40961, 57345, 73729, 204801
 
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystemaccounting information: done
 
This filesystem will be automaticallychecked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]# mkfs.ext3 /dev/sdb3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
328656 inodes, 1313313 blocks
65665 blocks (5.00%) reserved for the superuser
First data block=0
Maximum filesystem blocks=1346371584
41 block groups
32768 blocks per group, 32768 fragments pergroup
8016 inodes per group
Superblock backups stored on blocks:
         32768,98304, 163840, 229376, 294912, 819200, 884736
 
Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystemaccounting information: done
 
This filesystem will be automaticallychecked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]# mkswap /dev/sdb2      ##创建交换分区
Setting up swapspace version 1, size =1060284 KiB
no label,UUID=9e278322-0033-4bdc-8739-a621149f0179
[[email protected] ~]# blkid /dev/sdb1     ##显示分区属性,boot分区格式化成功
/dev/sdb1: LABEL="Boot Part"UUID="ce836e56-3bbf-47b0-a646-846e1b5d23d6" TYPE="ext3"SEC_TYPE="ext2"
[[email protected] ~]# blkid /dev/sdb2     ##显示分区属性,swap分区格式化成功
/dev/sdb2:UUID="9e278322-0033-4bdc-8739-a621149f0179" TYPE="swap"
[[email protected] ~]# blkid /dev/sdb3     ##显示分区属性,根分区格式化成功
/dev/sdb3: LABEL="root"UUID="02ec22df-7f8c-4cc4-82ec-79bb7f6806a2" SEC_TYPE="ext2"TYPE="ext3"

第四步:在/mnt目录下,创建boot 和rootfs两个分区,并将sdb1挂载至/mnt/boot,将sdb3挂载至/mnt/rootfs

[[email protected] ~]# mount /dev/sdb1 /mnt/boot/
[[email protected] ~]# mount /dev/sdb3 /mnt/rootfs/

第五步:在rootfs目录下创建mnt etc dev lib lib64 bin sbin proc sys root home目录,并使用grub-install命令安装grub到该硬盘/dev/sdb:

[[email protected] ~]# cd /mnt/rootfs/
[[email protected] rootfs]# mkdir -pv  mnt etc dev lib lib64 bin sbin proc sys roothome var usr
mkdir: created directory `mnt‘
mkdir: created directory `etc‘
mkdir: created directory `dev‘
mkdir: created directory `lib‘
mkdir: created directory `lib64‘
mkdir: created directory `bin‘
mkdir: created directory `sbin‘
mkdir: created directory `proc‘
mkdir: created directory `sys‘
mkdir: created directory `root‘
mkdir: created directory `home‘
mkdir: created directory `var‘
mkdir: created directory `usr‘
[[email protected] rootfs]# grub-install--root-directory=/mnt /dev/sdb
Probing devices to guess BIOS drives. Thismay 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 ofthe lines is incorrect,
fix it and re-run the script`grub-install‘.
 
(fd0) /dev/fd0
(hd0)         /dev/sda
(hd1)         /dev/sdb

第六步:复制内核及initrd文件到/mnt/boot目录,为配置方便,此处将内核及initramfs版本号修改为1.1.1,并编写grub配置文件:

[[email protected] mnt]# cp/boot/vmlinuz-2.6.32-504.el6.x86_64 boot/vmlinuz-1.1.1
[[email protected] mnt]# cp/boot/initramfs-2.6.32-504.el6.x86_64.img boot/initramfs-1.1.1.img
##initramfs和vmlinux版本号必须完全一致

创建grub的配置文件

[[email protected] mnt]# vim boot/grub/grub.conf
 
default=0
timeout=5
title  Test-linux
       root (hd0,0)
       kernel /vmlinuz-1.1.1 ro selinux=0 root=/dev/sda3 init=/bin/bash
                   ##内核的初始化任务之一是激活selinux,因为我们创建的小系统功能不完善,所以需关闭selinux,否则无法正常引导开机,init将用户空间的第一个程序指向bash
       initrd /initramfs-1.1.1.img

第七步:拷贝bash程序以及其所依赖的库文件拷贝到新硬盘上:

[[email protected] ~]# cp -R `which bash`/mnt/rootfs/bin/
[[email protected] rootfs]# ldd `which bash`
         linux-vdso.so.1=>  (0x00007fffda72a000)
         libtinfo.so.5=> /lib64/libtinfo.so.5 (0x0000003bc6200000)
         libdl.so.2=> /lib64/libdl.so.2 (0x0000003bbb600000)
         libc.so.6=> /lib64/libc.so.6 (0x0000003bbba00000)
         /lib64/ld-linux-x86-64.so.2(0x0000003bbb200000)
[[email protected] rootfs]# cp /lib64/libtinfo.so.5 /mnt/rootfs/lib64/
[[email protected] rootfs]# cp /lib64/libdl.so.2/mnt/rootfs/lib64/
[[email protected] rootfs]# cp /lib64/libc.so.6/mnt/rootfs/lib64/
[[email protected] rootfs]# cp/lib64/ld-linux-x86-64.so.2 /mnt/rootfs/lib64/
[[email protected] rootfs]# sync       ##将内存中数据同步到磁盘

执行完以上操作,便可将新硬盘插到新设备上启动了:如下:

第一步:

第二步:

第三步:

第四步:

第五步:

第六步:

第七步:

第八步:

第九步:保持默认:

第十步:

第十一部:

创建完成,开机测试,需事先关闭以挂载了新磁盘的那台主机!:

Grub菜单以显示出来了。激动人心的时刻————————————

实验成功

时间: 2024-11-08 19:57:02

创建一个能成功引导开机的小linux裸机-2015090401的相关文章

创建一个成功的App前要考虑的5个要点

在智能机时代,相比浏览网页而言,人们一般更喜欢喜欢使用手机应用.这种趋势就导致了成千上万的APP在Google Play 和 Apple Store 平台的诞生.有一些企业想要通过创建APP去提升他们的业务,其他人比如兄弟连学编程的学员也想要通过创建APP去获得收益. 移动应用的热潮激发人们都想要去开发一个自己的APP.你是不是也是其中一员呢? 你是不是想要创建一个APP但是却又不知道如何开始呢?如果是,兄弟连的小编整理的这篇文章可以指导你创建一个APP的流程. 1. 计划阶段 开始构建应用程序

三分钟创建一个小程序-每天三分钟玩转小程序 1

点击上方"编程三分钟",马上关注,每周1.3.5定时更新. 好险,还有几分钟,差点没有赶上周五的尾巴.这次带来的是1. 小程序开发前的准备,非常的简单,让我们花三分钟创建一个小程序! 1. 注册账号 访问微信公众平台网站:https://mp.weixin.qq.com 鼠标放到小程序上 发现图案变成了,下面这样,点击[查看详情],进入小程序注册页面. 拉到最下面,出现前往注册 填写一个没有注册过公众号,也没有注册过小程序的邮箱,来注册. . 2. 激活邮箱 这个时候你会收到一封邮件(

java创建一个简单的小框架frame

import java.awt.*; import javax.swing.*; public class SimpleFrameTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ // 开一个线程 public void run() { SimpleFrame frame = new SimpleFrame(); frame.setTitle("记事本"); //

linux 成功安装oracle后,为其创建一个登录账户

成功安装oracle后,创建一个登录账户 1.切换到oracle用户下 su -l oracle 2.使用sysdba账户登录: sqlplus / as sysdba 3.创建用户 语法:CREATE USER 用户名 IDENTIFIED BY 密码; CREATE USER mmzsit IDENTIFIED BY mmzsit; 4.将刚创建的用户解锁/锁住 语法:ALTER USER 用户名 ACCOUNT UNLOCK/LOCK //用户解锁 alter user mmzsit ac

JavaWeb学习(三) : 如何在 Eclipse 中创建一个Web 项目并成功运行?

前置条件 : 1.确保已安装 Eclipse.Tomcat 服务器安装包 2.jdk.环境变量都已配置成功. 3.注意在安装 Eclipse 时一定要选择第二个有 Web 项目的进行安装, 不然安装成功后还需要下载很多的插件,增加了不必要的麻烦. 创建步骤 : 1.将本地 Tomcat 服务器添加 进去: 首先打开 Window -- preference 搜索 server 双击 Runtime Environments 点击 Add,找到对应的你下载的 TomCat 服务器,进行添加,我的

一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目

对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结. 首先,你要先创建一个客户端聊天框(取名为:ChatClient,它是你创建的类),这个类继承了Frame.而这个Frame是java.awt里的一个子类,它是带有标题和边框的顶层窗口,它里面有很多方法(具体查手册).下面是一段示例代码: 1 import java.awt.*; 2 3 public class ChatClient extends Frame{//你创建的类继承了Frame 4 5

java动态缓存成长小纪(一)——创建一个简单的缓存

在实际项目中,我们经常会需要使用到缓存.一般来说,缓存介质是内存:而常见的DB将数据存储在硬盘中的:缓存读取是电脉冲,而硬盘读取是机械地读取转动的硬盘,速度差异是上百倍的.所以往往可以通过缓存,对经常用到的数据进行访问,以提高速度. 创建缓存实际上就是针对两个对象,1. Cache对象,即一个缓存对象:2. CacheManager对象,即一个管理不同缓存的对象,其核心实际上就是一个Map,用来保存与获取不同缓存. 最简单的缓存 实现如下: /** * 项目名称: * 文件说明:创建一个缓存管理

django的如何创建一个小例子-2

1.在cmd中进入数据库查看生成的表格: 2.测试数据操作 进入python shell中执行python manage.py shell 添加包from myApp.models import Grades, Students from django.utils import timezone from datetime import * 查询所有数据 类名.objects.all()  示例: Grades.objects.all() 添加数据本质:创建一个模型类的对象实例 示例:CMD窗口

CentOS7_86_64创建Oracle实例且设置开机自启以及允许远程连接

一.前言 先说明下,这里系统是CentOS7_86_64,Oracle版本是Oracle10g R2,假设系统和数据库都已安装完毕.前面有一篇文章详细说明了CentOS7下安装Oracle10g的流程,需要的同学可以去看一下.传送门:CentOS7_86_64安装Oracle10g R2血泪史. 二.检查/设置系统防火墙 说明:这里主要是为了设置oracle允许远程连接,如果没有这个需求,可以先不用管. 1.客户端检测网络通过性 此步骤不执行也可以,如果没条件检测的话.这里只是说明下网络是否正常