2012年1月5日 星期四

CentOS 5.x-初始環境設定

前言

以下前言內容擷於 [CentOS - Wikipedia]
CentOS(Community ENTerprise Operating System)是 Linux發行版之一,它是來自於 Red Hat Enterprise Linux 依照開放原始碼規定釋出的原始碼所編譯而成。由於出自同樣的原始碼,因此有些要求高度穩定性的伺服器以 CentOS 替代商業版的 Red Hat Enterprise Linux 使用。兩者的不同,在於 CentOS 並不包含封閉原始碼軟體,簡單說就是不用錢的 RHEL 不過享受自由當然也得不到商業支援了。

實作環境

  • CentOS 5.x
    • CentOS 5.2 64 bit (Linux 2.6.18-92.el5)
    • CentOS 5.1 32 bit (Linux 2.6.18-53.el5)

安裝及設定

以下相關設定為個人在安裝 CentOS 之後常用的一些設定,至於如何安裝 CentOS? 由於網路上文件夠多了所以就不重新造輪子了,要注意的大概就是 /var 不要切太小因為使用 yum update 時暫存資料都放在 /var/cache/yum,其它都差不多...那就開始吧。

設定 IP Address

選擇下列其中之一方式設定後,重新啟動網卡服務 (看要打字少還是字多的吧)
#/etc/rc.d/init.d/network restart   //方式一
 #service network restart            //方式二 (service => /etc/rc.d/init.d/)

方式一、文字對話模式安裝

#system-config-network

方式二、修改檔案

#cat /etc/sysconfig/network-scripts/ifcfg-eth0
 DEVICE=eth0                         //網路卡名稱
 BOOTPROTO=static                    //BOOTP協定
 BROADCAST=192.168.202.255           //廣播 IP Address
 HWADDR=00:15:C5:E5:99:B1            //MAC Address
 IPADDR=192.168.202.100              //IP Address
 NETMASK=255.255.254.0               //Netmask (遮罩)
 NETWORK=192.168.202.0               //網段
 ONBOOT=yes                          //開機自動啟動

關閉 SELinux

Linux 核心是 2.6 以上的就會自動載入 SELinux,但因為才剛開始玩 CentOS 對它還不熟為了減少挫折就先關了吧,等以後熟點再說,關於 SELinux 是什可以參考這三篇詳細的說明。
關閉 SELinux 設定值
#vi /etc/sysconfig/selinux
 SELINUX=enforcing                            //預設值 (阻擋不安全的有取行為)
 SELINUX=disabled                             //修改後 (關閉 SELinux 功能)
如何查看目前系統的 SELinux 狀態?
#sestatus
 SELinux status:                 enabled      //可知目前系統啟用 SELinux
 SELinuxfs mount:                /selinux
 Current mode:                   permissive
 Mode from config file:          disabled
 Policy version:                 21
 Policy from config file:        targeted
以下訊息可知目前系統已關閉 SELinux 功能
#sestatus
 SELinux status:                 disabled

新增使用者、搬移家目錄、設定使用的 shell

我習慣把 user 放在同一個資料夾下(/home/user),而 CentOS 的 adduser 指令預設會把使用者家目錄建立在 /home 下 (也就是 /home/weithenn)。
#mkdir /home/user                          //建立放置所有使用者家目錄的資料夾
 #adduser -d /home/user/weithenn weithenn   //指定家目錄位置、新增使用者名稱 weithenn
 #passwd weithenn                           //設定使用者 weithenn 密碼
 Changing password for user weithenn.
 New UNIX password:                         //輸入密碼
 Retype new UNIX password:                  //再輸入一次密碼以確認
 passwd: all authentication tokens updated successfully.
CentOS 預設支援的 Shell 如下,而我個人是喜歡使用 tcsh shell
#cat /etc/shells
 /bin/sh
 /bin/bash
 /sbin/nologin
 /bin/tcsh
 /bin/csh
 /bin/ksh
修改使用者家目錄路徑及 shell
#vipw
 weithenn:x:500:500::/home/weithenn:/bin/bash             //預設值
 weithenn:x:500:500::/home/user/weithenn:/bin/tcsh        //修改後

建立 tcsh shell 環境設定檔 (~/.cshrc)

