2012年7月15日 星期日

[電腦] Linux學習--完全不懂Linux怎麼入門(概述)

        Linux這個作業系統,說實在的不是一個很好用的作業系統,動不動就會出現一堆trouble讓學習的心大受打擊,而且你到網路上google不見得可以找到你想要得答案(因為你在學習的路上就已經困難重重了,連自己想問什麼都不懂,要怎麼找到答案?),偏偏Linux社群的高手最喜歡叫新手「自己去做功課」。新手問問題,先訓你一頓為什沒有先做功課就上來問,然後浪費一大堆時間告訴你應該要先去google,也不願意用訓斥新手的時間教你原理。Linux的使用族群用一個詞來形容就是「自以為特別」,自以為比Microsoft使用者高一截。我的工作環境中接觸到Linux的機會很多,也認識很多用得很專的,但是因為陣營的迂腐觀念讓門第之見蒙蔽了學習的初衷,這是垃圾思想,應該要揚棄。




        但Linux絕對不是一個可以讓所有人使用的作業系統,因為他動不動就會出問題,你要花很多時間在解決及查找原因,光是一個顯示卡的Driver就要動到一大堆的設定,還要預防更新kernel之後就不會自動載入驅動程式而要做額外的調整。一般人哪有時間花在這種地方呢?一個東西最重要的就是要能用,不能用或不好用的東西再怎麼強大也沒屁用,時間就是金錢啊,朋友。

       話說回來,Linux確實是功能非常多的作業系統。Linux可以幫助我們學習網路的概念、且建置Server非常便利,而且用習慣了Linux的操作方式或許你會上癮,不過要克服一開始的重重打擊,這條路不是很好走啊。我自己已經用ubuntu當作自己notebook上主要的作業系統,雖然問題很多,但是打定主意要好好的學習就會努力克服這些比較困難的部份。

        說了這麼多,Linux到底怎麼入門最好呢?我這篇會列出幾個可以先學會,而且學會之後就好像真的懂一些Linux的技能,而非不得其門而入的階段了!

概述Linux發行版本的差別,以套件管理來分(只描述有列出來的部份,Linux博大精深,不是小弟能全部理解的)。
    RedHat類: CentOS、Fedora都是跟RedHat非常貼合的發行版本,尤其是CentOS,是從RedHat的原始碼移植成可以自由使用的版本,當他是RedHat的免費版就可以了。Fedora是一個比較前衛的RedHat,當他是個RedHat的先期實驗發行版也可以。

    Debian類: Debian跟ubuntu歸於此類。這兩個版本,都是問題一大堆的(問題代表他可以彈性作調整的部份很多,不是指他就是不能用),Debian最嚴重,一堆理念要堅持,所以他在使用上有很多不方便,可以說是「超級不方便」,不方便到用他來學習linux會讓人自信心盡失,但是他的套件管理程式非常強大,套件之多可以說是我們想得到的他都有。Ubuntu則是以打進不懂電腦的族群也能使用Linux的概念運行,不過我在這跟大家保證,就算用ubuntu你也不會太開心的!因為Linux的學習是要做非常多功課才能入門的系統。(說他不好用是因為你不會是在無痛的情況下學習之,不然我作啥說這麼多呢?)

   Suse: Suse我就不想介紹了,沒啥原因,因為我不懂他。要用Suse你就得要特別去學他的設定檔、套件管理程式,如果真的有需要學,那就一步一步在網路上找文章吧!或許將來有人問我問題我就幫忙去找資料給讀者研讀,順便自己也多少唸一下相關的部份。


        接著,我們要真正的開始認識Linux了!

第一步:尋找安裝Linux的環境
      完完全全沒有接觸過Linux的朋友,建議找個沒在用的電腦先裝裝看,安裝的過程中你就會遇到不同用途的檔案系統有什麼個別的用途,而且你也會學到檔案系統的基本概念。如果沒有多餘的電腦,我們也可以考慮使用虛擬機器來安裝,虛擬機器就是在我們當前使用的作業系統(Host OS)中,透過虛擬機器(Virtual Machine, 簡稱VM)來安裝作業系統中的作業系統(Guest OS)。透過這種方式,我們可以隨意安裝各種不同的作業系統以方便學習,最重要的是不管怎麼蹂躪它,都可以透過事前快照(Snapshot, 把現在系統的狀態儲存起來)來反覆實驗,失敗了就再回復(Restore)之。VM軟體種類非常多,我再開另外的基礎篇來介紹使用的方法。

