Smile>liunx>正文 自己制作的小型linux 系统

简介:

Linux 的启动流程:

  1. 加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备。
  2. 读取并执行第一个可启动设备内MBR的boot Loader。(即是GRUB,spfdisk)
  3. 依据boot loader的设置加载Kernel 会主动调用init进程,而init会取得run-level信息
  4. init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络、时区等)
  5. init执行run-level的各个服务的启动(script方式)
  6. init执行/etc/rc.d/rc.local文件
  7. init执行终端机模拟程序mingetty来启动login进程,最后就等待用户登录

一.基本配置:

示意图:

image

1. 宿主机的配置:

image

image

image

image

 

image

image

2.查看已添加的第二个磁盘

[root@gjp99 ~]# fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 1 13 104391 83 Linux

/dev/sda2 14 1288 10241437+ 83 Linux

/dev/sda3 1289 1353 522112+ 82 Linux swap / Solaris

Disk /dev/sdb: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition tabl

3.对第二个磁盘进行分区

[root@gjp99 ~]# fdisk /dev/sdb

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1 //第一个主分区作为启动盘

First cylinder (1-2610, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +100m

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 2 // 作为根分区

First cylinder (14-2610, default 14):

Using default value 14

Last cylinder or +size or +sizeM or +sizeK (14-2610, default 2610): +500m

Command (m for help): a //设置启动盘

Partition number (1-4): 1

Command (m for help): p

Disk /dev/sdb: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 * 1 13 104391 83 Linux

/dev/sdb2 14 75 498015 83 Linux

Command (m for help): w //保存

4.查看分区情况:

[root@gjp99 ~]# cat /proc/partitions

major minor #blocks name

8 0 20971520 sda

8 1 104391 sda1

8 2 10241437 sda2

8 3 522112 sda3

8 16 20971520 sdb

8 17 104391 sdb1

8 18 498015 sdb2

5. 对第二个磁盘进行格式化

[root@gjp99 ~]# mkfs -t ext3 /dev/sdb1

[root@gjp99 ~]# mkfs -t ext3 /dev/sdb2

[root@gjp99 ~]# mkdir /mnt/boot

[root@gjp99 ~]# mkdir /mnt/sysroot

[root@gjp99 ~]# mount /dev/sdb1 /mnt/boot

[root@gjp99 ~]# mount /dev/sdb2 /mnt/sysroot

6.自动生成MBR 和 GRUB 第一部分的配置文件

[root@gjp99 ~]# grub-install --root-directory=/mnt/ /dev/sdb

//MBR 和 GRUB的第二段的BOOT都生成了

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

7.拷贝宿主机的内核和镜像到第二个硬盘上

[root@gjp99 ~]# cp /boot/vmlinuz-2.6.18-164.el5 /mnt/boot/

[root@gjp99 ~]# cp /boot/initrd-2.6.18-164.el5.img /mnt/boot/

8.在根目录下建立比较重要的目录

[root@gjp99 sysroot]# mkdir bin boot dev etc home lib proc root sbin sys tmp usr var

[root@gjp99 sysroot]# chmod o+t tmp //需注意

9. 查看init命令所在的位置

[root@gjp99 sysroot]# which init

/sbin/init

[root@gjp99 sysroot]# cp /sbin/init sbin/ //拷贝init文件到第二个磁盘相同的目录下

[root@gjp99 sysroot]#cd /mnt/sysroot

[root@gjp99 sysroot]# ldd /sbin/init //查看init所使用到的相关系统调用

linux-gate.so.1 => (0x00788000)

libsepol.so.1 => /lib/libsepol.so.1 (0x008a7000)

libselinux.so.1 => /lib/libselinux.so.1 (0x0088d000)

libc.so.6 => /lib/libc.so.6 (0x00110000)

libdl.so.2 => /lib/libdl.so.2 (0x0084e000)

/lib/ld-linux.so.2 (0x006bf000)

例如: 拷贝最后一行:(其实需全部拷贝)

[root@gjp99 sysroot]# cp /lib/libdl.so.2 lib/

10.进入第二个磁盘的根目录:

[root@gjp99 ~]#cd /mnt/sysroot/etc

[root@gjp99 etc]# cp /etc/inittab . //拷贝inittab到当前目录

[root@gjp99 etc]# ls //显示

Inittab

[root@gjp99 etc]# vim inittab //编辑inittab文件

si::sysinit:/etc/rc.d/rc.sysinit //只要这一条

11.新建rc.d 目录 ,配置 rc.sysconfig

[root@gjp99 etc]# mkdir rc.d

[root@gjp99 etc]# ll

total 2

-rw-r--r-- 1 root root 638 Aug 3 19:13 inittab

drwxr-xr-x 2 root root 1024 Aug 3 19:29 rc.d

[root@gjp99 etc]# cd rc,d

[root@gjp99 rc.d]# vim rc.sysinit

#!/bin/bash //命令解释器

/bin/bash

[root@gjp99 ~]# cp /bin/bash /mnt/sysroot/bin/ //拷贝bash目录

[root@gjp99 ~]# ldd /bin/bash //bash相关的系统调用文件

linux-gate.so.1 => (0x009e6000)

libtermcap.so.2 => /lib/libtermcap.so.2 (0x00854000)

libdl.so.2 => /lib/libdl.so.2 (0x0084e000)

libc.so.6 => /lib/libc.so.6 (0x006dd000)

/lib/ld-linux.so.2 (0x006bf000)

必须全拷贝过去,这里是两个实例 (必须全部拷贝到/bin下)

[root@gjp99 sysroot]# cp /lib/libtermcap.so.2 /mnt/sysroot/bin/

[root@gjp99 sysroot]# cp /lib/libdl.so.2 /mnt/sysroot/bin/

12.修改rc.sysinit的权限

[root@gjp99 sysroot]# cd etc/rc.d

[root@gjp99 rc.d]# ll

total 1

-rw-r--r-- 1 root root 22 Aug 3 19:32 rc.sysinit

[root@gjp99 rc.d]# chmod a+x sysinit //给它执行的权限

[root@gjp99 rc.d]# cd

13.拷贝ls命令的相关文件

[root@gjp99 ~]# which ls //查找ls文件所在的位置

alias ls='ls --color=tty'

/bin/ls

[root@gjp99 ~]# cp /bin/ls /mnt/sysroot/bin/ //拷贝到第二个磁盘的bin下

[root@gjp99 ~]# ldd /bin/ls //显示相关的系统调用

linux-gate.so.1 => (0x00f33000)

librt.so.1 => /lib/librt.so.1 (0x0086d000)

libacl.so.1 => /lib/libacl.so.1 (0x00878000)

libselinux.so.1 => /lib/libselinux.so.1 (0x0088d000)

libc.so.6 => /lib/libc.so.6 (0x006dd000)

libpthread.so.0 => /lib/libpthread.so.0 (0x00854000)

/lib/ld-linux.so.2 (0x006bf000)

libattr.so.1 => /lib/libattr.so.1 (0x00b9a000)

libdl.so.2 => /lib/libdl.so.2 (0x0084e000)

libsepol.so.1 => /lib/libsepol.so.1 (0x008a7000)

全部拷贝,实例如下:

[root@gjp99 ~]# cp /lib/librt.so.1 /mnt/sysroot/lib/

14.配置grub.conf

[root@gjp99 ~]# cd /mnt/boot/grub

[root@gjp99 ~]# vim /mnt/boot/grub/grub.conf

default=0  //默认输入的是Linux 可以修改

timeout=5   //超时时间

splashimage=(hd0,0)/grub/welce.xpm.gz //加载的图片

#hiddenmenu   //隐藏GRUB菜单

title Red Hat Enterprise liunx 5.4 (gjp create) // GRUB菜单的标题

root(hd0,0)

kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/sda2 quiet  //内核驱动  只读   硬盘   静默模式

initrd /initrd-2.6.18-164.el5.img  //镜像文件

15.加载图片时应注意一下

  •    用xftp上传文件时,要保证ftp的vsftpd.conf文件的UPLOAD 功能已打开

[root@gjp99 ~]# rpm -qc vsftpd 
/etc/logrotate.d/vsftpd.log 
/etc/pam.d/vsftpd 
/etc/vsftpd/ftpusers 
/etc/vsftpd/user_list 
/etc/vsftpd/vsftpd.conf 
/etc/vsftpd/vsftpd_conf_migrate.sh

  •      保证/var/ftp/pub的权限增加可写
  •      上传后安装gimp绘图工具

[root@gjp99 Server]#ll gimp*

[root@gjp99 Server]#yum install gimp –y

[root@gjp99 ~]#gimp

进入编辑状态,FILE ----open 

image  enter键

image

image

gzip  lzw.xpm   得到xpm.gz 格式的文件

把lzw.xpw.gz格式的文件存放在grub目录

二、测试

1.先新建虚拟机

2.删除已存在的硬盘

3.增加新硬盘,添加过程,注意如下:

image

选择用一个已存在的虚拟盘(我们事先建好的)

image

image

增加宿主机上的第二块硬盘后的效果

 

4.1启动时的GRUB菜单:

image

4.2 启动起来的界面:

image 

(注意,在测试时,必须把宿主机暂停掉),因为我们用的是宿主机的第二块硬盘



本文转自 gjp0731 51CTO博客,原文链接:http://blog.51cto.com/guojiping/955226


相关文章
|
1月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
77 24
Linux系统之whereis命令的基本使用
|
6天前
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
36 8
|
6天前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
3月前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
317 78
|
2月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
175 23
|
2月前
|
安全 网络协议 Linux
结合 `nc` 工具利用笑脸漏洞(Smile Bug)攻击 Metasploitable2 Linux
本文介绍如何使用 `nc`(Netcat)工具结合笑脸漏洞(Smiley Bug)攻击 Metasploitable2 Linux 靶机。首先概述了 `nc` 的基本功能和高级用法,包括建立连接、监听端口、文件传输等操作。接着详细描述了笑脸漏洞的原理及其在网络攻防中的应用,展示了通过 `nc` 发送恶意输入检测漏洞的方法。最后结合 Python 脚本实现更复杂的攻击场景,并强调了合法性和环境隔离的重要性。
61 13
|
3月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
104 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
3月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
140 13
|
4月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
131 3
|
3月前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
115 0