設定 ~/.cshrc (/home/user/weithenn/.cshrc) 以便登入時載入相關環境設定 (tcsh shell 環境設定檔),內容如下
set path = (/usr/kerberos/sbin /usr/kerberos/bin /usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin $HOME/bin)
 if ($?prompt) then
        # An interactive shell -- set some stuff up
        if ( ! $?WINDOW ) then
                set prompt = '[%B%m%b] %B%~%b %# '
        else
                set prompt = "[%B%m:$WINDOW%b] %B%~%b %# "
                if ( ! $?SUDO_USER ) then
                        eval "`tset -s $TERM`"
                endif
        endif
 endif
 setenv LANG en_US.UTF-8
 setenv LC_ALL en_US.UTF-8
 setenv LESSCHARSET latin1
 setenv LC_TIME C
 setenv EDITOR vim
 alias  ls        ls --color=tty
 alias  h         history 25
 alias  j         jobs -l
 alias  la        ls -a --color=tty
 alias  lf        ls -FA --color=tty
 alias  ll        ls -lA --color=tty

建立 VIM 環境設定檔 (~/.vimrc)

設定 ~/.vimrc (/home/user/weithenn/.vimrc) 以便使用 vim 時載入相關環境設定,內容如下
set fileencoding=taiwan
 set guifontset=8x16,kc15f,-*-16-*-big5-0
 set cindent
 set enc=taiwan
 set fileencoding=taiwan
 set hls
 set nocompatible
 set sw=2
 syntax on
 highlight Comment ctermfg=darkcyan
 highlight Search term=reverse ctermbg=4 ctermfg=7

設定 sudo、封鎖 root 密碼

設定 sudo 才知道哪些人用 root 權限做了哪些事,若不喜歡用 sudo 還有許多其它方式來禁止 root 存取的方式,詳細方式可參考 [Red Hat Enterprise Linux 4: 安全性設定手冊 第 4章. 工作站的保全]
#which sudo visudo                 //確定 sudo 是否安裝
 /usr/bin/sudo
 /usr/sbin/visudo
設定 visudo 不用再鍵入密碼就可變成 root 並開啟 sudo log 功能,修改完 visudo 後若有人執行 sudo command 則 /var/log/sudo.log 會自動建立。
#visudo
 ## Same thing without a password
 # %wheel        ALL=(ALL)       NOPASSWD: ALL         //預設值
 %wheel ALL=(ALL)       NOPASSWD: ALL                  //修改後
 #Sudo log                                             //並加入如下二行
 Host_Alias SERVER = 192.168.202.100                   //指定本機 IP
 Defaults@SERVER log_year, logfile=/var/log/sudo.log   //指定 log 格式及路徑
設定 sudo log 二種格式 (log_host、log_year)寫入 /var/log/sudo.log 內容的差異
Dec 27 18:08:27 2007 : weithenn : TTY=pts/2 ; PWD=/home/user/weithenn ;    USER=root ; COMMAND=/usr/sbin/ntsysv                   //使用 log_year
 Dec 27 18:13:27 : weithenn : HOST=centos-jiakai : TTY=pts/2 ;    PWD=/home/user/weithenn ; USER=root ; COMMAND=/usr/sbin/visudo   //使用 log_host
將使用者 weithenn 加入 wheel 群組,也就是只有 weithenn 才能變成 root
#vi /etc/group
 wheel:x:10:root                                       //預設值
 wheel:x:10:root,weithenn                              //修改後
封鎖 root 密碼,因為我不喜歡再記 root 的密碼且放著也覺得不好所以就把 root password 給封了吧,方式就是修改 /etc/shadow 的第二欄位將內容改成 * 即可。
#vipw
 root:$1$qa1xL66K$DSp11kLKJZOx05FZsEFle0:13874:0:99999:7:::    //預設值
 root:*:13874:0:99999:7:::                                     //修改後

設定 hostname

若安裝時 hostname 沒設定好就設定一下吧。
#vi /etc/sysconfig/network
 NETWORKING=yes
 NETWORKING_IPV6=no
 HOSTNAME=centos-test.weithenn.org                             //設定 hostname

設定本地時間及每天自動校對時間

若安裝設定時區時不小心選到 UTC 的話就改回成 CST Taipei 吧。
#cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
 #date
 Thu Dec 27 17:07:29 CST 2007
