歡迎您光臨本站 註冊首頁

Unix編程/應用問答中文版 ---5.塊設備相關問題

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
本文出自:http://www.nsfocus.com 維護:小四
5. 塊設備相關問題
5.1 CDROM設備究竟在哪裡
5.2 如何彈出光碟機
5.3 如何利用超級塊進行恢復工作
5.4 Solaris Root口令忘記了
5.5 如何使用fmthard
5.6 如何從光碟恢復Solaris 7的引導扇區
5.7 Solaris支持類似微軟autorun.inf文件的功能嗎
5.8 如何修改/dev/null的屬性
5.9
5.10 如何自己製作Solaris啟動軟盤
5.11 x86/Solaris如何訪問FAT32分區
--------------------------------------------------------------------------

5. 塊設備相關問題

5.1 CDROM設備究竟在哪裡

Q: 為了mount光碟機,需要哪些包

A: SUNWvolr SUNWcstl SUNWcstlx

D: Dennis Clarke

1) su - root
2) /etc/init.d/volmgt stop
3) ls -1 /dev/dsk/c*s2
4) mount -F hsfs -o ro /dev/dsk/c0t6d0s2 /cdrom

或者

1) /etc/init.d/volmgt stop
2) /etc/init.d/volmgt start
3) volcheck
4) eject

觀察/etc/vold.conf

Q: 如何才能知道哪個設備文件對應CDROM(c0t2d0s0?).如果有一張光碟在CDROM里,
可以用df命令看到對應的設備文件,但是沒有光碟在光碟機里的時候呢?

A: /dev/sr0 是一個指向最終設備文件的符號鏈接,僅對SPARC有效,不包括x86

A: Logan Shaw

$ uname -sri
SunOS 5.8 i86pc
$ ls -l /dev/sr*
lrwxrwxrwx /dev/sr0 -> dsk/c1t0d0s2
$

我想x86下是一樣的

Q: E420R,Solaris 7 11/99,我從http://sunsolve.sun.com獲得一些補丁並安裝了,
結果現在我的光碟機出問題了.似乎mount成功了,但是找不到文件,/etc/mnttab
中沒有任何有關光碟機的信息,插入一張光碟會彈出一個文件管理器窗口,但是沒
有文件.

A: Danny Mann



檢查是否打了如下Solaris 7內核補丁106541-13和 -14.這兩個補丁有問題.解
決辦法是禁止vold,手工mount光碟機.

A: rschicht@my-deja.com

試試volrmmount -d命令.用patchadd -p檢查是否安裝了補丁106541-14,訪問如
下鏈接

http://sunsolve.Sun.COM/pub-cgi/show.pl?target=patches/patch-access

獲取補丁106541-14的說明,閱讀NOTE 15.

A: 補丁106541-14的說明,NOTE 15

1. 首先禁止掉vold守護進程
# /etc/init.d/volmgt stop

2. 手工mount光碟機(設備文件名可能不同)
# /etc/mount -F hsfs -o ro /dev/dsk/c0t2d0s0 /cdrom

查看/etc/vfstab、/dev/dsk確認光碟機所在設備文件名.

5.2 如何彈出光碟機

Q: 在安裝Oracle 8i時,系統提示插入第二張光碟,但是此時無法成功eject第一張
光碟,終端掛起,殺掉Oracle 8i的安裝進程也無濟於事.唯一的辦法是reset.

A: Sergey Kurganov

下面的操作或許有所幫助

1) 終止卷管理器
# /etc/init.d/volmgt stop

2) unmount光碟機,手動eject

3) 重啟卷管理器
# /etc/init.d/volmgt start

D: plane@smth.org 2002-02-26 01:03

裝Oracle 9的時候,安裝文檔特意提醒要用絕對路徑才能換盤.

5.3 如何利用超級塊進行恢復工作

Q: Sun工作站在reboot時掉電了,用安裝光碟啟動進入單用戶模式,執行fsck命令時
報錯

Stop-A
ok boot cdrom -s

INIT: SINGLE USER MODE
# fsck -o b=32 /dev/rdsk/c0t5d0s*
Alternate super block location: 32.
** /dev/rdsk/c0t5d0s0
BAD SUPER BLOCK: MAGIC NUMBER WRONG
USE AN ALTERNATE SUPER-BLOCK TO SUPPLY NEEDED INFORMATION;
eg. fsck [-F ufs] -o b=# [special ...]


