判官007 发表于 2018-5-10 09:20:27

redhat 5 系列 diy mini linux 之一

  

  用户空间访问、监控内核的方式:
  /proc,/sys
  伪文件系统:
  /proc/sys:此目录中的文件很多事可读写的
  /sys/:某些文件可写
  

  设定内核参数值得方法:
  echo VALUE>/proc/sys/TO/SOMEFILE
  sysctl -w kernel.hostname=HOSTNAME   这里的写法相当于
  echo HOSTNAME > /proc/sys/kernel/hostname
  永久有效:/etc/sysctl.conf 修改完立即生效: sysctl -p
  sysctl -a:显示所有内核参数以及值
  

  内核模块管理:
  lsmod:查看

  modprobe MOD_NAME 装载某模块

  modprobe -r MOD_NAME 卸载某模块

  modinfo:查看模块的具体信息

  insmod /PATH/TO/MODULE_FILE    装载模块
  rmmod    MOD_NAME

  depmod    /PATH/TP/MODILES_DIR

  

  内核的编译:
  编译的3种选择:
  1.不使用此功能

  2.编译成内核模块

  3.编译进内核

  

  如何手动编译内核:
  make gconfig:Gnome桌面使用,需安装图形开发库工具

  make kconfig:KDE桌面使用

  make menuconfig:文件界面
  (默认我们选择完后,会在编译内核的目录下生成.config文件,不想一个一个选的话也可以拷贝/boot/config-`uname -r` 文件到当前,并更名为.config,然后再选择修改)
  make

  make module

  make module_install

  make install

  

  二次编译时清理,清理前,有需要的话记得备份.config
  make clean      删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译
  make mrproper   删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件
make distcleanmrproper删除的文件, 加上编辑备份文件和一些补丁文件。
  

  下面开始diy mini linux

[*]  給虚拟机挂载新的硬盘
  过程略
  

[*]  给新硬盘分区、格式化、并挂载

  mke2fs -j /dev/sdb1
  mke2fs -j /dev/sdb2
  mkdir /mnt/{boot,sysroot} -p
  mount /dev/sdb1/mnt/boot
  mount /dev/sdb2/mnt/sysroot
  

[*]  安装boot分区并提供grub.conf文件
  grub-install--root-directory=/mnt/ /dev/sdb
  (这里的目录指定的是新硬盘boot目录所在的父目录,完成后会在boot里面生成grub文件目录)

  

  

  4.复制内核和initrd文件到/boot下
  cp /boot/vmlinuz-`uname -r`/mnt/boot/vmlinuz
  (initrd文件不能直接用,需要修改几个地方,因此我们先解压到某个目录)

  mkdir /mnt/init

  cd /mnt/init

  zcat/boot/initrd-`uname -r`.img |cpio -id
  vi /mnt/init/init修改以下几项:


  (lvm我们暂时不需要用到,所以先注销掉,mkrootdev里面的设备要注意一点,我们当前系统上已有sda,所以识别新硬盘为sdb,但是新硬盘单独用的时候会被识别为sda,而根文件系统所在分区为第2个分区,所以这里要替换成/dev/sda2)

  find . |cpio -H NEWC --quiet -o|gzip -9 >/mnt/boot/initrd.img
  

  5.创建根文件系统,并拷贝程序:
  mkdir bin sbin boot etc/{rc.d,init.d} usr/{local,bin,sbin,lib} lib lib64 proc sys dev tmp home -p
  (为了节约时间,写了个脚本,直接拷贝 bash 、init、ls等命令)



  测试是否可以chroot

  

  6.提供配置文件inittab,和rc.sysinit
  vi/mnt/sysroot/etc/inittab添加如下两行即可:
  id:3:initdefault:
  si::sysinit:/etc/rc.d/rc.sysinit
  

  vi/mnt/sysroot/etc/rc.d/rc.sysinit

  chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit
  

  7.至此,一个不怎么完善的mini linux 已经可以启动了,下一篇再谈谈怎么执行运行级别人物和挂载根分区为读写,让系统可以开关机等,现在先测试,应该可以启动了的。


  
页: [1]
查看完整版本: redhat 5 系列 diy mini linux 之一