若區網內沒架設 NTP 就寫個簡單的 shell 去每天對時吧,把 script (此例叫 ntpdate.sh) 放在 /etc/cron.daily 並給予 755 的權限就會每天自動對時了。
#vi /etc/cron.daily/ntpdate.sh                                //建立對時 script 名稱為 ntpdate.sh 內容如下
 #!/bin/sh
 ntpdate -s watch.stdtime.gov.tw
 #chmod 755 /etc/cron.daily/ntpdate.sh                         //給予 755 權限讓系統能自動執行
若系統沒有 /usr/sbin/ntpdate 這個執行檔,當您執行 /etc/cron.daily/ntpdate.sh 時系統會提示說找不到 ntpdate 指令 (ntpdate: command not found.),這時請利用 yum 安裝 ntp 套件吧。
#yum -y install ntp

查看機器 Listen 哪些 Port

查看機器到底 Listen 哪些 Port (FreeBSD 的話就用 sockstat 吧!!)
顯示服務名稱
#netstat -tl                                    
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address               Foreign Address             State
 tcp        0      0 *:ssh                       *:*                         LISTEN
顯示 Port Number
#netstat -tnl                                   
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address               Foreign Address             State
 tcp        0      0 :::22                       :::*                        LISTEN

查看機器啟動哪些 Service

可利用 ntsysv or chkconfig 來設定系統開機時是否啟動指定服務
chkconfig --list [name]                 //顯示指定服務 runlevel 情形
 chkconfig --add                   //新增指定服務
 chkconfig --del                   //刪除指定服務
 chkconfig [--level ]  

RunLevel

若是使用文字介面來安裝那預設就會使用文字介面來開機 (init 3),若使用圖形介面安裝 (Gnome or KDE) 則預設就會使用圖形介面來開機 (init 5)。有關 RunLevel 可參考下列二篇文章
修改系統 RunLevel
#vi /etc/inittab
 # Default runlevel. The runlevels used by RHS are:
 #   0 - halt (Do NOT set initdefault to this)                                   //關機
 #   1 - Single user mode                                                        //單人模式
 #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)   //多人模式,無 NFS 功能 (同 init 3 若你不需要網路的話)
 #   3 - Full multiuser mode                                                     //多人模式 (文字介面)
 #   4 - unused
 #   5 - X11                                                                     //多人模式 (視窗介面)
 #   6 - reboot (Do NOT set initdefault to this)                                 //重開機
 #
 id:3:initdefault:                                                               //3 文字模式,5 X-WIN

設定 yum mirror sites 為台灣地區

Yum (Yellow dog Updater, Modified) 為 Fedora 及 CentOS 用來管理 RPM 安裝,可解決套件相依性問題。詳細內容可參考[Yellow Dog Updater Modified - Wikipedia]
CentOS 預設 Mirror Site 一定是找國外的,所以我們把站台設回國內 Taiwan Mirror Site 這樣使用 YUM 安裝、更新套件上速度都會加快不少。
#cd /etc/yum.repos.d
 #cp CentOS-Base.repo CentOS-Base.repo.bak
 #sed 's,mirror.centos.org/centos,ftp.cse.yzu.edu.tw/pub/CentOS,g' CentOS-Base.repo.bak > CentOS-Base.repo    //元智大學
 or
 #sed 's,mirror.centos.org/centos,ftp.cs.pu.edu.tw/Linux/CentOS,g' CentOS-Base.repo.bak > CentOS-Base.repo    //靜宜大學
 or
 #sed 's,mirror.centos.org/centos,ftp.isu.edu.tw/pub/Linux/CentOS,g' CentOS-Base.repo.bak > CentOS-Base.repo  //義守大學
在使用 yum 之前為了避免因為系統時間不準而造成執行 yum 時失敗,建議先以 ntpdate 進行網路對時
#ntpdate -s watch.stdtime.gov.tw
列出常用的 yum 指令
yum update           //更新套件 (一個一個問)
 yum update -y        //更新所有套件 (所有回答都回答 Y)
 yum check-update     //列出需要更新的套件清單
 yum upgrade          //升級套件
 yum install aaa      //安裝套件
 yum remove aaa       //移除套件
 yum clean all        //清除安裝時的暫存檔
 yum search aaa       //搜尋套件
 yum list             //列出可安裝的套件清單
 yum info aaa         //列出套件訊息
 yum grouplist        //列出群組安裝套件清單
 yum groupinstall "GNOME Desktop Environment"   //安裝 Gnome 套件群組
 yum groupupdate      //更新套件群組
 yum groupremove      //移除套件群組
 yum groupinfo        //列出群組安裝套件內含哪些套件
     Mandatory Packages:    //強制安裝套件
     Default Packages:      //預設安裝套件
     Optional Packages:     //建議安裝套件 (自已視需求另外安裝)