where # is the alternate super block. SEE fsck_ufs(1M).
Alternate super block location: 32.
** /dev/rdsk/c0t5d0s1
BAD SUPER BLOCK: MAGIC NUMBER WRONG
USE AN ALTERNATE SUPER-BLOCK TO SUPPLY NEEDED INFORMATION;
eg. fsck [-F ufs] -o b=# [special ...]
where # is the alternate super block. SEE fsck_ufs(1M).
Alternate super block location: 32.
** /dev/rdsk/c0t5d0s2
BAD SUPER BLOCK: MAGIC NUMBER WRONG
USE AN ALTERNATE SUPER-BLOCK TO SUPPLY NEEDED INFORMATION;
eg. fsck [-F ufs] -o b=# [special ...]
where # is the alternate super block. SEE fsck_ufs(1M).
Alternate super block location: 32.

A: Sree Mokkapati

正確的用法就在錯誤提示信息里,你應該使用另外的超級塊進行恢復工作,32僅
僅是常用備份超級塊之一.

fsck -F ufs -o b=32 device_name

此外如果想知道還有哪些備份超級塊可用,執行

newfs -Nv device_name

先用df等命令確認原始device_name.

D: scz 2001-10-12 17:01 修訂

SPARC/Solaris的硬碟損壞多半是文件系統根區被破壞,並不需要拆卸硬碟到其他
機器上mount后fsck,找一張Solaris安裝光碟

Stop-A進入OBP狀態,在ok提示符下輸入

ok> boot cdrom -s

進入單用戶模式.此時原有根文件系統並未mount上來,也不需要mount原有根文
件系統,直接

newfs -Nv /dev/rdsk/c0t0d0s0

找出原根文件系統所有備份超級塊號

fsck -y -F ufs -o b=<任一備份超級塊號> /dev/rdsk/c0t0d0s0

這裡假設原根文件系統的原始設備名是/dev/rdsk/c0t0d0s0.其他文件系統的原
始設備名可以在系統完好時 df -k 獲取,或者從/etc/vfstab中獲取信息.比如

/dev/rdsk/c0t0d0s0 /


/dev/rdsk/c0t0d0s6 /usr
/dev/rdsk/c0t0d0s7 /export/home

vfstab(4)解釋得很模糊,回頭我上www.google.com去找找其他資料.

The fsck pass value of 2 means that the file system will be checked,
but not sequentially

5.4 Solaris Root口令忘記了

Q: 忘記了root口令,怎麼辦

A: Steve Menard

啟動時按Stop-A進入ok提示符
ok boot cdrom -s (放入啟動安裝光碟)
mount /dev/dsk/c0t0d0s0 /mnt (這裡指定原根區對應的原始設備名)
TERM=vt100;export TERM
vi /mnt/etc/shadow
刪除root口令加密串,比如
root:WxzL460hohWsU:10724::::::
刪除WxzL460hohWsU,確認你還有8個冒號,重啟動

或者 /usr/sbin/reboot -- "cdrom -s"

A: Philip Brown

使用vi有很多麻煩的地方,可以考慮sed
mount /dev/dsk/c0t0d0s0 /mnt
sed 's/:WxzL460hohWsU:/::/' /mnt/etc/shadow > s
mv s /mnt/etc/shadow

或者使用ed
mount /dev/dsk/c0t0d0s0 /mnt
ed /mnt/etc/shadow
1s/root:[^:]*:/root::/ (注意,前面是1,不是l)
w
q

5.5 如何使用fmthard

A: Seán Boran

如果希望對第二塊物理硬碟的分區與第一塊物理硬碟一樣,考慮fmthard和prtvtoc的
結合使用,要比手工format快得多.比如,第一塊物理硬碟是target 3,第二塊物理
硬碟是target 1,我們希望第二塊物理硬碟磁碟卷標是"mirror",做如下操作:

/usr/sbin/prtvtoc /dev/rdsk/c0t3d0s2 | /usr/sbin/fmthard -n mirror -s - /dev/rds
k/c0t1d0s2

man -s 1M fmthard了解更多細節.

5.6 如何從光碟恢復Solaris 7的引導扇區

A: paranoid@bbs.tsinghua.edu.cn

在安裝盤裡有一個tools目錄,進去後有一個命令叫做installboot



A: melonm@bbs.tsinghua.edu.cn

比如
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0

5.7 Solaris支持類似微軟autorun.inf文件的功能嗎

Q: 我自己製作了一張光碟,同時用於Solaris和Windows.在Windows環境下,可以利
用autorun功能,當插入光碟的時候自動調用喜愛的瀏覽器打開一個文件.不知道
Solaris 7/8下是否存在類似功能.

A: hakteng

是的,從Solaris 8(CDE version 1.4)開始支持類似功能了

o 創建一個名為"volstart"的腳本文件,比如

