歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

一步一步如何在Linux下刻錄數據光盤

本著讓 Linux 精神發揚光大宗旨,我將部門原來的 Windows 2000 服務器 上所有的數據與提供的服務全部遷移到新建的Linux服務器上。在我即將要把這台老Windows 2000服務器扔到一個陰暗的小角落的時候,眼前一亮,忽然發現這台破機器上還有一個Sony光盤刻錄機。
  本著讓Linux精神發揚光大宗旨,我將部門原來的Windows2000服務器上所有的數據與提供的服務全部遷移到新建的Linux服務器上。在我即將要把這台老Windows2000服務器扔到一個陰暗的小角落的時候,眼前一亮,忽然發現這台破機器上還有一個Sony光盤刻錄機。我一向有取它人所棄,變廢為寶的習慣,所以自然不能放過這個好東東。
  
  如何在Linux下使用刻錄機呢?我搜遍網上資料庫,也沒有能找到一個比較有效及全面的教材。無奈之下,只能閉關一個人瞎琢磨一番,當我抽完第7根香煙的時候,一個為suclearcase/" target="_blank" >ccess的字符串終於出現屏幕上。我驚喜不已,大聲尖叫一下,嚇得身邊正在美食的老兄,手指一抖,一塊好大的肥肉落在地上。此兄心痛不已,對我龇牙咧嘴下止,並向上天發誓:三日內必取我的項上人頭,決不失言,否則……。此及後話,我就不再多言,進入我們的主題吧。
  
  硬件環境:
  cpu:    Inter Pentium2 400
  mem:    384MB
  cdrom:   ASUS
  cdr:    SONY
  
  軟件環境:
  os:     Redhat 7.0
  kernel:   2.2.16
  
  在Linux下實現光盤刻錄的軟件最著名的工具是cdrecord。實際上它是一個工具包,其中包括cdreocrd, mkisofs, cdda2wav。dda2wav是針對於刻錄Audio CD的,不在這篇文章的說明范圍之內。我們重點是說明cdrecord,mkisofs的用法,以用如何配置SCSI與IDE設備。許多圖形界面的光盤刻錄軟件其實在底層調用的就是cdrecord,這些軟件我們可以在www.linuxbyte.net中找到,並且下載使用它們。在Linux系統中,cdrecord是與SCSI通用設備一起工作的,我想大部份讀者用的都是IDE光盤刻錄機,所以配置的關鍵就是將IDE設備摸擬成SCSI設備。要想將IDE設備摸擬成SCSI設備,系統內核就必須支持ATAPI-SCSI emulation或SCSI host adapter emulation,如果你的系統內核現在還不是這樣配置的,那麼你就需要重新編譯內核並且升級它。幸好,我手中上使用的這個Linux版本就已經默認支持了。
  
  第一步,我們應該知道我們的光驅與刻錄機對應是IDE哪一個通道,在Linux下是使用哪一個設備名。因為我們要在系統引導時讓系統內核知道哪些設備需要模擬成SCSI設備,我們就得傳遞一些參數給系統內核,具體做法如下:
  
  編輯lilo.conf文件,給Linux引導模塊增加一行參數。
  
  append = "hdb=ide-scsi hdd=ide-scsi"
  
  執行lilo命令,進行回寫操作。
  
  hdx是指光驅或刻錄機在Linux下對應的IDE設備名。如果你打算進行光盤數據直接刻錄時就需要如上的兩個字段,因為cdrecord在讀寫數據時要求兩個設備都為SCSI接口的。但是如果你只是通過先生成ISO中間文件,然後再刻錄這種形式的話,就只要指定其中一個字段就行了。如下:
  
  append = "hdd=ide-scsi"
  
  第二步,當重新引導系統完畢後,我們現在需要做得是將sg與ide-scsi這兩個內核驅動模塊加載到系統內核裡去,並為它們設定SCSI設備名。sg是指SCSI設備驅動模塊,ide-scsi是指IDE設備摸擬SCSI設備驅動模塊。操作如下:
  
  modprobe sg
  modprobe ide-scsi
  
  執行這兩個操作後,我們執行lsmod命令,查詢系統內核已加載模塊信息,對我們操作的結果進行驗證,顯示信息如下:
  
  Module Size Used by
  ide-scsi 7336 0 (autoclean)
  sg 15704 0 (unused)
  vfat 9404 0 (autoclean) (unused)
  fat 30688 0 (autoclean) [vfat]
  soundcore 2596 0 (autoclean) (unused)
  autofs 9124 1 (autoclean)
  lockd 31176 1 (autoclean)
  sunrpc 52964 1 (autoclean) [lockd]
  3c59x 19844 1 (autoclean)
  agpgart 18600 0 (unused)
  usb-uhci 19052 0 (unused)
  usbcore 42088 1 [usb-uhci]
  
  執行上面的操作後,我們就可以察看內核數據映像文件,得到設備更詳細的資料,最重要的是IDE模擬設備對應SCSI設備的id號。
  
  cat /proc/scsi/scsi
  -------------------------------------------------------------------
  Attached devices:
  Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ASUS Model: CD-S400/A Rev: 2.0S
  Type: CD-ROM ANSI SCSI revision: 02
  Host: scsi0 Channel: 00 Id: 01 Lun: 00
  Vendor: SONY Model: CD-RW CRX100E Rev: 1.0m
  Type: CD-ROM ANSI SCSI revision: 02
  
  當然,你的顯示內容可能有所不同,但形式應是一樣的。
  
  系統即然已經認出來了我們模擬的SCSI設備,但是我們還是要提供SCSI設備名映射它們,以便能讓刻錄軟件能夠使用。現好內核系統在加載sg時,就自動將/dev/sg0,/dev/sg1與我們的設備建立的對應關系。
  
  現在你可以使用scsi_info這個命令察看得到SCSI設備信息。
  
  scsi_info /dev/sg0
  ---------------------------------------------------------------
  SCSI_ID="0,0,0"
  MODEL="ASUS CD-S400/A"
  FW_REV="2.0S"
  
  scsi_info /dev/hdd
  ---------------------------------------------------------------
  SCSI_ID="0,1,0"
  MODEL="SONY CD-RW CRX100E"
  FW_REV="1.0m"
  
  這時我們已經正確地加載了這些設備。
  
  第三步,如果你是使用圖形界面的操作軟件,以下的內容你就不必再繼續往下看了,你只要按照軟件的提示,填入一些相應的參數,就可以執行操作了。我們在這裡重點講得是如何在命令行模式下進行操作。不管是你是想選擇文件進行刻錄,還是直接進行光盤數據刻錄,我們都需要生成一個中間ISO文件。生成ISO文件的任務就接給mkisofs這個命令來完成了,請輸入如下命令:
  
  mkisofs -r -o temp/aaa.iso data/
  
  具體參數解釋如下:
  -r 支持長文件名
  -o 指定輸出目標文件
  
  目標目錄最後在新生成光盤中做為根目錄存在,裡面存放的是你需要刻錄的數據。這個目標目錄最好是新建的,千萬不用選擇/tmp或用戶主目錄,因為這些目錄內會有一些臨時文件或隱含文件存在。我剛開始不知道,最後才發現新刻錄的光盤裡根目錄下有一些莫名其妙的文件。如果你是從光盤直接生成ISO文件,就需要用到dd這個命令了。請鍵入如下命令:
  
  dd if=/dev/cdrom of=temp/aaa.iso
  
  具體參數解釋如下:
  if 接定數據源設備
  of 接定目錄文件
  
  生成的ISO文件,隨時通過以下的命令進行驗證,查看結果是否是我們所想要的。
  
  mount aaa.iso -r -o loop /mnt/test
  
  可寫光盤的容量都是有限的,所以我們必須提前知道我們生成ISO文件的大小,否則會在刻盤時發生錯誤,到時候後悔也來不及了。直接察看ISO文件大小是可以的,但是我們要生成以後才知道,在這裡我來告訴大家一個小技巧,如何察看一個目錄,以及這個目錄下所有的子目錄中的文件大小的總和:
  
  du -m
  
  最後一行數據就行了,數據單位是MB。
  
  第四步,就也是最後一步了,我們只需要用cdrecord命令進行光盤刻錄就行了。請鍵入如下命令:
  
  cdrecord -v speed =2 dev=0.1.0 test/aaa.iso
  
  具體參數解釋如下:
  -v 進行數據校驗
  speed 指定刻錄機寫盤的速度
  dev 指定刻錄機的SCSI設備的ID號。
  -dummy 虛擬操作。

Copyright © Linux教程網 All Rights Reserved