Skip to content
lnf0701 edited this page Aug 2, 2015 · 10 revisions

主版本号:次版本号:修正号,次修正号 核心:/boot/vmlinuz-version 内核模块:/lib/modules/version /proc/sys,/sys echo val > /proc/sys/内核文件 sysctl -W kenerl.hostname='mail.zxhost.com'---(以/proc/sys为目录) 可以修改/etc/sysctl.conf ----永久有效,不可直接生效。如果立即生效执行sysctl -p, 注意:sysctl -a --显示所有内核参数。

看系统装载的模块:lsmod 装载模块:modprobe 模块名 卸载模块:modprobe -r 模块名 查看模块信息:modinfo 模块名(查看依赖关系)

装载模块:insmod /xx/xxx/xx(用modinfo查看路径) 移除模块:rmmod 模块名

tar -xf linux.xxx.gz -c /usr/src ln -sv linux-xxxx linux make menuconfig

可以采用系统的原有模板编译 cp /boot/config.xxx.el5 /usr/src/linux/.config

make make modules_install make install

二次编译:make clean, make mrproper 1,grub-install --root-directory=/mnt /dev/hda 2,cp /boot/vmlinuz-xxx.el5 /mnt/boot/vmlinuz 3,mkinitrd /boot/initrd-uname -r.img uname -r 需要修改这个文件 mv initrd-xxx.img initrd-xxx.img.gz gzip -d initrd-xxx.img.gz file initrd.xxx.img.gz mkdir test;cd test cpio -id < ../initrd.xxx.img 一个命令搞定:zcat /boot/initrd.xxx.img | cpio -id -----展开img文件,修改vi init;

find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz

vim /mnt/boot/grub/grub.conf default=0 timeout=5 title Unix root (hd0,0) kenerl /vmlinuz initrd /initrd.gz

创建系统需要的目录。 mdir etc/{rc.d/init.d} bin sbin proc sys dev lib root mnt media var/{log,run,lock/subsys} usr/{bin,sbin,local} tmp home opt boot -pv

cp /sbin/init /mnt/sysroot/sbin cp /bin/bash /mnt/sysroot/bin/bash ldd /sbin/init:复制对应的库文件到对应的目录。 ldd /bin/bash :同上。

vim /etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit

vi /etc/rc.d/rc.sysinit #!/bin/bash

echo -e "\t welcome to \033[31mzxhostmcom\033[0m linux" /bin/bash chmod +x rc.sysinit

脚本:

/etc/inittab: 设定默认运行级别 初始化系统文件

/etc/rc.d/rc.sysinit: 检测并以读写的方式重新挂载根文件系统; 设定主机名; 检测并挂载/etc/fatab中的其他文件系统 启动swap分区, 初始化外围硬件设备的驱动。 根据/etc/sysctl.conf设定内核参数; 激活udev和selinux 激活LVM和RAID设备 清理过期的锁和pid文件 装载键映射。

任务:完成一个真正的linux系统。必行谢谢 关机和重启,运行对应服务脚本,启动终端,运行用户,定义单用户模式, 装载网卡驱动,启动网络功能,提供一个web server

mount -n 挂载时不更新/etc/fstab文件。 cat /proc/mount mount -n -o remount,rw / exec:替换父进程,而不是当子进程执行, 当执行halt的时候,会切换到级别0,所以要配置对应级别的脚本, ''' 创建脚本:vim /etc/rc.d/rc.sysdown #!/bin/bash

sync sleep 2 sync exec /sbin/halt -p 创建脚本:vim /etc/rc.d/rc.reboot #!/bin/bash

sync,sleep 2,sync exec /sbin/reboot chmod +x {/sbin/rc.reboot,/sbin/rc.sysdown} 修改/etc/inittab 10:0:wait:/etc/rc.d/rc.sysdone
16:6:wait:/etc/rc.d/rc.reboot '''

vim /etc/rc.d/init.d/halt #!/bin/bash

case $0 in *reboot) command="/sbin/halt -p";; *halt) command="/sbin/reboot" ;; *) echo "ondy call this script by *reboot or *halt" ;; esac