第二步:下載Linux OS ISO檔

國網中心Mirror站:
http://free.nchc.org.tw/pmwiki/index.php?n=FSLab.MirrorLists

      正如上面所提, Linux有許多不同的發行版本,稱為Distributions。國內由於鳥哥的關係,使得RedHat成為較多人使用的Distribution,在商業的角度來看,RedHat被較多大廠支援,所以很多軟體都會開發相容於RedHat的安裝格式。但是RedHat要收錢,所以大多人都使用CentOS來替代之,而CentOS(RedHat)主要定位在於企業的Server用,因此他比較無趣,不會特別為桌面的x-window預設環境做設計。若想要有比較漂亮的桌面環境(我指的是系統預設幫你做美化的部份),可以選擇Fedora來替代之。

      Ubuntu是最近幾年特別熱門的Distribution之一,這是由南非首富出資聘請工程師維護,在linux的眾多Distribution對初學者特別友善,不但支援許多的硬體,也針對桌面環境用心地設計,降低了許多初學者的疑慮。如果你想學得開心些,可以從ubuntu下手,試著先安裝起來使用,未來再嘗試其他的Distribution時會比較易於學習。

      下載ISO檔的時候,我們要先確認自己的CPU是屬於何種架構。如果一般的PC,通常搭載Intel與AMD的CPU,所以你選擇的時候,在RedHat陣營有兩種,i386與x86_64,如果不確定自己的CPU是否屬於64-bit,除了上原廠網站去確認之外,也可以乾脆就抓i386的版本,反正我們只是要安裝系統來練習,可以不先講究CPU架構的細節。Debian陣營的話,就是i386與amd_64,就算是intel 64-bit的CPU也一樣選擇amd_64。

       很多人會把自己定位在某個Distribution陣營,而排斥其他Distribution,我得跟你說,這超級無聊!就跟你跟別人說你是屬於哪個政黨,非藍即綠且水火不容的無聊程度一樣,別把自己預設在什麼陣營,多方接觸多方了解你才能成為一個公正的人。 所以不同的Distribution也要安裝來用用看,如此才能找到適合自己風格的發行版本。



       基礎安裝的實作,將在另一篇文章中截圖詳述,並一步一步講解。

   

2011年5月11日 星期三

[Linux] Linux學習-- mount iso as a cdrom howto

    As we download a iso image file, we would sometimes need to mount it as a CDROM for some purpose. All we have to do is issue the commend below:

>sudo mount -o loop [iso file] [Destination Directory]

For instance,

a00ylc00@asus-ubuntu:/$ sudo mount -o loop /download/rhel-server-6.0-x86_64-dvd.iso /mnt


a00ylc00@asus-ubuntu:/$ cd /mnt

a00ylc00@asus-ubuntu:/mnt$ ls
EFI                       RELEASE-NOTES-es-ES.html  RELEASE-NOTES-si-LK.html
EULA                      RELEASE-NOTES-fr-FR.html  RELEASE-NOTES-ta-IN.html
GPL                       RELEASE-NOTES-gu-IN.html  RELEASE-NOTES-te-IN.html
HighAvailability          RELEASE-NOTES-hi-IN.html  RELEASE-NOTES-zh-CN.html
images                    RELEASE-NOTES-it-IT.html  RELEASE-NOTES-zh-TW.html
isolinux                  RELEASE-NOTES-ja-JP.html  repodata
LoadBalancer              RELEASE-NOTES-kn-IN.html  ResilientStorage
media.repo                RELEASE-NOTES-ko-KR.html  RPM-GPG-KEY-redhat-beta
Packages                  RELEASE-NOTES-ml-IN.html  RPM-GPG-KEY-redhat-release
README                    RELEASE-NOTES-mr-IN.html  ScalableFileSystem
RELEASE-NOTES-as-IN.html  RELEASE-NOTES-or-IN.html  Server
RELEASE-NOTES-bn-IN.html  RELEASE-NOTES-pa-IN.html  TRANS.TBL
RELEASE-NOTES-de-DE.html  RELEASE-NOTES-pt-BR.html
RELEASE-NOTES-en-US.html  RELEASE-NOTES-ru-RU.html
a00ylc00@asus-ubuntu:/mnt$

That's all.

2011年5月5日 星期四

