定制自己的Linux系统

具体实验步骤

  1. 虚拟机新增一块硬盘,注意勾选<将虚拟磁盘存储为单个文件>
  2. 新磁盘新建分区、格式化、挂载等
  1. [root@localhost ~]# lsblk
  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  3. sda 8:0 0 20G 0 disk
  4. ├─sda1 8:1 0 1G 0 part /boot
  5. └─sda2 8:2 0 19G 0 part
  6. ├─centos-root 253:0 0 17G 0 lvm /
  7. └─centos-swap 253:1 0 2G 0 lvm [SWAP]
  8. sdb 8:16 0 20G 0 disk
  9. sr0 11:0 1 1024M 0 rom
  10. [root@localhost ~]# fdisk /dev/sdb
  11. 欢迎使用 fdisk (util-linux 2.23.2)。
  12. 更改将停留在内存中,直到您决定将更改写入磁盘。
  13. 使用写入命令前请三思。
  14. Device does not contain a recognized partition table
  15. 使用磁盘标识符 0xdc1a259e 创建新的 DOS 磁盘标签。
  16. 命令(输入 m 获取帮助):n
  17. Partition type:
  18. p primary (0 primary, 0 extended, 4 free)
  19. e extended
  20. Select (default p): p
  21. 分区号 (1-4,默认 1):
  22. 起始 扇区 (2048-41943039,默认为 2048):
  23. 将使用默认值 2048
  24. Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+500M
  25. 分区 1 已设置为 Linux 类型,大小设为 500 MiB
  26. 命令(输入 m 获取帮助):n
  27. Partition type:
  28. p primary (1 primary, 0 extended, 3 free)
  29. e extended
  30. Select (default p): p
  31. 分区号 (2-4,默认 2):
  32. 起始 扇区 (1026048-41943039,默认为 1026048):
  33. 将使用默认值 1026048
  34. Last 扇区, +扇区 or +size{K,M,G} (1026048-41943039,默认为 41943039):
  35. 将使用默认值 41943039
  36. 分区 2 已设置为 Linux 类型,大小设为 19.5 GiB
  37. 命令(输入 m 获取帮助):w
  38. The partition table has been altered!
  39. Calling ioctl() to re-read partition table.
  40. 正在同步磁盘。
  41. [root@localhost ~]# mkfs.ext4 /dev/sdb1
  42. [root@localhost ~]# mkfs.ext4 /dev/sdb2
  43. [root@localhost ~]# mkdir -p /mnt/boot /mnt/sysroot
  44. [root@localhost ~]# mount /dev/sdb1 /mnt/boot/
  45. [root@localhost ~]# mount /dev/sdb2 /mnt/sysroot/
  46. [root@localhost ~]# lsblk
  47. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  48. sda 8:0 0 20G 0 disk
  49. ├─sda1 8:1 0 1G 0 part /boot
  50. └─sda2 8:2 0 19G 0 part
  51. ├─centos-root 253:0 0 17G 0 lvm /
  52. └─centos-swap 253:1 0 2G 0 lvm [SWAP]
  53. sdb 8:16 0 20G 0 disk
  54. ├─sdb1 8:17 0 500M 0 part /mnt/boot
  55. └─sdb2 8:18 0 19.5G 0 part /mnt/sysroot
  56. sr0 11:0 1 1024M 0 rom
  1. 安装grup,将内核文件拷贝至目标磁盘
  1. [root@localhost ~]# grub2-install --root-directory=/mnt /dev/sdb
  2. Installing for i386-pc platform.
  3. Installation finished. No error reported.
  4. [root@localhost ~]# hexdump -C -n 512 /dev/sdb
  5. 00000170 be 94 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 |..}.......GRUB .|
  6. 00000180 47 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 |Geom.Hard Disk.R|
  7. 00000190 65 61 64 00 20 45 72 72 6f 72 0d 0a 00 bb 01 00 |ead. Error......|
  8. [root@localhost ~]# rm -rf /mnt/boot/*
  9. [root@localhost ~]# cp -rf /boot/* /mnt/boot/
  1. 修改/mnt/boot/grub2/grub.cfg引导文件
  1. [root@localhost ~]# lsblk -f
  2. NAME FSTYPE LABEL UUID MOUNTPOINT
  3. sda
  4. ├─sda1 xfs 4a5df469-b488-47ec-8500-c6b528e9bf25 /boot
  5. └─sda2 LVM2_member tcyE7V-vys1-vMJ9-n0iQ-elB1-fl7j-2NRjQl
  6. ├─centos-root
  7. xfs a2119d57-fc7a-4df4-b177-51f630ecfd28 /
  8. └─centos-swap
  9. swap 31ba9223-74d2-42c9-8986-a1d5933b19c1 [SWAP]
  10. sdb
  11. ├─sdb1 ext4 e29707ec-efce-4b7e-a3f8-87837f230ae6 /mnt/boot
  12. └─sdb2 ext4 3bd82865-9a27-430d-83e2-46b4fcb5de07 /mnt/sysroot
  13. sr0
  1. [root@localhost ~]# vim /mnt/boot/grub2/grub.cfg
  2. #底行模式下输入(Shift + :)
  3. %s /4a5df469-b488-47ec-8500-c6b528e9bf25/e29707ec-efce-4b7e-a3f8-87837f230ae6
  4. %s /a2119d57-fc7a-4df4-b177-51f630ecfd28/3bd82865-9a27-430d-83e2-46b4fcb5de07
  5. #命令模式下查找linux16,并在行尾追加
  6. /linux16
  7. selinux=0 init=/bin/bash
  1. 创建目标主机根文件系统
  1. [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}
  2. mkdir: 已创建目录 "/mnt/sysroot/bin"
  3. mkdir: 已创建目录 "/mnt/sysroot/dev"
  4. mkdir: 已创建目录 "/mnt/sysroot/home"
  5. mkdir: 已创建目录 "/mnt/sysroot/lib64"
  6. mkdir: 已创建目录 "/mnt/sysroot/mnt"
  7. mkdir: 已创建目录 "/mnt/sysroot/proc"
  8. mkdir: 已创建目录 "/mnt/sysroot/run"
  9. mkdir: 已创建目录 "/mnt/sysroot/srv"
  10. mkdir: 已创建目录 "/mnt/sysroot/tmp"
  11. mkdir: 已创建目录 "/mnt/sysroot/var"
  12. mkdir: 已创建目录 "/mnt/sysroot/boot"
  13. mkdir: 已创建目录 "/mnt/sysroot/etc"
  14. mkdir: 已创建目录 "/mnt/sysroot/etc/rc.d"
  15. mkdir: 已创建目录 "/mnt/sysroot/lib"
  16. mkdir: 已创建目录 "/mnt/sysroot/media"
  17. mkdir: 已创建目录 "/mnt/sysroot/opt"
  18. mkdir: 已创建目录 "/mnt/sysroot/root"
  19. mkdir: 已创建目录 "/mnt/sysroot/sbin"
  20. mkdir: 已创建目录 "/mnt/sysroot/sys"
  21. mkdir: 已创建目录 "/mnt/sysroot/usr"
  1. 拷贝需要的程序以及库文件
  1. [root@localhost ~]# cp /bin/bash /mnt/sysroot/bin/
  2. [root@localhost ~]# cp /bin/ls /mnt/sysroot/bin/
  3. [root@localhost ~]# cp -rf /lib64/* /mnt/sysroot/lib64/
  1. 卸载磁盘,新建虚拟机选择制作完成的磁盘,开机即可

Linux内核升级

  1. 查看当前系统内核版本
  1. [root@localhost ~]# uname -a
  2. 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
  1. 升级内核
  1. #检测内核版本并显示可升级的内核
  2. [root@localhost ~]# yum info kernel -q
  3. 可安装的软件包
  4. 名称 kernel
  5. 架构 x86_64
  6. 版本 3.10.0
  7. 发布 1160.25.1.el7
  8. 大小 50 M
  9. updates/7/x86_64
  10. 简介 The Linux kernel
  11. 网址 http://www.kernel.org/
  12. 协议 GPLv2
  13. 描述 The kernel package contains the Linux kernel (vmlinuz), the core of
  14. : any Linux operating system. The kernel handles the basic functions
  15. : of the operating system: memory allocation, process allocation,
  16. : device input and output, etc.
  17. #升级内核
  18. [root@localhost ~]# yum update kernel
  19. #查看已经安装的内核列表
  20. [root@localhost ~]# yum list kernel -q
  21. 已安装的软件包
  22. kernel.x86_64 3.10.0-1160.el7 @anaconda
  23. kernel.x86_64 3.10.0-1160.25.1.el7 @updates
  24. [root@localhost ~]# reboot