安裝 CentOS 后的系統配置及軟件安裝備忘
安裝 CentOS 后的系統配置及軟件安裝備忘
Table of Contents
- 1 Linux 自舉過程
- 1.1 啟動第一步(加載BIOS)
- 1.2 啟動第二步(讀取MBR)
- 1.3 啟動第三步(Boot Loader / Grup)
- 1.4 啟動第四步(加載內核)
- 1.5 啟動第五步(用戶層init依據inittab文件來設定運行等級)
- 1.6 啟動第六步(init進程執行rc.sysinit)
- 1.7 啟動第七步(啟動內核模塊)
- 1.8 啟動第八步(執行不同運行級別的腳本程序(/etc/rc.d/rc.$RUNLEVEL # $RUNLEVEL為缺省的運行模式))
- 1.9 啟動第九步(執行/etc/rc.d/rc.local)
- 1.10 啟動第十步(執行/bin/login程序,進入登錄狀態)
- 2 Linux 重要目錄說明
- 3 Make工具
- 4 操作系統安裝
- 5 網絡配置和管理
- 6 用戶管理
- 7 軟件安裝
- 8 用戶自定義配置
- 9 總結
1 Linux 自舉過程
1.1 啟動第一步(加載BIOS)
當你打開計算機電源,計算機會首先加載BIOS信息,BIOS信息是如此的重要,以至於計算機必須在最開始就找到它。這是因為BIOS中包含了CPU的相關信息、設備啟動順序信息、硬盤信息、內存信息、時鍾信息、PnP特性等等。在此之后,計算機心里就有譜了,知道應該去讀取哪個硬件設備了。
1.2 啟動第二步(讀取MBR)
硬盤上第0磁道第一個扇區被稱為MBR,也就是Master Boot Record,即主引導記錄,它的大小是512字節,別看地方不大,可里面卻存放了預啟動信息、分區表信息。
系統找到BIOS所指定的硬盤的MBR后,就會將其復制到0x7c00地址所在的物理內存中。其實被復制到物理內存的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。
1.3 啟動第三步(Boot Loader / Grup)
Boot Loader 就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核做好一切准備。
Boot Loader有若干種,其中Grub、lilo和spfdisk是常見的Loader。
我們以grub為例來講解吧,畢竟用lilo和spfdisk的人並不多。
系統讀取內存中的grub配置信息(一般為menu.lst或grub.lst),並依照此配置信息來啟動不同的操作系統。
1.4 啟動第四步(加載內核)
根據grub設定的內核映像所在路徑,系統讀取內存映像,並進行解壓縮操作。此時,屏幕一般會輸出“Uncompressing Linux”的提示。當解壓縮內核完成后,屏幕輸出“OK, booting the kernel”。
系統將解壓后的內核放置在內存之中,並調用startkernel()函數來啟動一系列的初始化函數並初始化各種設備,完成Linux核心環境的建立。至此,Linux內核已經建立起來了,基於Linux的程序應該可以正常運行了。
1.5 啟動第五步(用戶層init依據inittab文件來設定運行等級)
內核被加載后,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,並依據此文件來進行初始化工作。
其實/etc/inittab文件最主要的作用就是設定Linux的運行等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要運行在等級5上。Linux的運行等級設定如下:
- 0: 關機
- 1: 單用戶模式
- 2:無網絡支持的多用戶模式
- 3:有網絡支持的多用戶模式
- 4:保留,未使用
- 5:有網絡支持有X-Window支持的多用戶模式
- 6:重新引導系統,即重啟
1.6 啟動第六步(init進程執行rc.sysinit)
在設定了運行等級后,Linux系統執行的第一個用戶層文件就是/etc/rc.d/rc.sysinit腳本程序,它做的工作非常多,包括設定PATH、設定網絡配置(/etc/sysconfig/network)、啟動swap分區、設定/proc等等。如果你有興趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的腳本夠你看幾天的。
1.7 啟動第七步(啟動內核模塊)
具體是依據/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內核模塊。
1.8 啟動第八步(執行不同運行級別的腳本程序(/etc/rc.d/rc.$RUNLEVEL # $RUNLEVEL為缺省的運行模式))
根據運行級別的不同,系統會運行rc0.d到rc6.d中的相應的腳本程序,來完成相應的初始化工作和啟動相應的服務。
1.9 啟動第九步(執行/etc/rc.d/rc.local)
你如果打開了此文件,里面有一句話,讀過之后,你就會對此命令的作用一目了然:
rc.local就是在一切初始化工作后,Linux留給用戶進行個性化的地方。你可以把你想設置和啟動的東西放到這里。
1.10 啟動第十步(執行/bin/login程序,進入登錄狀態)
此時,系統已經進入到了等待用戶輸入username和password的時候了,你已經可以用自己的帳號登入系統了。
2 Linux 重要目錄說明
根目錄()下一般有如下目錄 * bin 可執行文件目錄
- sbin/ 與/bin/目錄一樣放置可執行文件,不過一般是root用戶才用到的可執行文件。
- usr/
- boot/
- etc/
- proc/
- dev/ 設備文件目錄。
- home/ 用戶目錄。
- lib/ 或 lib64/ 庫文件目錄。
- lost+found/ 回收目錄。
- media/
- mnt/ 掛載設備對應的設備文件。
- opt/
- root/ root用戶的用戶目錄。
- selinux/
- srv/
- sys/ 系統目錄。
- tmp/ 臨時目錄。該目錄的訪問權限為0777,也就是說任何用戶對該目錄都有全部的訪問權限。
- var/
3 Make工具
我們可以利用 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
4 操作系統安裝
4.1 安裝鏡像獲取
可從 https://www.centos.org/download/ 下載 CentOS 安裝鏡像。我用的是 CentOS 7。
4.2 操作系統安裝
可選方式有:
- DVD光盤安裝
- USB安裝
- 安裝到虛擬機中
4.3 鏡像地址設置
可從 https://www.centos.org/download/mirrors/ 官網上查看有哪些可用的鏡像地址。下面以將鏡像地址設置為阿里雲鏡像來說明設置步驟:
- step 1. 備份 當鏡像失效時,可重新使用原始鏡像
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- step 2. 下載新的CentOS-Base.repo 到/etc/yum.repos.d/ 此處用的是阿里雲鏡像
# 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
- step 3. 之后運行 yum clean all && yum makecache 生成緩存
另外需要說明的是,很多系統鏡像在安裝完成后默認是沒有開啟網絡功能的,我們需要配置並開啟網絡功能后才能執行此步操作。
5 網絡配置和管理
安裝 CentOS 7 時,選擇了 minimal install 的話,是沒有安裝網絡組件的。所以,ifconfig 之類的命令式沒有的,在配置好網絡功能后可以通過如下命令來安裝網絡組件:
yum install -y net-tools
另外也可以用 ip 命令來替代 ifconfig 使用。
5.1 配置IP地址
目錄/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 # 網關
5.2 配置DNS
/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。
5.3 主機名稱配置
vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=liuy
5.4 常用命令
5.4.1 /etc/init.d/network restart
若重新配置了IP和DNS可使用該命令使修改生效。
5.4.2 netstat
netstat命令用於顯示網絡連接、路由表和網絡接口的信息,可以讓用戶查看系統當前的網絡連接情況。
network命令各選項所對應的功能:
| -a | 顯示所有套接字的狀態 |
| -n | 打印數字IP地址 |
| -o | 顯示關聯進程 |
| -o | 打印路由選擇表 |
5.4.3 traceroute
traceroute命令用於追蹤網絡包的發送路徑。
5.4.4 tcpdump
用於網絡抓包。
6 用戶管理
在安裝好操作系統並配置完網絡地址后,接下來,我們在系統中添加普通用戶。
添加用戶的命令如下:
useradd user
之后為該用戶設置密碼:
passwd user
如果我們需要查看系統下的所有用戶或組信息可用如下命令:
| cat /etc/passwd | 查看所有用戶信息 |
| cat /etc/group | 查看所有組信息 |
有時候,普通用戶需要臨時做一些超級用戶才有權限做的事情,例如,安裝軟件。我們可以通過賦予普通用戶 sudoer 身份的方式來達到此目的。賦予普通用戶 sudoer 身份只需在 /etc/sudoer 添加一行:
user ALL=(ALL) ALL
7 軟件安裝
7.1 版本管理軟件
7.1.1 Git安裝
yum install -y git
7.1.2 將本機的 SSH Key 注冊到 GitHub
具體步驟如下:
- step 1. 查看本機是否已有 SSH Keys 如果在目錄 ~/.ssh 下有 idrsa.pub 文件,則表明本機已有 SSH Keys,此時可以跳過第 2 步。
- step 2. 生成新的 SSH Key 輸入如下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按照提示一步步往下走即可。
- step 3. 將 SSH Key 添加到 ssh-agent
ssh-add ~/.ssh/id_rsa
- step 4. 將 SSH Key 添加到你的 GitHub 賬戶
執行完上面的操作我們就可以連接到個人的 GitHub 倉庫了,我們可以先用如下命令測試一下:
ssh -T git@github.com
7.2 編譯器
- gcc/g++ 安裝命令:
yum install -y gcc gcc-g++
- clang 早期的 CentOS 版本不能通過 yum 的方式安裝 clang,所以只能通過源碼安裝。通過源碼安裝 clang 比較繁瑣,依賴庫多,編譯也慢。而在 CentOS 7 中我們通過下面的命令就能完成 clang 的安裝:
yum install -y clang
7.3 Emacs
7.3.1 Emacs安裝
- 源碼安裝
- step 1. 源碼下載 打開鏈接 https://www.gnu.org/software/emacs/history.html ,下載 24.3 的版本。
- step 2. 依賴庫安裝 Emacs24.3 所需的依賴庫如下:
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
- step 3. 編譯、安裝 跟大部分 Linux 下開源軟件的源碼安裝步驟一樣:./configure && make && make install
- yum 安裝
yum install -y emacs
7.3.2 Emacs 配置
7.4 一鍵安裝
我們可以通過 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 已安裝到了系統中。
8 用戶自定義配置
8.1 bash腳本
當我們執行命令 la ~ 時,會發下如下幾個文件:
- .bash_profile .bash_profile是關聯具體用戶的,它會在相關用戶登錄時被執行。我們可以在該文件中寫入腳本程序來實現個性化配置。另外,使用 source 命令可使變更立即生效。
# .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 該文件實際是通過.bash_profile來加載的,主要用於加載系統 /etc/bashrc 腳本以及配置命令別名等。
# .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
# ~/.bash_logout
- .bash_history 記錄相關用戶的歷史命令。
git st git add -A . git st
8.2 git
用戶目錄下有一個 .gitconfig 文件,我們可以通過修改該文件來實現我們的個性化定制。
8.3 一鍵配置
我們事先定義好個人的配置文件,然后,在 Makefile 寫入安裝程序,跟一鍵配置相關的 Makefile 腳本如下:
.Phony:all
all:conf
conf:
cp ./bash/.bash_profile ~/
cp ./bash/.bashrc ~/
cp ./bash/.bash_logout ~/
cp ./gitconf/.gitconfig ~/
9 總結
CentOS 是目前生產環境中常用的服務器系統,本文從開發人員角度出發,旨在構建基於 CentOS 7 的開發環境。本文所涉及的各個操作,步驟總結如下:
- step 1. 網絡配置。 CentOS 7 在 minimal 模式下安裝完成時默認是關閉了網絡功能的,我們需要將其打開並配置好網絡地址,以便完成接下來的操作。
- step 2. yum 鏡像地址設置。 此步驟為可選,但在大陸使用原始的國外鏡像地址貌似有點慢,所以強烈推薦使用國內鏡像。
- step 3. 添加普通用戶。 就算是自己用來練習的操作系統也不要總是工作在 root 用戶下,一是可以避免誤操作,二是在生產環境下大部分人都沒有服務器的根用戶密碼。添加了普通用戶之后,我們可以通過遠程工具連接服務器來完成接下來的操作。
- step 4. 手工安裝 Git,並將本機的 SSH Key 注冊到 GitHub 上的個人賬戶上。
- step 5. 簽出我個人的 CentOSConf 倉庫 地址: https://github.com/ruleless/CentOS_Conf ,該倉庫下有我已經寫好的 Makefile 安裝腳本,執行 Make 即可進入自動安裝。
執行完上面的操作之后,我們還需要手工安裝一些必須得通過源碼安裝的軟件。當前主要包括:
- GNU Global GNU GLOBAL is a source code tagging system that works the same way across diverse environments, such as Emacs editor, Vi editor, Less viewer, Bash shell, various web browsers, etc.