[Linux] Linux學習-- RHEL6 使用光碟來做yum的sourcelist

這篇文章,是我在寫TSM Client安裝法的文章中,第一部份談到的。很多人應該都有這種經驗,當你沒有網路、RHEL沒有註冊的情況下,想要用yum來安裝軟體卻沒辦法,這時候調整一下yum.repo.d底下的檔案就可以實現這個作法。單單從光碟來安裝rpm套件,雖然已經夠方便了,但是有一些相依套件的問題卻沒有那麼順利,所以可以參考底下的設定提高套件管理的效率。

 若RedHat未註冊,無法使用yum 做套件管理,我們可以直接mount CDROM來做sourcelist.

方法如下:
    # mkdir /mnt/rhel6
    # mount /dev/sr0 /mnt/rhel6 (我是用kvm mount iso,所以是/dev/sr0這個裝置,如果一般的情況應該會是/dev/cdrom。請在安裝的時候自行判斷,可以用dmesg看看自己的光碟是在哪 個裝置上。有問題可以提出來討論)

由於系統現在並沒有yum可用的sourcelist,因此我們要從光碟上複製一個範例到本機上使用

    # cp /mnt/rhel6/media.repo /etc/yum.repos.d/media.repo

編輯 /etc/media.repo,將baseurl指向光碟機

      在檔案最後加上 baseurl=file:///mnt/rhel6/

    # vi /etc/yum.repos.d/media.repo

[InstallMedia]
name=Red Hat Enterprise Linux 6.0
mediaid=1285193176.460470
metadata_expire=-1
gpgcheck=0
cost=500
baseurl=file:///mnt/rhel6/ <===加入這一行

如此即可使用CD-ROM來進行套件的安裝了。

[Linux] Linux學習-- RHEL6 安裝TSM Client

    IBM的TSM(由ADSM而來),是一個跨平台、功能非常強大的備份軟體,由於他的功能非常多,所以相對其他備份軟體而言也比較難學。這套軟體是Client-Server架構的,由一部(或多部)Server提供備份服務,供Client端將資料用各種方式備份上來。這個文件主要是寫TSM Client的安裝法,版本是6.2.2.0,作業系統是RHEL6。會特別寫這個文件是因為TSM與RHEL都大改版了,與之前第五版的安裝略有不同,所以將細節列出來供有需要的讀者參考。




ftp://ftp.software.ibm.com/storage/tivoli-storage-management/maintenance/client/v6r2/Linux/LinuxX86/v622/6.2.2.0-TIV-TSMBAC-LinuxX86.tar

1. 下載TSM Client 6.2.2.0版tar檔

2. 若RedHat未註冊,無法使用yum 做套件管理,可以直接mount CDROM來做sourcelist.

方法如下:
    # mkdir /mnt/rhel6
    # mount /dev/sr0 /mnt/rhel6 (我是用kvm mount iso,所以是/dev/sr0這個裝置,如果一般的情況應該會是/dev/cdrom。請在安裝的時候自行判斷,可以用dmesg看看自己的光碟是在哪個裝置上。有問題可以提出來討論)

由於系統現在並沒有yum可用的sourcelist,因此我們要從光碟上複製一個範例到本機上使用

    # cp /mnt/rhel6/media.repo /etc/yum.repos.d/media.repo

編輯 /etc/media.repo,將baseurl指向光碟機

      在檔案最後加上 baseurl=file:///mnt/rhel6/

    # vi /etc/yum.repos.d/media.repo

[InstallMedia]
name=Red Hat Enterprise Linux 6.0
mediaid=1285193176.460470
metadata_expire=-1
gpgcheck=0
cost=500
baseurl=file:///mnt/rhel6/ <===加入這一行

如此即可使用CD-ROM來進行套件的安裝了。

3. 安裝TSM Client

將適才下載的tar檔解開
> tar xvf 6.2.2.0-TIV-TSMBAC-LinuxX86.tar

可得以下所有檔案,其中gskcrypt與gskssl套件是一定會用到的,別忘了缺少這兩個套件時可以安裝。
NOTICES.TXT
README_enu.htm
README_api_enu.htm
README_hsm_enu.htm
TIVsm-API.i386.rpm
TIVsm-API64.i386.rpm
TIVsm-BA.i386.rpm
TIVsm-HSM.i386.rpm
TIVsm-BAhdw.i386.rpm
gskcrypt32-8.0.13.4.linux.x86.rpm
gskcrypt64-8.0.13.4.linux.x86_64.rpm
gskssl32-8.0.13.4.linux.x86.rpm
gskssl64-8.0.13.4.linux.x86_64.rpm


