您的位置:首页 > 运维架构 > Linux

Linux基础知识汇总(3)...持续更新中

2014-03-13 22:14 661 查看
内核管理: {
内核的功能 {
进程: Task_Struct (任务结构定义)  Scheduler (任务调度)
内存: 分配 回收 碎片整理
I/O: 中断及处理(读写)
文件系统: 管理文件系统内容与内存交互
驱动程序: 硬件运行交互
}
内核设计流派 {
单内核: 单一体系结构  linux 采用模块化设计(动态装卸)
微内核: 内核子系统  win
fork(): init 负责管理用户空间的进程  /sbin/init
}
linux启动初始化 {
1. post阶段 固化在ROM中
2. BIOS自检启动 (boot sequence)
3. MBR(bootloader) 装机时写入第一个盘符
4. MBR引导内核启动 initrd,initramfs
5. init进程启动 (upstat)
pre   /etc/init/rcS.conf
/etc/rc.d/rc.sysinit
post  /etc/inittab  == /etc/init/rc.conf
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
系统初始化脚本/etc/rc.d/rc.sysinit
设置主机名
打印文本欢迎信息
激活SELinux和udev
激活swap
挂载/etc/fstab定义的本地文件系统
检测根文件系统并对其以读写方式重新挂载
设置系统时钟
装载键盘映射
根据/etc/sysctl.conf设置内核参数
激活RAID和LVM设备
清理操作
}
MBR,GPT {
引导加载程序  (早期  LILO)
GRUB 分为3个阶段   1st,1.5st,2st stage
1st 为了引导2st
1.5st 识别文件系统
2st 位于boot分区中,grub引导
grub 可选择启动的系统  可交互  可密码保护
grub conf  /boot/grub/grub.conf
default: 是否默认启动
timeout: 默认启动延时
splashimage: /path 启动图片
hiddenmenu: 隐藏菜单
password: 密码保护
title ""  可自定义启动标题
root(hd0,0)
kernel /path ro root=/path/to/device quiet  内核boot目录
init=/path  路径    selinux=0
initrd /cpio归档文件
grub损坏维护
grub配置损坏
启动阶段 -e 编辑
kernel /path ro root=/path/to/device quiet init=/bin/bash
进入bash模式修正grub.conf文件
grub彻底损坏
进入救援模式
chroot /mnt/sysimage
grub-install --root-directory=/ /dev/sda
exit
}
内核模块 {
单内核,支持模块动态加载与装卸  /lib/moduals/版本/kernel/
查看信息
lspci 查看pci信息
lsblk 查看所有磁盘信息
lsmod 加载的驱动信息
lscpu cpu信息
lsusb 所有usb信息
modinfo [模块名称] (查询模块所有信息) 关注 depends  license  filename
modprobe [-r 模块名称]  卸载模块(自动探索)
modprobe [模块名称]   装载模块(自动探索)
rmmod [-f 模块名称]   强制卸载模块
insmod [path]  装载模块指定路径
}
编译源码 {
rpmsrc:
1. 创建mockbuild用户
2. 安装src.rpm包
3. rpmbuild  -> source
4. rpmbuild -bb rpmbuild/specs/nginx.spec
内核编译: (初次编译选择默认配置)
1. cp /boot/config-2.6.32-431.el6.x86_64 /usr/src/linux/.config
2. make menuconfig(调整编译选项   * 编译到内核中  M 模块形式存在)
3. make -j 4  多线程编译  或  make bzImage  仅编译内核
4. 为新磁盘安装MBR
make clean  删除编译生成文件.o,不删除配置文件
make mrproper  完全删除
make disclean  重置代码树
编译部分目录
make /path/to/dir
编译部分模块
make -M /path/to/modual
编译单一模块
make /path/to/modual/*.ko -o /path/to/output
交叉编译
make ARCH=arm
screen的使用
screen  新建一个命令窗口
Ctrl+A , D  隐藏新建窗口
screen [-ls]   查看所有的窗口
screen [-r 编号]  恢复窗口
内核调优: /proc/sys   kernel  net vm fs  都是伪文件系统
所有   echo "value" > /path/to/file
sysctl [-a] 所有内核参数
sysctl [-w 参数名称] = value
配置文件   /etc/sysctl.conf
设备文件:  udev 基于系统自动探查
tmpfs  /dev/shm  tmpfs   defaults        0 0
mknod -m 660 /dev/testdev b 100 0   手动创建设备文件
}
}


sed初步: {
sed 是一个行编辑器,每次读取一行到内存中来进行处理并输出
sed [options] 'script' file
-n 静默模式
-r 拓展的正则表达式
-f 加载文件脚本
-e 可连续执行script
-i 可直接读写文件
COMAND d 删除 p 打印(默认) i/a \text 匹配的前后添加内容
r /path/to/file 插入文件内容 w /path/to/file 保存到
= 匹配内容的行号
<a>s/<b>/<c>/[g/i]  查找替换模式
a: 可定界
b: 查找内容
c: 替换内容  \1 引用替换
g: 全局模式
i: 忽略大小写
例:
sed '/^\/\//d' /etc/named.conf  删除named.conf中所有的以//开头的行
}


awk初步: {
awk 是一个报告生成器,可以将选中内容的每行每列进行格式化
awk [options] 'script' file
awk [options] '/pattern/{action}' file
-f 脚本文件
-F 分割符
定界模式: 默认全部文件
/part1/,/part2/
/pattern/
表达式  > >= < <= == != ~
BEGIN/END:
执行前/后操作
awk -F: '{print $1}' /etc/passwd
}


Linux系统的安装: (自动化){
安装方式可分为三种
1. 光盘MBR bootloader
2. 网络设备 基于PXE或者Cobbler
3. 可移动设备
1. 光盘制作过程
a) 以当前最微系统的安装过程为蓝本 cp ~/anaconda-ks.cfg ~/ks.cfg
b) 修正 ks 参数 , 以及安装需要的所有工具
详细参见 Red_Hat_Enterprise_Linux-5-Installation_Guide-en-US.pdf
# Kickstart file automatically generated by anaconda.
#version=DEVEL
text
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$pcYzFDFOq/kCTHmk$r/4JaQm8qav2X1OfAh5S/uTH.V0JIxFZoef5FhU10Ox53TBsH1IXeelSc5xIM/0gfWYD7OWDdGjttFOlBvy400
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc America/New_York
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
zerombr
clearpart --all
volgroup VolGroup --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=VolGroup --grow --size=992 --maxsize=992
part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
%packages --nobase
@core
%end
c) 制作光盘
#!/bin/bash
#
[ -e "/root/myiso/packages" ] || mkdir -p /root/myiso/packages
[ -e "/root/myiso/linuxiso" ] || mkdir -p /root/myiso/linuxiso
cd /root/myiso/packages
#yum list | grep "^[^[:space:]].*@" | awk '{print "172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/Packages/"$1".rpm"}' | xargs wget -q
cat /root/install.log | grep "^Installing" | awk '{print "172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/Packages/"$2".rpm"}' | xargs wget
cd /root/myiso/linuxiso
echo "mirror" | lftp "http://172.16.0.1/cobbler/ks_mirror/centos-6.4-x86_64/isolinux"
cp /root/iso.cfg /root/myiso/
sed -i "s/\(^[[:space:]]\{2\}append.*img$\)/\\1 ks=cdrom:\/iso.cfg/" /root/myiso/linuxiso/isolinux.cfg
cd /root/myiso
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.5 x86_64 boot" -b linuxiso/isolinux.bin -c linuxiso/boot.cat -o /root/centos6.4.iso  ~/myiso
2. 网络设备 PXE
基于DHCP 与 TFTP + Web服务器
a) 建立 dhcp 引导网络中的设备   etc/dhcp/dhcpd.conf
subnet 172.16.43.0 netmark 255.255.255.0 {
range 172.16.43.1 172.16.43.50;
}
b) 在动态为客户端分配IP后  指向 nextserver为 tftp isolinux所在路径
/var/lib/tftpboot/下的pxelinux.0
subnet 172.16.43.0 netmark 255.255.255.0 {
range 172.16.43.1 172.16.43.50;
next-server 10.0.0.100
filename "pxelinux.0"
}
c) 安装启动 xinetd tftp-server tftp 并chkconfig服务
d) 安装httpd 将安装树绑定到httpd的目录下
先挂载在绑定  mount --bind /media /var/www/html/centos6
e) 安装syslinux
f) 拷贝如下文件
// boot.msg  init文件初始化文件系统  dhcp引导安装文件  引导配置文件  背景图       vesamenu.c32    内核
// boot.msg  initrd.img            pxelinux.0    pxelinux.cfg  splash.jpg  vesamenu.c32  vmlinuz
# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/
# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default
g) 网络引导 pxelinux.cfg中加入
ks=http://HTTP_SERVER_IP/ks.cfg
日志??
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息