case $1 in start) ;; stop) ;; *) echo "useage: basename $0{start|stop}" ;; esac

exec $command

chmod +x /etc/rc.d/init.d/halt

cd /etc/rc.d/init.d/ mkdir rc0.d rc6.d cd rc0.d ln -sv ../init.d/halt S99halt cd rc6.d ln -sv ../init.d/halt S99reboot

创建脚本:vi /etc/rc.d/rc #!/bin/bash

runlevel=$1 for i in /etc/rc.d/rc$runlevel.d/K*;do $i stop done

for i in /etc/rc.d/rc$runlevel.d/S*;do $i start done

修改/etc/inittab 10:0:wait:/etc/rc.d/rc 0 16:6:wait:/etc/rc.d/rc 6 13:3:wait:/etc/rc.d/rc 3 测试脚本: vi /etc/rc.d/init.d/tserver #!/bin/bash

chkconfig:35 66 33

description: test service script

. /etc/rc.d/init.d/functions #prog="basename $0" prog=tserver lockfile=/var/lock/subsys/$prog start(){ #echo "start $prog...." touch $lockfile [ $? -eq 0 ] && success "start $prog" || failure "starting $prog" }

stop(){ #echo "stop $prog....." rm -f $lockfile [ $? -eq 0 ] && success "stopping $prog" || failure "stopping $prog" }

status(){ if [ -f $lockfile ]; then echo "running...." else echo "stoped....." fi }

usage(){ echo "usage:$prog {start|stop|status|restart}" }

case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) usage exit 1 ;; esac chmod +x init.d/tserver

测试一下试试, mkdir /etc/rc.d/rc3.d cd rc3.d ln -sv ../init.d/tserver S66tserver cd rc6.d ln -sv ../init.d/tserver K33tserver cd rc0.d ln -sv ../init.d/tserver K33tserver

修改/etc/inittab.添加 --------启动两个终端 1:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty1 2:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty2 修改为: 1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1 2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2 当启动mingetty的时候,会再次启动login 另外一个终端:stty stty -F /dev/console size stty -F /dev/console speed
修改/etc/rc.d/rc.sysinit 删除/sbin/bash

以读写方式挂载根文件系统。 vim /etc/fstab /dev/hda2 / ext3 defaults 0 0 /dev/hda1 /boot ext3 defaults 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0

修改/etc/rc.d/rc.sysinit echo "remount rootfs...." mount -n -o remount,rw / echo "set the hostname...." [ -f /etc/syscofnig/network ] && . /etc/sysconfig/network 主机名: vi /etc/sysconfig/network HOATNAME="mail.zxhost.com"

如果在配置的时候文件系统坏了,方法就是打包文件系统,格式化后在解压文件到目录。 但是在解压前需要卸载,方法是:umount /dev/hda2 如果文件系统被占用:fuser -km /dev/hda2 再卸载:umount /dev/hda2 mke2fs -j /dev/hda2 zcat /root/xxx.gz | cpio -id

cat /etc/init.d/function 脚本编程知识:查看变量字符长度echo ${#A} stty -F /dev/console size | cut -d '' -f2 stty -F /dev/console size | awk '{print $2}' A = stty -F /dev/console size echo ${A#* } 从左向右 vi /etc/rc.d/init.d/function

#!/bin/bash

screen=stty -F /dev/console size 2> /dev/null columns=${screen#* } [ -z $columns ] &amp;&amp; columns=80 spa_col=$[$columns-14] ---这个数值是OK和failure占位字符数目。

red="\033[31m" green="\033[32m" normal="\033[0m" success(){ string=$1 rt_spa=$[$spa_col-${#string}] echo -n "$string" for i in seq 1 $rt_spa; do echo -n " " done echo -e "[ \033[32mOK\033[0m ]" }

failure(){ string=$1 rt_spa=$[$spa_col-${#string}] echo -n "$string" for i in seq 1 $rt_spa; do echo -n " " done echo -e "[ \033[31mFAILER\033[0m ]" } sucess "starint tserer....." success "string hello world ..." failure "stoping tserver....."

Clone this wiki locally