定制自己的Linux系统
具体实验步骤
- 虚拟机新增一块硬盘,注意勾选<将虚拟磁盘存储为单个文件>
- 新磁盘新建分区、格式化、挂载等
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xdc1a259e 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+500M
分区 1 已设置为 Linux 类型,大小设为 500 MiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (1026048-41943039,默认为 1026048):
将使用默认值 1026048
Last 扇区, +扇区 or +size{K,M,G} (1026048-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Linux 类型,大小设为 19.5 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb2
[root@localhost ~]# mkdir -p /mnt/boot /mnt/sysroot
[root@localhost ~]# mount /dev/sdb1 /mnt/boot/
[root@localhost ~]# mount /dev/sdb2 /mnt/sysroot/
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 500M 0 part /mnt/boot
└─sdb2 8:18 0 19.5G 0 part /mnt/sysroot
sr0 11:0 1 1024M 0 rom
- 安装grup,将内核文件拷贝至目标磁盘
[root@localhost ~]# grub2-install --root-directory=/mnt /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
[root@localhost ~]# hexdump -C -n 512 /dev/sdb
00000170 be 94 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 |..}.......GRUB .|
00000180 47 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 |Geom.Hard Disk.R|
00000190 65 61 64 00 20 45 72 72 6f 72 0d 0a 00 bb 01 00 |ead. Error......|
[root@localhost ~]# rm -rf /mnt/boot/*
[root@localhost ~]# cp -rf /boot/* /mnt/boot/
- 修改
/mnt/boot/grub2/grub.cfg
引导文件
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 4a5df469-b488-47ec-8500-c6b528e9bf25 /boot
└─sda2 LVM2_member tcyE7V-vys1-vMJ9-n0iQ-elB1-fl7j-2NRjQl
├─centos-root
xfs a2119d57-fc7a-4df4-b177-51f630ecfd28 /
└─centos-swap
swap 31ba9223-74d2-42c9-8986-a1d5933b19c1 [SWAP]
sdb
├─sdb1 ext4 e29707ec-efce-4b7e-a3f8-87837f230ae6 /mnt/boot
└─sdb2 ext4 3bd82865-9a27-430d-83e2-46b4fcb5de07 /mnt/sysroot
sr0
[root@localhost ~]# vim /mnt/boot/grub2/grub.cfg
#底行模式下输入(Shift + :)
%s /4a5df469-b488-47ec-8500-c6b528e9bf25/e29707ec-efce-4b7e-a3f8-87837f230ae6
%s /a2119d57-fc7a-4df4-b177-51f630ecfd28/3bd82865-9a27-430d-83e2-46b4fcb5de07
#命令模式下查找linux16,并在行尾追加
/linux16
selinux=0 init=/bin/bash
- 创建目标主机根文件系统
[root@localhost ~]# mkdir -pv /mnt/sysroot/{bin,dev,home,lib64,mnt,proc,run,srv,tmp,var,boot,etc/rc.d,lib,media,opt,root,sbin,sys,usr}
mkdir: 已创建目录 "/mnt/sysroot/bin"
mkdir: 已创建目录 "/mnt/sysroot/dev"
mkdir: 已创建目录 "/mnt/sysroot/home"
mkdir: 已创建目录 "/mnt/sysroot/lib64"
mkdir: 已创建目录 "/mnt/sysroot/mnt"
mkdir: 已创建目录 "/mnt/sysroot/proc"
mkdir: 已创建目录 "/mnt/sysroot/run"
mkdir: 已创建目录 "/mnt/sysroot/srv"
mkdir: 已创建目录 "/mnt/sysroot/tmp"
mkdir: 已创建目录 "/mnt/sysroot/var"
mkdir: 已创建目录 "/mnt/sysroot/boot"
mkdir: 已创建目录 "/mnt/sysroot/etc"
mkdir: 已创建目录 "/mnt/sysroot/etc/rc.d"
mkdir: 已创建目录 "/mnt/sysroot/lib"
mkdir: 已创建目录 "/mnt/sysroot/media"
mkdir: 已创建目录 "/mnt/sysroot/opt"
mkdir: 已创建目录 "/mnt/sysroot/root"
mkdir: 已创建目录 "/mnt/sysroot/sbin"
mkdir: 已创建目录 "/mnt/sysroot/sys"
mkdir: 已创建目录 "/mnt/sysroot/usr"
- 拷贝需要的程序以及库文件
[root@localhost ~]# cp /bin/bash /mnt/sysroot/bin/
[root@localhost ~]# cp /bin/ls /mnt/sysroot/bin/
[root@localhost ~]# cp -rf /lib64/* /mnt/sysroot/lib64/
- 卸载磁盘,新建虚拟机选择制作完成的磁盘,开机即可
Linux内核升级
- 查看当前系统内核版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
- 升级内核
#检测内核版本并显示可升级的内核
[root@localhost ~]# yum info kernel -q
可安装的软件包
名称 :kernel
架构 :x86_64
版本 :3.10.0
发布 :1160.25.1.el7
大小 :50 M
源 :updates/7/x86_64
简介 : The Linux kernel
网址 :http://www.kernel.org/
协议 : GPLv2
描述 : The kernel package contains the Linux kernel (vmlinuz), the core of
: any Linux operating system. The kernel handles the basic functions
: of the operating system: memory allocation, process allocation,
: device input and output, etc.
#升级内核
[root@localhost ~]# yum update kernel
#查看已经安装的内核列表
[root@localhost ~]# yum list kernel -q
已安装的软件包
kernel.x86_64 3.10.0-1160.el7 @anaconda
kernel.x86_64 3.10.0-1160.25.1.el7 @updates
[root@localhost ~]# reboot