安裝 RPMforge

雖然將 yum mirror sites 設定為台灣地區,不過除了必要的套件之外很多都沒有 (ex. lighttpd...),所以我們可以透過設定 [RPMforge] 來增加可安裝的套件數量 (ex. 預設 yum 是沒有 lighttpd 套件的)。
  • For 32 bit CentOS 執行安裝 [RPMforge] 套件
#rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
 Retrieving http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
 warning: /var/tmp/rpm-xfer.k3FbwC: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
 Preparing...                ########################################### [100%]
    1:rpmforge-release       ########################################### [100%]
  • For 64 bit CentOS 執行安裝 [RPMforge] 套件
#rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
 Retrieving http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
 warning: /var/tmp/rpm-xfer.k3FbwC: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
 Preparing...                ########################################### [100%]
    1:rpmforge-release       ########################################### [100%]
升級 [RPMforge] 套件後在度使用 yum 搜尋 lighttpd 就可找到。
#yum search lighttpd | grep lighttpd.i386
 lighttpd.i386                            1.4.18-1.el5.rf        rpmforge

rpm 基本指令

列出常用的 rpm 指令
rpm -ivh aaa         //安裝 rpm
 rpm -e aaa           //刪除 rpm
 rpm -Uvh aaa         //升級 rpm 套件
 rpm -qa |grep aaa    //查尋該套件版本
 rpm -qi aaa          //列出該套件詳細資訊
 rpm -ql aaa          //列出該套件相關檔案
 rpm -qc aaa          //列出該套件設定檔及啟動檔 

關閉不需要的服務

