본문 바로가기

Computer Engineering/Linux

윈도우 혹은 리눅스에서 솔라리스 파티션에 접근하기

이 글은 윈도우 혹은 리눅스에서 솔라리스 파티션의 데이타를 읽거나 쓰는 방법에 대해 설명 합니다.


파트 1 - 윈도우에서 솔라리스 파티션 접근하기

운나쁘게도 윈도우는 솔라리스 파티션을 읽을 수 없습니다. 그러므로 여러분은 듀얼 부트 (솔라리스, 윈도우즈) 설정 환경에서의 윈도우에서 솔라리스 파티션에 데이타를 읽을 수 없습니다.

이 것을 극복할 하기 위해서 여러분은 가상 PC 에뮬레이터 Qemu 와 Mialx 라이브 시디를 이용할 수 있습니다.

윈도우용 Qemu 바이너리는 아래 링크에서 구하실 수 있습니다.

http://www1.interq.or.jp/~t-takeda/qemu/

(Qemu 홈페이지는 http://fabrice.bellard.free.fr/qemu/index.html 입니다.)

그리고 Milax 라이브 시디는 아래 링크에서 구하실 수 있습니다.

http://www.milax.org/?page_id=9

Qemu 어카이브의 압축을 푼 다음 (Qemu 는 설치가 필요하지 않음) Milax ISO 이미지 milax03.iso 를 Qemu 디렉토리에 복사하고 Mialx 가상 머신을 시작하기 위해 아래의 명령어를 입력 합니다.

cd <directory_with_the_qemu_binary>

qemu.exe  -L ".\bios" -m 256 -localtime  -boot d -cdrom ./milax03.iso  -hda \\\\.\\physicaldrive0 -net user -net nic,model=rtl8139 -redir tcp:1135::22 -name "Milax_(ssh_port:_1135)" -snapshot


주의:

파라미터"-snapshot" 은 "디스크 이미지 파일 대신 임시 파일에 쓸것" 을 의미 합니다. 이것은 Qemu 가 하드디스크에 쓰지 않음을 의미 합니다. 만약 변경사항을 하드디스크에 쓰길 원한다면 Qemu CLI 로 ctrl-alt-2 키를 이용해서 전환 하실 수 있습니다. 그리고 Qemu 커맨드 "commit ide0-hd0" 를 입력하시면 됩니다(자세한 사항은 Qemu 메뉴얼을 확인하시기 바랍니다). 가상 머신으로 돌아가기 위해서는 ctrl-alt-1 키를 이용합니다. 여러분은 절대로 Qemu 를 이용하여 -snapshot 파리미터 없이 실제 하드디스크를 접근해서는 안됩니다!!!

여러분은 Qemu 0.9.1 에서 백슬래시를 사용하려면 반드시 백슬래시 두개를 입력해야 합니다.

파라미터 "\\\\.physicaldrive0" 에서의 숫자는 사용할 디스크를 가르킵니다 - 만약 솔라리스가 첫번째 하드디스크에 있지 않다면 적절한 숫자로 바꿔주시기 바랍니다.

이 구문은 윈도우 XP (테스트됨) 에서 잘 동작하고 윈도우 2000 에서도 문제 없을 것입니다. Qemu 포럼에는 이 구문이 Vista 에서는 잘 동작하지 않는 다는 메세지들이 올라오고 있습니다 - 필자는 Vista 가 없어서 이부분을 확인해 보지 못했습니다.

이제 여러분은 가상 머신에서 솔라리스 파티션에 접근하실 수 있습니다.

여러분의 윈도우 호스트에서 가상머신에 접근하기 위해서는 다음의 명령을 이용합니다.

ssh -l alex -p 1135 localhost

혹은 scp 를 이용 합니다.

scp -p 1135  alex@localhost:/etc/release .


주의:

필자는 오직 Qemu 0.9.1 로 테스트 해 보았습니다 - 구버전의 Qemu 에서는 동작하지 않을 수도 있습니다.


파트 2 - 리눅스에서 솔라리스 파티션 접근하기

리눅스에서 위에서 언급한 workaround 는 필요 하지 않습니다. 왜냐하면 리눅스는 적어도 솔라리스 파티션과 UFS 빌트인에 대한 읽기 전용 접근을 제공하고 있기 때문입니다:

예제:

dmesg 를 이용해서 솔라리스 슬라이스를 위한 디바이스 이름을 확인해 보겠습니다:

root@tp61p:~# dmesg | grep sda

[   23.652384] sd 2:0:0:0: [sda] 312581808 512-byte hardware sectors (160042 MB)

[   23.652393] sd 2:0:0:0: [sda] Write Protect is off

[   23.652394] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00

[   23.652403] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

[   23.652434] sd 2:0:0:0: [sda] 312581808 512-byte hardware sectors (160042 MB)

[   23.652439] sd 2:0:0:0: [sda] Write Protect is off

[   23.652441] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00

[   23.652449] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

[   23.652451]  sda:sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray

[   23.677465]  sda1 sda2 sda3 sda4 < sda5 sda6 sda7 >

[   23.705547]  sda1: <solaris: [s0] sda8 [s1] sda9 [s2] sda10 [s3] sda11 [s4] sda12 [s6] sda13 [s7] sda14 >

[   23.706865] sd 2:0:0:0: [sda] Attached SCSI disk

[   28.739904] Adding 4128664k swap on /dev/sda6.  Priority:-1 extents:1 across:4128664k

[   28.945181] EXT3 FS on sda3, internal journal

[   30.894480] EXT3 FS on sda5, internal journal

root@tp61p:~#

이 예제에서 솔라리스 파티션의 슬라이스들은 리눅스 디바이스의 이름들로 접근할 수 있습니다.

Slice 	Linux device name

--------------------------------------------

s0 		sda8

s1 		sda9

s2 		sda10

s3 		sda11

s4 		sda12

s6 		sda13

s7 		sda14

여기에서 슬라이스 5번은 어떠한 리눅스 디바이스도 존재하지 않습니다. 왜냐하면 이 슬라이스는 솔라리스에서 사용되지 않기 때문입니다(슬라이스의 사이즈가 0 임)

이 슬라이스를 마운트 하려면:

root@tp61p:~# mount -t ufs -o ro /dev/sda8 /mnt
root@tp61p:~# df -k /mnt

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda8             11098457   9442316   1545157  86% /mnt
root@tp61p:~# ls /mnt

alternate_root  Desktop    home        milax03.usb         mnt21                   pool           test_root
bin             dev        kernel      milax.compressed    modinfo.out             proc           tmp
boot            devices    lib         milax.uncompressed  nautilus-debug-log.txt  root           usbcopy
BSITscite.pkg   Documents  lost+found  mnt                 net                     sbin           usr
cdrom           etc        media       mnt1                opt                     sol10hvm.save  var
data            export     milax       mnt2                platform                system         xen


만약 솔라리스 슬라이스에 대한 쓰기 권한이 필요 하다면 (그리고 여러분의 리눅스 배포판이 UFS 를 위한 쓰기 접근을 지원하지 않는 다면) 혹은 여러분이 솔라리스에서 ZFS 를 사용한다면 여러분은 Qemu 를 리눅스에서 실행해서 솔라리스 파티션의 데이타에 접근하실 수 있습니다:

qemu -net user -net nic -usb -usbdevice tablet -L "/usr/local/share/qemu"  -boot d \

                        -m 512 -net nic,model=rtl8139 -redir tcp:1135::22 \

			-name "Milax_(user_network)_(ssh_port:_1135)" \

                        -hda /dev/sda -cdrom ./milax03.iso -snapshot

주의:

/dev/sda 는 솔라리스 파티션이 있는 디스크 (파티션이 아님!) 입니다.

파라미터"-snapshot" 은 "디스크 이미지 파일 대신 임시 파일에 쓸것" 을 의미 합니다. 이것은 Qemu 가 하드디스크에 쓰지 않음을 의미 합니다. 만약 변경사항을 하드디스크에 쓰길 원한다면 Qemu CLI 로 ctrl-alt-2 키를 이용해서 전환 하실 수 있습니다. 그리고 Qemu 커맨드 "commit ide0-hd0" 를 입력하시면 됩니다(자세한 사항은 Qemu 메뉴얼을 확인하시기 바랍니다). 가상 머신으로 돌아가기 위해서는 ctrl-alt-1 키를 이용합니다. 여러분은 절대로 Qemu 를 이용하여 -snapshot 파리미터 없이 실제 하드디스크를 접근해서는 안됩니다!!!