試著安裝TIVsm-API.i386.rpm,系統會告訴你缺了一大堆該有的套件

[root@localhost ~]# rpm -ivh TIVsm-API.i386.rpm 
error: Failed dependencies:
    gskcrypt32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    gskssl32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    libcrypt.so.1 is needed by TIVsm-API-6.2.2-0.i586
    libcrypt.so.1(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6 is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1.1) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1.2) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1.3) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.2) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.2.3) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.3) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.3.4) is needed by TIVsm-API-6.2.2-0.i586
    libdl.so.2 is needed by TIVsm-API-6.2.2-0.i586
    libdl.so.2(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libdl.so.2(GLIBC_2.1) is needed by TIVsm-API-6.2.2-0.i586
    libgcc_s.so.1 is needed by TIVsm-API-6.2.2-0.i586
    libgcc_s.so.1(GCC_3.0) is needed by TIVsm-API-6.2.2-0.i586
    libgcc_s.so.1(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8cms.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so(ICCSTUB) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so(GSKSSL) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8sys.so is needed by TIVsm-API-6.2.2-0.i586
    libm.so.6 is needed by TIVsm-API-6.2.2-0.i586
    libm.so.6(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0 is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.1) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.2) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.3.2) is needed by TIVsm-API-6.2.2-0.i586
    librt.so.1 is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.5 is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.5(CXXABI_1.2) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.5(GLIBCPP_3.2) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6 is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6(CXXABI_1.3) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6(CXXABI_1.3.1) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6(GLIBCXX_3.4) is needed by TIVsm-API-6.2.2-0.i586


所以我們要一一將缺少的部份安裝起來,我從最後一個套件往上一一解決。
1. libstdc++.so.6
"yum provides" 可用來查看缺少的檔案是由哪個套件所提供的,因此底下我們下這樣的指令:

[root@localhost ~]# yum provides libstdc++.so.6
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
libstdc++-4.4.4-13.el6.i686 : GNU Standard C++ Library
略,我們可以看到libstdc++.so.6這個檔案是libstdc++-4.4.4-13.el6.i686這個套件的。
安裝這個套件
[root@localhost ~]# yum install libstdc++-4.4.4-13.el6.i686

尋找包含libstdc++.so.5的套件
[root@localhost ~]# yum provides libstdc++.so.5
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
compat-libstdc++-33-3.2.3-69.el6.i686 : Compatibility standard C++ libraries

安裝這個套件
[root@localhost ~]# yum install compat-libstdc++-33-3.2.3-69.el6.i686

安裝過程中,由於yum會自動帶進該安裝的相關套件,因此上面所列的缺件都會被一一補齊。
完畢之後,我們再試裝一次TIVsm-API.i386.rpm

[root@localhost ~]# rpm -ivh TIVsm-API.i386.rpm 
error: Failed dependencies:
    gskcrypt32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    gskssl32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    libgsk8cms.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so(ICCSTUB) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so(GSKSSL) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8sys.so is needed by TIVsm-API-6.2.2-0.i586

還缺gskcrypt32,gskssl32,libgsk8sys.so, libgsk8iccs.so, libgsk8cms.so這幾個檔案,
這幾個就要靠TSM的tar檔解開裡的rpm套件了。
 依序安裝底下幾個rpm 套件,順序不對的話系統會告訴你。

[root@localhost ~]# rpm -ivh gskssl32-8.0.13.4.linux.x86.rpm
[root@localhost ~]# rpm -ivh  gskcrypt32-8.0.13.4.linux.x86.rpm 
[root@localhost ~]# rpm -ivh gskssl32-8.0.13.4.linux.x86.rpm  [root@localhost ~]# rpm -ivh TIVsm-API.i386.rpm 
[root@localhost ~]# rpm -ivh TIVsm-BA.i386.rpm 

TSM Linux client installation complete.

Be sure to set up the system configuration file
before starting the client!

好了,到現在為止,TSM Client已經安裝完畢。接著就是設定設定檔的部份。

兩個檔案,dsm.sys與dsm.opt

