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了。

2011年2月10日 星期四

[電腦] 基礎Linux學習--快速學會vi基本編輯用法

        vi是unix系統預設的文字編輯器,關於他的身世我就不說了。接觸這個東西是在大學一年級上計概的時候,我將自己學習的重點列出來,如果完全不會的人跟著學也可以學會用的。



1. 第一件事情,先學會上下左右的移動方式。

將你的食指放在"J"鍵上,感覺一下 J往下、K往上,這樣的設計是為了讓你的手保持打字的預備姿勢,不必離開鍵盤使操作更快速。H及L則代表左與右,嘗試著習慣這樣的操作方式才開始使用vi。

H J K L
←↓↑→


2. 第二件事情,ESC 鍵是在你做了自己不知道的事情之後,最重要的鍵。所以每次當你困惑的時候,不知道怎麼辦就按按ESC鍵,這個狀態可以讓我們做補救的動作。


         學習vi最忌被所謂的「高手」打擊,因為這些高手都自以為可以比新手操作得更熟練,所以嘲笑正在練習的初學者。在這邊,我要特意提醒的是,就算你用很笨拙的手法來操作,也已經比傳統那種文字編輯器快多了,所以慢慢學、慢慢習慣就好!不要在意自己是不是已經可以操作得很快很準。


3. 第三件事情,三個模式的運作。這邊就開始是正式操作會用到的部份了,但也不必覺得難,反正操作個兩三次就知道怎麼回事。

編輯模式 ← 一般模式 → 指令模式
i, a, o     ←     ESC    → :, /, ?

        看起來有點複雜了對吧? 這是假象!請記得「只要不知道自己在做啥,就按ESC回到一般模式」。一般模式讓我們可以隨意移動游標,選定要編輯的目標或範圍。只要記住這個要點就好了!

        那,我想要打字了要怎麼做? 這就是編輯模式了。可以透過按下 i, a或o來進行編輯。一開始只要記得小寫 "i" 就是insert(插入)的意思,其他的都可以先不要記,先學insert就可以了,這跟我們用一般的文字編輯器一樣,把要打得字打在滑鼠所點的空隙裡。

一進vi之後的畫面,得要按i, a或o才能開始編輯
按"i" 之後就可以隨意打字了



做完任何動作,都要回到一般模式,也就是上面說好幾次的「按ESC」,這樣才能做其他的動作,如存檔等等的。

4. 其他的我們先不說,就談「存檔」。怎麼存檔呢?只要在按過ESC之後,再下三個鍵就可以存檔並離開。

存檔並離開的用法→  :wq

: 代表進入指令模式,這時候就會在介面的最下方出現我們要下的指令
w代表寫入,也就是存檔起來的意思。
q代表離開。

鍵入:wq就可以存檔離開了


好了,vi的用法已經學會了,其他的功能我再另外寫一篇。這篇對我們而言,有什麼好處呢?
a. 在unix like的系統上,遇到vi你已經有編輯、存檔的能力,不會完全不知道怎麼辦。
b. 就算不是unix主機好了,現在linux系統那麼多,至少遇到也不必擔心不會用吧!
c. 學會游標的移動方式就是最成功的入門,這是vi最大的門檻,通常學不會vi的人就只是因為移動的方式不習慣而已!


學習最大的阻礙,就是所謂的「高手」的擾亂跟嘲諷,只要跳脫這個環境就可以穩定的學習。

2011年1月3日 星期一

[電腦] 基礎Linux學習--Filesystem

       我的工作就是幫使用者維護儲存體,File System是我必須要滾瓜爛熟的部份,所以初步我以鳥哥的書來引導學習。這個部份學熟了之後,再想變化型的主題,比如軟體Raid、GPFS等等。

  • Sector: 512 bytes/Sector
  • 一個Sector構成的圈圈,就是Cylinder,是Partition的最小單位。
  • 第一個Sector含有MBR及Partition Table,MBR佔446 bytes,Partition Table佔64 bytes。
        在Linux系統中,檔案系統會將檔案的「內容」與「檔案權限屬性」分開存放。權限與屬性放在inode;檔案的資料內容放在data block裡。
        另外,superblock記錄整個File System的整體資訊,包含inode與block的使用量等等。

  • Superblock: 紀錄整體Filesystem的資訊,如inode與block的總量、使用量與剩餘,以及其他相關資訊。
  • inode: 記錄檔案的屬性,一個檔案佔用一個inode(所以inode有可能會用完),並且inode也記錄檔案資料所在的block 號碼。
  • block: 記錄檔案的實際內容,block size大小與存取速度有關係,若檔案很大的話也會佔用好幾個block。
 (2011/01/03讀至8-7)