誰來救救我!!!CentOS FAQ 雞毛蒜皮小技巧

by 12月 09, 2014 1 意見        

「咦!為什麼出現錯誤訊息?」
「為什麼執行結果跟我想的不一樣?」
「我下的指令明明就沒錯,為什麼就是跑不出來?」

有些問題並不是系統發生故障或套件壞掉,只不過是設定值沒輸入或設定錯誤,這些設定值無傷大雅,系統不會因為這樣就得重灌,但是不調整好的話,運作起來就是不正常,那我們可以怎麼修正呢!


這些方法只在 CentOS 6.x 上面測試過,如果各位使用的 Linux 發行版 (distribution)、版本 (version) 或是套件 (package) 不同的話,請酌情服用,別忘了「先求不傷身體,再講求效果」!!!

修改預設地區語系


用繁體中文語系的好處是讓訊息改用中文顯示,但並不是所有的指令與套件都有效,有時候中文的訊息反而更難懂;對 man 指令來說,不只是看不懂而是會有大麻煩,因為常常會發生找不到 Manual Page 的問題。

先確認目前的地區語系設定值。
locale

編輯語系設定檔。
vi /etc/sysconfig/i18n

裡面只有一行指令:LANG="zh_TW.UTF8"

從繁體中文 zh_TW.UTF8 改成美式英文 en_US.UTF8

重新開機後就可以生效了。

如果 User 透過 SSH Client 連上來的時候,結果還是停留在 zh_TW.UTF8 的話,請編輯 /etc/environment。
vi /etc/environment

加入
LANG=en_US.UTF8
LC_ALL=en_US.UTF8

SSH 斷線再重新連線上來即可。

參考資料:鳥哥的 Linux 私房菜 - 11.2.3 環境變數的功能


修改預設時區


預設的時區在亞洲台北 Asia/Taipei,假設我們要改到美洲的洛杉磯 America/Los_Angles。

在 /usr/share/zoneinfo/ 目錄找到對應的時區檔。

在 America/ 目錄裡,就可以找到 Los Angles。

把時區檔 /usr/share/zoneinfo/America/Los_Angeles,複製到 /etc/localtime,覆蓋掉原來的檔案。
cp /usr/share/zoneinfo/America/Los-angles /etc/localtime

編輯時區的設定檔。
vi /etc/sysconfig/clock

裡面只有一行指令:ZONE="Asia/Taipei"

改成 ZONE="America/Los_Angles"

就可以看到時區原本在台北。
date

被改到洛杉磯了。

接著,讓系統校時,。
ntpdate time.stdtime.gov.tw

最後將新時區的正確時間寫到 BIOS 裡就可以了。
hwclock -w

參考資料:鳥哥的 Linux 私房菜 - 15.2.1 時間伺服器所需軟體與軟體結構


讓 vi 自動顯示行號


預設並不會顯示行號。

使用者可以編輯自已的 vi 設定檔,若是不存在的話,就直接新增一個。
vi ~/.vimrc

加入 set numberset nu 指令,來顯示行號。

要讓所有使用者都生效的話,就編輯 vi 的全域設定檔。
vi /etc/virc

同樣在最後一行加入加入 set numberset nu

重新開啟 vi 後就立即生效。

參考資料:Studt Area - 大家來學VIM(一個歷久彌新的編輯器)[九] set 功能設定


在 vi 裡,鍵盤的某些按鍵無效或是會跳亂碼


使用者可以編輯自已的 vi 設定檔,若是不存在的話,就直接新增一個。
vi ~/.vimrc

要讓所有使用者都生效的話,就編輯 vi 的全域設定檔。
vi /etc/virc

如果是獨立的四方向鍵有問題的話,加入 set nocompatibleset nocp 指令。
如果是 Backspace 鍵有問題的話,加入 set backspace=2 指令。

重新開啟 vi 後就立即生效。

參考資料:Studt Area - 大家來學VIM(一個歷久彌新的編輯器)[九] set 功能設定


設定文字模式的預設解析度及色彩


編輯 GRUB 的開機選單設定檔。
vi /boot/grub/menu.lst

每組設定值是從 title 開始,而每升級一次 Kernel,就會自動新增一組設定值。

選擇要調整的那一組設定,找到 kernel 這一行。

在 kernel 的這一行指令的最後面加上 vga=xxx。