# cd /opt/tivoli/tsm/client/ba/bin/
# cp dsm.sys.smp dsm.sys <====最主要的系統設定檔,把sample檔cp成可用的dsm.sys
# cp dsm.opt.smp dsm.opt <====其他設定的設定檔,把sample檔cp成可用的dsm.opt

# vi dsm.sys

************************************************************************
* IBM Tivoli Storage Manager                                           *
*                                                                      *
* Sample Client System Options file for UNIX (dsm.sys.smp)             *
************************************************************************

*  This file contains the minimum options required to get started
*  using TSM.  Copy dsm.sys.smp to dsm.sys.  In the dsm.sys file,
*  enter the appropriate values for each option listed below and
*  remove the leading asterisk (*) for each one.

*  If your client node communicates with multiple TSM servers, be
*  sure to add a stanza, beginning with the SERVERNAME option, for
*  each additional server.

************************************************************************

SErvername  tsm.allen.chen  <====取一個代表TSM Server的名字
   COMMMethod         TCPip
   TCPPort            1500
   TCPServeraddress   tsm.allen.chen <=====可寫IP Address或Hostname(可由DNS轉址的)
   nodename   RHEL6   <===== 安裝TSM Client的主機名稱,這個名稱是註冊在TSM Server上的名稱。
   SCHEDLOGNAME "/var/log/tsmsched.log"  <===== 排程紀錄檔
   ERRORLOGNAME "/var/log/tsmerror.log"  <===== 錯誤紀錄檔,一定要設,否則與TSM Server連線會有問題
   passwordaccess generate  <===== 照著key,這是密碼key in 的方式,當然也可以用明碼,只不過這樣有root 權限的user就可以任意去restore備份的資料下來看了,非常不安全。


存檔離開。

dsm.opt檔可以先不要去動,那是比較進階的設定部份。記得把dsm.opt.smp複製一份成為dsm.opt即可。


設定完畢之後,先與TSM Server連線第一次確認連線是否正常

[root@localhost bin]# dsmc
IBM Tivoli Storage Manager
Command Line Backup-Archive Client Interface
  Client Version 6, Release 2, Level 2.0
  Client date/time: 05/05/2011 20:20:48
(c) Copyright by IBM Corporation and other(s) 1990, 2010. All Rights Reserved.

Node Name: RHEL6
Please enter your user id <RHEL6>: <===== user id就是nodename,可以不必key,直接下enter.

Please enter password for user id "RHEL6":  <===== 輸入TSM Server系統管理員為您所設得密碼

過了之後就會到tsm的命令提示狀態下
tsm>_

這樣就表示可以正常與TSM Server連線了。

接著我們要設定自動排程,由於RHEL6的/etc/inittab已經不給下指令在其中,取而代之的是/etc/init/底下的檔案,要分別為每個服務另外寫,這邊我還沒研究透徹,所以把開機啟動的指令寫在/etc/rc.local裡。

先把dsmc在背景執行:
[root@localhost bin]# nohup /usr/bin/dsmc sched 2> /dev/null &

確認dsmc daemon有在執行
[root@localhost bin]# ps ax | grep dsmc
 2093 tty1   Sl    0:00 /usr/bin/dsmc sched  <=== Daemon在此
 2096 tty1   S+    0:00 grep dsmc
[root@localhost bin]#

將這個指令寫在/etc/rc.local使其在開機時自動執行

[root@localhost bin]# vi /etc/rc.local
在最後加入一行
nohup /usr/bin/dsmc sched 2> /dev/null &

存檔離開,並且reboot測試看看。

如果下ps ax | grep dsmc跟上面一樣有出現
2093 tty1   Sl    0:00 /usr/bin/dsmc sched
就表示開機會自動執行了。
關於/etc/init底下的寫法,我研究完畢會將正規的寫法補充上來。

2011年4月15日 星期五

[Linux] linux samba透過AD進行認證(CentOS版)

        很多企業內部的PC是透過一個AD Server認證,這AD也可以和LDAP整合,因此若公司內部的儲存部門想讓所有同仁可以透過網芳來存取自己專屬的空間(包含Linux系統使用者),我們可以用samba整合AD認證的作法來讓實現。


2011年3月23日 星期三

[電腦] Linux學習--Ubuntu更改hostname

更改hostname

1. /etc/hosts  改完這個系統才不會在對應上發生問題
2. /etc/hostname   主要的hostname設定檔

更改完畢後,sudo hostname -F /etc/hostname就ok了。