CentOS 為了讓你使用方便所以預設為開啟很多服務,而若我們是把 CentOS 拿來當 Server 在用的話其實有很多服務是用不到的,所以就列一下把不需要的服務關閉一方面減少安全性問題 (有的服務會開 Port),一方面也可以增加系統效能 (因為每個服務都會佔記憶體),以下指令可以知道你的系統預設把多少服務給開啟。
#chkconfig --list |grep "3:on" |awk '{print $1}' |sort
以我的習慣為例的話,我安裝時就只會選 Desktop KDE (因為公司有用 APC UPS 需要 VNC 連過去設定,且只有 GUI 介面),其它有需要就用 yum 安裝,所以安裝完成後預設會開啟下列服務,至於哪些要停用哪些要啟用就看你的需求吧,以下是我個人的建議 (也是套用我機器上的設定)
預設開啟的服務建議說明
acpid停用Advanced Configuration and Power Interface 電源進階設定,常用在 Laptop 上
apmd停用Adventage Power Management daemon 偵測系統的電池電量,常用在 Laptop 上
atd停用/etc/at.allow,/etc/at.deny 我大概都使用 crond 來達成
autofs停用自動掛載檔案系統與週邊裝置 (如光碟、USB),常用在 Laptop 上
avahi-daemon停用當區網沒有 DNS 服務時會試著尋找提供 zeroconf 協定的主機
bluetooth停用Bluetooth 藍芽,常用在 Laptop 上
cpuspeed停用控制 CPU 速度主要用來省電,常用在 Laptop 上
cups停用Common UNIX Printing System 使系統支援印表機
firstboot停用安裝完成後第一次啟動時的服務,設定 auth、firewall、keyboard...
gpm停用記錄週邊裝置的檔案資料,例如文字模式下可使用滑鼠
haldaemon停用使系統支援 plug and play 裝置
hidd停用使系統支援藍芽裝置,例如滑鼠,鍵盤
hplip停用使系統支援 HP 相關型號印表機
ip6tables停用使系統支援 IPTables Filrewall IPv6
isdn停用使系統支援 Integrated Services Digital Network (ISDN) 環境
lm_sensors停用使系統支援偵測主機版或硬體,常用在 Laptop 上
messagebus停用使系統支援 plug and play 裝置
nfslock停用使系統支援 NFS Server 資料一致性功能
pcscd停用使系統支援 Smart Card
portmap停用使系統支援 NFS Service
rpcgssd停用使系統支援 NFSv4 Service
rpcidmapd停用使系統支援 NFSv4 Service
yum-updatesd停用使系統支援 YUM 自動更新服務 (上線機器還是先確認好再更新)
anacron視個人需求執行在 crontab 設定的時間沒有執行到的工作
auditd視個人需求稽核系統 /var/log/audit/audit.log,若 auditd 未執行中則稽核訊息會寫入 /var/log/messages (配合 SELinux)
iptables視個人需求使系統支援 IPTables Filrewall
irqbalance視個人需求使系統支援多個 CPU 環境當系統中斷請求時進行負載平衡的程序,所以單 CPU 的機器就不需要
lvm2-monitor視個人需求使系統支援 Logical Volume Manager 邏輯磁區
mcstrans視個人需求主要用於配合 SELinux 服務
mdmonitor視個人需求使系統支援 RAID 相關程序
microcode_ctl視個人需求使系統支援 Intel IA32 CPU 特色,所以 AMD CPU 不需要
netfs視個人需求Network File System Mounter 網路掛載系統 (如 NFS、Samba、NCP)
restorecond視個人需求使系統支援 SELinux 監控檔案狀態
smartd視個人需求使系統支援檢查硬碟狀態 (Hardware RAID 要改設定檔)
sendmail視個人需求使系統支援 Sendmail
xfs視個人需求使系統支援 X Window 字型
crond啟動/etc/cron.* 排程服務
kudzu啟動使系統每次開機會都自動執行硬體偵測
network啟動使系統支援網卡
readahead_early啟動使系統再啟動時預先將相關檔案讀到記憶體內來加快啟動速度
sshd啟動使系統支援 SSH Service
syslog啟動使系統支援 System Log Service
決定哪些服務要開哪些服務要關就來執行關閉服務及關閉啟動機器時不啟動服務,以下是我個人的需求。
service acpid stop ; chkconfig acpid off
 service apmd stop ; chkconfig apmd off
 service atd stop ; chkconfig atd off
 service auditd stop ; chkconfig auditd off
 service autofs stop ; chkconfig autofs off
 service avahi-daemon stop ; chkconfig avahi-daemon off
 service bluetooth stop ; chkconfig bluetooth off
 service cpuspeed stop ; chkconfig cpuspeed off
 service cups stop ; chkconfig cups off
 service firstboot stop ; chkconfig firstboot off
 service gpm stop ; chkconfig gpm off
 service haldaemon stop ; chkconfig haldaemon off
 service hidd stop ; chkconfig hidd off
 service hplip stop ; chkconfig hplip off
 service ip6tables stop ; chkconfig ip6tables off
 service isdn stop ; chkconfig isdn off
 service lm_sensors stop ; chkconfig lm_sensors off
 service mcstrans stop ; chkconfig mcstrans off
 service messagebus stop ; chkconfig messagebus off
 service netfs stop ; chkconfig netfs off
 service nfslock stop ; chkconfig nfslock off
 service pcscd stop ; chkconfig pcscd off
 service portmap stop ; chkconfig portmap off
 service restorecond stop ; chkconfig restorecond off
 service rpcgssd stop ; chkconfig rpcgssd off
 service rpcidmapd stop ; chkconfig rpcidmapd off
 service yum-updatesd stop ; chkconfig yum-updatesd off
 service smartd stop ; chkconfig smartd off

關閉多餘的 tty

大部份都使用 putty 來遠端連線到 CentOS 處理,所以 tty (本機 console) 幾乎很少用到而預設會開啟 6 個,修改成只開啟 2 個。
#vi /etc/inittab
 # Run gettys in standard runlevels
 1:2345:respawn:/sbin/mingetty tty1
 2:2345:respawn:/sbin/mingetty tty2
 #3:2345:respawn:/sbin/mingetty tty3     //mark 掉
 #4:2345:respawn:/sbin/mingetty tty4     //mark 掉
 #5:2345:respawn:/sbin/mingetty tty5     //mark 掉
 #6:2345:respawn:/sbin/mingetty tty6     //mark 掉

更新 Locate DB

