当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以致于计算机必须在最开始就找到它。这是由于BIOS中包含了 CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此以后,计算机内心就有谱了,知道应该去读取哪一个硬件设备了。html
硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。python
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。linux
Boot Loader 就是在操做系统内核运行以前运行的一段小程序。经过这段小程序,咱们能够初始化硬件设备、创建内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操做系统内核作好一切准备。git
Boot Loader有若干种,其中Grub、lilo和spfdisk是常见的Loader。github
咱们以grub为例来说解吧,毕竟用lilo和spfdisk的人并很少。web
系统读取内存中的grub配置信息(通常为menu.lst或grub.lst),并依照此配置信息来启动不一样的操做系统。shell
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操做。此时,屏幕通常会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。小程序
系统将解压后的内核放置在内存之中,并调用startkernel()函数来启动一系列的初始化函数并初始化各类设备,完成Linux核心环境的创建。至此,Linux内核已经创建起来了,基于Linux的程序应该能够正常运行了。centos
内核被加载后,第一个运行的程序即是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工做。缓存
其实/etc/inittab文件最主要的做用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就代表Linux须要运行在等级5上。Linux的运行等级设定以下:
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它作的工做很是多,包括设定 PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。若是你有兴趣,能够到/etc /rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的。
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
根据运行级别的不一样,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工做和启动相应的服务。
你若是打开了此文件,里面有一句话,读过以后,你就会对此命令的做用一目了然:
rc.local就是在一切初始化工做后,Linux留给用户进行个性化的地方。你能够把你想设置和启动的东西放到这里。
此时,系统已经进入到了等待用户输入username和password的时候了,你已经能够用本身的账号登入系统了。
根目录()下通常有以下目录 * bin 可执行文件目录
咱们能够利用 Make 工具帮助咱们自动完成大部分繁琐且重复的配置及安装工做。大体上, Make 程序依以下流程工做:
if target is a leaf then return fi bExecuteCommand = false if target isn not exists then bExecuteCommand = true fi for file in all dependency files; do make(file) if file is newer than target then bExecuteCommand = true fi done if bExecuteCommand then Execute Command fi
可从 https://www.centos.org/download/ 下载 CentOS 安装镜像。我用的是 CentOS 7。
可选方式有:
可从 https://www.centos.org/download/mirrors/ 官网上查看有哪些可用的镜像地址。下面以将镜像地址设置为阿里云镜像来讲明设置步骤:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo # CentOS 6 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # CentOS 7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
另外须要说明的是,不少系统镜像在安装完成后默认是没有开启网络功能的,咱们须要配置并开启网络功能后才能执行此步操做。
安装 CentOS 7 时,选择了 minimal install 的话,是没有安装网络组件的。因此,ifconfig 之类的命令式没有的,在配置好网络功能后能够经过以下命令来安装网络组件:
yum install -y net-tools
另外也能够用 ip 命令来替代 ifconfig 使用。
目录/etc/sysconfig/network-scripts下有名为ifcfg-eth0的脚本,它配置了网络接口eth0的各项属性
HWADDR=00:0C:29:D4:D9:DD TYPE=Ethernet UUID=b9736563-22f5-42d5-9f41-9cd6c3e22683 ONBOOT=yes # 操做系统安装完成时,该选项默认为no,咱们须要手工改成yes才能启用系统的网络功能 NM_CONTROLLED=yes BOOTPROTO=static # 指定IP地址为静态IP(static)或动态IP(DHCP) IPADDR=192.168.1.109 # IP地址(BOOTPROTO=static时有效) NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 网关
/etc目录下有名为resolv.conf的脚本,由它来指定本机的DNS服务器
; generated by /sbin/dhclient-script nameserver 202.96.128.166 nameserver 202.96.134.133
初始时,该文件为空,因此,若是咱们在一开始就将网络接口配置为 static 方式(见 /etc/sysconfig/network-scripts/ifcfg-etho0 文件的 BOOTPROTO 选项),那么,咱们仍是不能访问外网。因此,咱们能够先将 BOOTPROTO 选项配置为 dhcp,等到咱们执行 /etc/init.d/network restart 命令自动生成了 DNS 服务器地址后,再将 BOOTPROTO 改成 static。
vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=liuy
若从新配置了IP和DNS可以使用该命令使修改生效。
netstat命令用于显示网络链接、路由表和网络接口的信息,可让用户查看系统当前的网络链接状况。
network命令各选项所对应的功能:
-a | 显示全部套接字的状态 |
-n | 打印数字IP地址 |
-o | 显示关联进程 |
-o | 打印路由选择表 |
traceroute命令用于追踪网络包的发送路径。
用于网络抓包。
在安装好操做系统并配置完网络地址后,接下来,咱们在系统中添加普通用户。
添加用户的命令以下:
useradd user
以后为该用户设置密码:
passwd user
若是咱们须要查看系统下的全部用户或组信息可用以下命令:
cat /etc/passwd | 查看全部用户信息 |
cat /etc/group | 查看全部组信息 |
有时候,普通用户须要临时作一些超级用户才有权限作的事情,例如,安装软件。咱们能够经过赋予普通用户 sudoer 身份的方式来达到此目的。赋予普通用户 sudoer 身份只需在 /etc/sudoer 添加一行:
user ALL=(ALL) ALL
yum install -y git
具体步骤以下:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按照提示一步步往下走便可。
ssh-add ~/.ssh/id_rsa
执行完上面的操做咱们就能够链接到我的的 GitHub 仓库了,咱们能够先用以下命令测试一下:
ssh -T git@github.com
yum install -y gcc gcc-g++
yum install -y clang
yum -y groupinstall "Development Tools" yum -y install gtk+-devel gtk2-devel yum -y install libXpm-devel yum -y install libpng-devel yum -y install giflib-devel yum -y install libtiff-devel libjpeg-devel yum -y install ncurses-devel yum -y install gpm-devel dbus-devel dbus-glib-devel dbus-python yum -y install GConf2-devel pkgconfig yum -y install libXft-devel
yum install -y emacs
咱们能够经过 Make 实现软件的一键安装,包括 Emacs 的自动配置。下面给出 Makefile 脚本:
.Phony:all all:software emacsconf software: yum install -y gcc gcc-g++ yum install -y clang yum install -y emacs emacsconf: cd emacscfg && $(MAKE)
观察到,咱们并无在 Makefile 中写入 Git 的安装脚本。这是由于咱们的 Makefile 文件是托管到 GitHub 中的,因此,咱们须要先安装好 Git 以后才能签出该脚本文件;因此在执行该脚本文件的时候 Git 已安装到了系统中。
当咱们执行命令 la ~ 时,会发下以下几个文件:
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:. export PATH # ssh start eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa
# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi alias ll="ls -ls" alias la="ls -a" alias pa="ps -ejf" alias g="git" # User specific aliases and functions
# ~/.bash_logout
git st git add -A . git st
用户目录下有一个 .gitconfig 文件,咱们能够经过修改该文件来实现咱们的个性化定制。
咱们事先定义好我的的配置文件,而后,在 Makefile 写入安装程序,跟一键配置相关的 Makefile 脚本以下:
.Phony:all all:conf conf: cp ./bash/.bash_profile ~/ cp ./bash/.bashrc ~/ cp ./bash/.bash_logout ~/ cp ./gitconf/.gitconfig ~/
CentOS 是目前生产环境中经常使用的服务器系统,本文从开发人员角度出发,旨在构建基于 CentOS 7 的开发环境。本文所涉及的各个操做,步骤总结以下:
执行完上面的操做以后,咱们还须要手工安装一些必须得经过源码安装的软件。当前主要包括:
Date: 2015-12-06T20:45+0800