安裝 CentOS 後的系統配置及軟件安裝備忘

1 Linux 自舉過程

1.1 啓動第一步(加載BIOS)

當你打開計算機電源,計算機會首先加載BIOS信息,BIOS信息是如此的重要,以致於計算機必須在最開始就找到它。這是由於BIOS中包含了 CPU的相關信息、設備啓動順序信息、硬盤信息、內存信息、時鐘信息、PnP特性等等。在此以後,計算機內心就有譜了,知道應該去讀取哪一個硬件設備了。html

1.2 啓動第二步(讀取MBR)

硬盤上第0磁道第一個扇區被稱爲MBR,也就是Master Boot Record,即主引導記錄,它的大小是512字節,別看地方不大,可裏面卻存放了預啓動信息、分區表信息。python

系統找到BIOS所指定的硬盤的MBR後,就會將其複製到0x7c00地址所在的物理內存中。其實被複制到物理內存的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。linux

1.3 啓動第三步(Boot Loader / Grup)

Boot Loader 就是在操做系統內核運行以前運行的一段小程序。經過這段小程序,咱們能夠初始化硬件設備、創建內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操做系統內核作好一切準備。git

Boot Loader有若干種,其中Grub、lilo和spfdisk是常見的Loader。github

咱們以grub爲例來說解吧,畢竟用lilo和spfdisk的人並很少。web

系統讀取內存中的grub配置信息(通常爲menu.lst或grub.lst),並依照此配置信息來啓動不一樣的操做系統。shell

1.4 啓動第四步(加載內核)

根據grub設定的內核映像所在路徑,系統讀取內存映像,並進行解壓縮操做。此時,屏幕通常會輸出「Uncompressing Linux」的提示。當解壓縮內核完成後,屏幕輸出「OK, booting the kernel」。小程序

系統將解壓後的內核放置在內存之中,並調用startkernel()函數來啓動一系列的初始化函數並初始化各類設備,完成Linux核心環境的創建。至此,Linux內核已經創建起來了,基於Linux的程序應該能夠正常運行了。centos

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 操做系統安裝

可選方式有:

  1. DVD光盤安裝
  2. USB安裝
  3. 安裝到虛擬機中

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.

Date: 2015-12-06T20:45+0800

相關文章
相關標籤/搜索