因為 Centos 預設僅每天會更新一次 locate db,所以 CentOS 剛安裝好或剛安裝好某些套件時,若使用 locate (例如尋找 apache 設定檔) 的話就會發生如下錯誤訊息.
#locate httpd.conf
 locate: can not open `/var/lib/mlocate/mlocate.db': No such file or directory
你可以使用指令 updatedb 來手動更新 locate db.
#updatedb                   //可能要幾分鐘時間
 #locate httpd.conf          //再次搜尋就可找到了 (可配合參數 -i 來忽略大小寫)
 /etc/httpd/conf/httpd.conf
 /usr/share/system-config-httpd/httpd.conf.xsl

參考

[Minimal Services on CentOS 4.4 Mini-HowTo >> anchorite.org]
[迷你CentOS]
[轉載: FEDORA 相關服務 Yahoo!奇摩部落格]
[Services in Fedora Core 6]
[Red Hat Enterprise Linux 4 Update 2 發行公告]
[分享Fedora 7安裝和配置 - Red Hat / Fedora / CentOS - Linux - www.allhabit.com 香港討論區,香港論壇 - Powered by Discuz!]
[Linux守護進程列表 - ◇Linux新手入門 - 開源快訊論壇 - Powered by Discuz!]
[EXT3-fs: error loading journal - LinuxQuestions.org]

Me FAQ

Q1.GRUB Loading Stage 2?
Error Message:
安裝完 CentOS 後開機時出現如下訊息,且主機呈現當機狀態無法進行任何動作?
GRUB Loading Stage 2
Ans:
簡單說造成此問題的原因為 GRUB 損壞 (或安裝不完全),此時可利用安裝光碟片再次重新安裝 GRUB 即可解決,修復步驟如下
  1. 放入 CentOS DVD 安裝光碟片
  2. 進入救援模式
    1. 請輸入指令 linux rescue
  3. 回答一般問題
    1. 系統要求設定語系、鍵盤、滑鼠及是否啟動網路卡 (依預設值回答即可,網路卡倒是不需要啟動)
  4. 將根目錄切換到光碟片
    1. 請輸入指令 chroot /mnt/sysimage
  5. 重新安裝 GRUB
    1. 請輸入指令 grub-install /dev/hda or /dev/sda (PATA->hda, SATA/SCSI/SAS->sda)
  6. 離開救援模式
    1. 請輸入指令 exit
  7. 重新啟動系統
    1. 請輸入指令 reboot
Q2.EXT3-fs: error loading journal?
Error Message:
無法存取檔案系統,到 Console 端去看一狗票如下錯誤訊息
EXT3-fs error (device sda1): ext3_readdir: bad entry in directory #1577666: inode out of bounds - offset=0, inode=1572866, rec_len=12, name_len=1
將主機關機後重新開機先進 BIOS 重新檢查 HDD 是正常狀態,但開機準備進入 CentOS 後發生 [Kernel Painc] 訊息大致如下
JBD: FAiled to read block at offset 10516
 EXT3-fs: error loading journal
 ...略... (總之一堆 mount error)
 Kernel panic - not syncing: Attempted to kill init!
Ans:
此次解決方式為進入救援模式後 fsck 根目錄完成後,主機重新開機就恢復正常了 (運氣好?),簡述此次解決方式如下
  1. 放入 CentOS DVD 安裝光碟片
  2. 進入救援模式
    1. 請輸入指令 linux rescue
  3. 回答一般問題
    1. 系統要求設定語系、鍵盤、滑鼠及是否啟動網路卡 (依預設值回答即可,網路卡倒是不需要啟動)
  4. 進行檔案系統修復
    1. 執行 fsck 指令 (有可能系統會回答 cannot read /etc/fstab,此次狀況也是如此,請嘗試執行下一行的指令)
    2. 執行 fdisk -l 指令來查看 device (了解 HDD 代號)、mount point...資訊,此例主機硬碟代號為 sda
    3. 執行 fsck /dev/sda1 (修復根目錄)
  5. 離開救援模式
    1. 請輸入指令 exit
  6. 重新啟動系統
    1. 請輸入指令 reboot
此例中修復根目錄 (fsck /dev/sda1) 完成重開機後,系統便可正常開機一切也恢復正常。(當然正常開機後在執行 fsck 指令再次掃描所有的 Device 一次,不過若是此主機為重要機器的話還是要記得隨時備份資料及建立 RAID 才是王道哦!! *:)*)

沒有留言:

張貼留言

NodeMCU_ESP8266_搭配motoduino的積木撰寫程式

NodeMCU_ESP8266_搭配motoduino的積木撰寫程式 為了教小學生寫程式,一直在尋找適合的積木程式,加上自己能力不足、經費也短缺,因此想找一個適合的小學生使用,又不用買特殊開發版的環境。用了Scrstch的S4A,雖然可以及時看到反映,卻發現無法離線執行,而且...