xxx 為三位數的數字,代表解析度及色彩。
  1. 640*480
    • 256 色 (8 bit):769
    • 32K 色 (15 bit):784
    • 65K 色 (16 bit):785
    • 16.8M 色 (24 bit):786
  2. 800*600
    • 256 色 (8 bit):771
    • 32K 色 (15 bit):787
    • 65K 色 (16 bit):788
    • 16.8M 色 (24 bit):789
  3. 1024*768
    • 256 色 (8 bit):773
    • 32K 色 (15 bit):790
    • 65K 色 (16 bit):791
    • 16.8M 色 (24 bit):792
  4. 1280*1024
    • 256 色 (8 bit):775
    • 32K 色 (15 bit):793
    • 65K 色 (16 bit):794
    • 16.8M 色 (24 bit):795
  5. 1600*1200
    • 256 色 (8 bit):796
    • 32K 色 (15 bit):797
    • 65K 色 (16 bit):798
    • 16.8M 色 (24 bit):799
重新開機後即可生效。

參考資料:Centoshelp.org - Customizing The Grub System Bootloader


關閉 SELinux


確認 SELinux 目前的啟動狀態。
sestatus

編輯 SELinux 的主設定檔。
vi /etc/selinux/config

找到 SELINUX=enforcing

改成 SELINUX=disable

重新開機後就可以生效了。

參考資料:鳥哥的 Linux 私房菜 - 17.5.3 SELinux 的啟動、關閉與觀察


讓網路卡在開機後自動啟動


通常是因為安裝時,在網路卡設定時,忘了勾選「自動啟動」。

編輯網路卡的主設定檔,如果有多張網路卡,請把 eth 後面的數字,從 0 改成適當的數字。
vi /etc/sysconfig/network-scripts/ifcfg-eth0

找到 ONBOOT=no

改成 ONBOOT=yes

下次重新開機時,網路卡就會自動啟動了。

參考資料:鳥哥的 Linux 私房菜 - 4.1.3 Linux 網路相關設定檔案


讓網路卡不要從 DHCP Server 取得 IP,改用指定 IP


假設我們要把 IP 改成 10.0.0.1,子網路遮罩改成 255.255.255.0,通訊閘改成 10.0.0.254。

編輯網路卡的主設定檔,如果有多張網路卡,請把 eth 後面的數字,從 0 改成適當的數字。
vi /etc/sysconfig/network-scripts/ifcfg-eth0

找到 BOOTPROTO=dhcp

改成 BOOTPROTO=static

再加上 IP 的設定。
IPADDR=10.0.0.1
NETMASK=255.255.255.0
GATEWAY=10.0.0.254

再重新啟動網路服務即可。
service network restart

參考資料:鳥哥的 Linux 私房菜 - 4.2.1 手動設定固定 IP 參數 (適用學術網路、ADSL 固定制) + 五大檢查步驟


在 VirtualBox 裡的 CentOS 虛擬硬碟檔複製到別台電腦使用時,卻找不到網路卡


開機時會出現「Device eth0 does not seem to be present, delaying initialization.」的錯誤訊息。

這是因為 CentOS 在安裝的時候,會把網路卡的 MAC Address 寫死在相關設定檔裡面,複製到 VirtualBox 的其他虛擬機之後,MAC Address 不一樣,CentOS 會認為除了原本的網路卡 eth0 不見了。

就算重新啟動 network 服務也沒有用。

編輯第一片網卡的主設定檔。
vi /etc/sysconfig/network-scripts/ifcfg-eth0

找到 HWADDR="xx:xx:xx:xx:xx:xx"

把這一行刪掉。

接著編輯 udev 的網路卡命名規則設定檔。
vi /etc/udev/rules.d/70-persistent-net.rules

找到原本網路卡 eth0 的設定值,把它全部刪掉。
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

把新網路卡 eth1 設定值裡的 eth1 改成 eth0。
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="yy:yy:yy:yy:yy:yy", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

重新開機後就可以恢復正常了。

參考資料:Gavin's Linux學習手札 -  複製虛擬機Linux,網卡啟動失敗 Device eth0 does not seem to be present, delaying initialization


更新紀錄

  • 2014/12/09 撰文。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

1 則留言 :

  1. 你真的救到我了,只能給你讚!

    回覆刪除