--------------------------------------------------------------------------
#! /bin/ksh
#
# This is a CD volume start script. This start script is designed
# to be automatically run when the CD is inserted into a Solaris
# system's CDrom drive.
#
# Note: not all Solaris systems have an auto volstart ability. If this
# CD is inserted into a CDrom drive of a Solaris system without the
# volstart ability, volstart can also be run manually by executing it
# from either the desktop's file manager or from a Unix command line.
full_name=$0
dir_name=`/usr/bin/dirname $full_name`
if [[ -x /usr/dt/bin/dtaction ]]; then
# Run the CDrom's installer program
/usr/dt/bin/dtaction Run $dir_name/installer
fi
--------------------------------------------------------------------------

o 將"volstart"文件放在光碟根目錄下

o /usr/dt/bin/sdtvolcheck腳本中存在如下語句
if [[ -x $mountPt/volstart ]];then exec $mountPt/volstart;
於是,當插入光碟的時候volstart腳本被執行,對於上例,最終導致installer被
執行

5.8 如何修改/dev/null的屬性

Q: /devices/pseudo/mm@0:null的屬性是0620 root tty,我想
chmod 666 /devices/pseudo/mm@0:null ,但是幾分鐘后,屬性被修改回


0620 root tty,怎麼辦

A: Markus Mayer

查看/etc/minor_perm文件,

# grep -s null /etc/minor_perm
mm:null 0620 root tty

修改該文件中的這一行成"mm:null 0666 root sys"即可.

5.10 如何自己製作Solaris啟動軟盤

Q: 我知道可以去
http://soldc.sun.com/support/drivers/dca_diskettes/
下載啟動軟盤的映象文件,可我還想知道它最初是如何製作出來的

A: 小四

1) 用fdformt格式化軟盤

2) 用newfs在軟盤上創建新的文件系統

3) 將軟盤mount上來

4) 用cp命令複製the second-level disk booter(boot或者ufsboot)到軟盤,比如
/platform/sun4u/ufsboot.參看installboot(1M)、boot(1M)手冊頁

5) 用installboot命令安裝boot block到軟盤,比如
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t0d0s0

6) 用cp命令複製必要的工具文件到軟盤

7) unmount軟盤

8) 用eject命令彈出軟盤

5.11 x86/Solaris如何訪問FAT32分區

A: Dan Anderson

mount -F pcfs /dev/dsk/c0t0d0p0:1 /mnt/<...> # SCSI
mount -F pcfs /dev/dsk/c0d0p0:1 /mnt/<...> # ATAPI

c0 控制器ID
t0 SCSI ID (對於ATAPI省略)
d0 對於SCSI總是0,對於ATAPI是硬碟號
p0 p0對應第一個主分區表項
:1 對應邏輯驅動器(c - z 或 1 - 24)

有些報告說如果FAT32分區不對應第一個主分區表項,mount失敗,感覺x86/Solaris
對pcfs支持混亂.

A: spp(低音炮)

在SPARC/Solaris 7上df -k

# df -k
/dev/dsk/c0t0d0s0 /
/dev/dsk/c0t0d0s6 /usr
/dev/dsk/c0t0d0s7 /export/home

在x86/Solaris 8上df -k

# df -k
/dev/dsk/c0d0s0 /
/dev/dsk/c0d0s7 /export/home

c 硬碟控制器的位置,比如主板第二個IDE介面上的第一個硬碟(主盤)對應c1d0


t 只SPARC有,SCSI ID
d 某一確定硬碟控制器(c參數決定)上硬碟位置
p 只x86有,對應MS系統的Partition概念
s slice號,Solaris系統的概念,不太好解釋,如果和p一起出現,可以理解成類似
MS邏輯驅動器的概念

假設x86架構上某硬碟在主引導扇區有兩個主分區表項,第一個為FAT32分區,第二個
為Solaris分區,Solaris分區上劃分了兩個slice,一個為根文件系統/、一個為swap
區,則分別表示為/dev/dsk/c1d0p0:1(FAT32)、/dev/dsk/c1d0p1s0(/)、
/dev/dsk/c1d0p1s1(swap)

在mount FAT32分區時應該用

mount -F pcfs /dev/dsk/c1d0p0:1 /mnt/

D: 小四

注意,Solaris的slice概念和FreeBSD的slice概念不同,FreeBSD的slice概念就是MS
的partition概念,而Solaris的slice概念類似於MS擴展分區上的邏輯驅動器概念.



[火星人 ] Unix編程/應用問答中文版 ---5.塊設備相關問題已經有921次圍觀

http://coctec.com/docs/linux/show-post-57688.html