윈도우 파티션을 리눅스 파티션으로 바꾸기
(How to remove windows)

배철수 : 리눅스 월드 발행인

 

 

    이 기사에서 나는 윈95와 리눅스가 모두
    설치된 시스템에서 윈도우 파티션을 제거하고
    이 공간을 리눅스에서 사용하는 방법을 설명한다.

 

서론

    리눅스를 설치한지 두 달 쯤 지난 어느날 나는 윈도우를 지우기로 결정했다. 이유는 이제 나는 더 이상 윈도우를 사용하지 않기 때문이다. 상당수의 리눅스 사용자도 같은 입장일거라 생각해 나는 이 글을 쓰게 되었다.

    이런 경우라면 두 가지 방법이 가능하다.
    첫 번째 방법은 리눅스를 다시 설치하는 것이다. 이 방법은 리눅스에 대한 지식이 조금 있다면 설치 때 나은 선택을 할 수 있다는 것이다.  특히 파티션 크기에 대해서이다.
    불편한 것은 당신은 모든 것을 잃는다는 것이다.

    물론 CD-ROM에 없는 내용을 백업하므로서 회피할 수는 있지만 백업 내용을 다시 설치하는것도 시간이 많이 들고 힘들다는 것이다.

    두 번째 방법은 윈도우를 지우고(쉽다) 그 부분을 리눅스에서 사용하는 것이다. 즉 리파티션(repartition) 방법인데 약간 까다롭고 별로 문서화 되지 않은 방법이다.

    이 방법의 이점은 성공한다면 시스템은 예전과 똑 같고 디스크 용량은 증가한다. 또 하나의 이점은 실패해도 첫 번째 방법을 쓰면 된다는 것이다.

    이 문서에서는 내가 어떻게 했는지만 설명한다. 당신의 경우는 다를수도 있다. 특히 만약 당신이 커다란 안쓰고 있는 하드가 있다면 이 하드에 모든 파일을 백업하고 처음부터 다시 설치해도 된다.
    이 방법이 물론 보다 안전하고 좋은 결과를 가져다 준다. 나는 그런데 백업에 1.44mb 플로피를 쓰고 있다. 어쨌든 아래 방법이 새로운 사용자에게 유용하기 바란다.

    나는 이 문서의 프리 버전인 fr.col.moderated 에 게시된 메시지에대한 상세한 답변에대해 Olivier Tharan 에게 감사드린다.

    나는 Finn Bo Jorgensen 과 Chmouel Boudjnah의 도움에대해서도 감사드린다.

 

1.주요 절차(Principal Steps)

    - 준비 : 백업, 진행하기전에 중요한 파일들에대해 필기를 하고 검사하라.
                무엇을 하려는지 알기위해 문서를 읽으라(section 3).
    - 윈도우를 제거하라(section 4 ).
    - 리파티션 , 어려운 부분 (section 5).

 

2. 준비 및 어려운 부분 (Preparation and sources of difficulty)

    우선적으로 핵심 파일들을 백업하라. 특히 구성 파일과 작업 파일들을. 그에 대해서는 더 이상 언급하지 않겠다. 사전 절차는 앞으로 하는 일들을 이해해야 한다는 것이다. 진행하는 동안 명령과 파일들에대한 설명을 하지만 부족하다. man 페이지를 읽으라.  fdisk, mk2ext, cp (괜찮은 명령이다), lilo, lilo.conf, fstab 등이다. 또한 구성 파일에대해서도 man 페이지가 있다.

    lilo에대한 상세한 문서는 /usr/doc/lilo-0.20/doc/ 디렉토리에 있다. (당신의 시스템이 정확히 설치돼 있다면). 특히 46페이지의 사용자 가이드가 있다. fdisk에 대해서는  /usr/doc/util-linux-2.7/README.fdisk 파일을 보라. 이 글을 쓰면서 나는 매우 유용한 관련 mini-Howto를 발견했다. Hard Disk Upgrade Mini How 이다.

    아래가 나의 파티션 테이블이다.

    [olivier@snoopy  olivier]# /sbin/fdisk -l      (en su)

    Disk /dev/hda: 128 heads, 63 sectors, 788 cylinders
    Units = cylinders of 8064 * 512 bytes

     

Device

Boot

Begin

Start

End

Blocks

Id

System

/dev/hda1

*

1

1

397

1600672+

c

Unknown

/dev/hda2

 

398

398

601

822528

83

Linux native

/dev/hda3

 

602

602

627

104832

82

Linux swap

/dev/hda4

 

628

628

788

649152

83

Linux native

     

    윈도우가 hda1에 있는 것을 알 수 있다. fdisk가 FAT32파티션을 <<Unknown>>이라 표시하는 것은 이상하지 않다. 나의 커널(2.0.34)은 윈도우 파일시스템을 인식하지만 fdisk는 그렇지 않다.

    이를 증명하기위해 도스 파티션을 마운트 한 후 df 명령을 실행하였다.

    [olivier@snoopy olivier]# df

     

    Filesystem

    1024-blocks

    Used

    Available

    Capacity

    Mounted on

    /dev/hda2

    796065

    506992

    247947

    67%

    /

    /dev/hda4

    628351

    226366

    369528

    38%

    /home

    /dev/hda1

    1594456

    850420

    744036

    53%

    /mnt/dos

     

    당신은 /etc/fstab,  /etc/lilo.conf 두 개의 구성 파일을 수정해야한다. 현재는 이렇게 보일 것이다.

    [olivier@snoopy olivier] less /etc/fstab

     

    /dev/hda2

    /

    ext2

    defaults

    1 1

    /dev/hda4

    /home

    ext2

    defaults

    1 2

    /dev/hda3

    swap

    swap

    defaults

    0 0

    /dev/hd0

    /mnt/floppy

    ext2

    user,noauto

    0 0

    /dev/cdrom

    /mnt/cdrom

    iso9660

    user,noauto,ro

    0 0

    none

    proc

    proc

    defaults

    0 0

    /dev/hda1

    /mnt/dos

    msdos

    user,noauto

    0 0

     

    [olivier@snoopy olivier] less /etc/lilo.conf

         boot=/dev/hda
         map=/boot/map
         install=/boot/boot.bi
         prompt
         timeout=500
         image=/boot/vmlinuz-2.0.34-1
                 label=linux
                 root=/dev/hda2
                 read-only
         other=/dev/hda1
                label=dos
                table=/dev/hda

 

3. 윈도우 파티션 재구성(Rebuilding the windows partition)

    지금부터는 모든걸 루트(root) 권한에서 실행해야 한다. 심리적인 이유로 나는 당신이 root로 login 하기를 바란다(su를 사용하지 말라).

    편집기로 vi를 사용한다면 w!으로 저장하라. 어떤 경우든 수정이 저장되었는지를 확인하라(편집기를 종료하고서 less 명령을 실행하라).

    fdisk 와 mke2fs 명령을 사용할 것이다. 이 명령은 하드 디스크 파티션에 사용되며 모든 다른 저장매체에도 사용된다. 마운트 되지 않은 파티션에 이 명령을 사용하는 것이 좋다. 아래 절차를 밟으라.

    - 파티션이 마운트 되었으면 unmount 하라.
       : umount /mnt/dos.

    - fdisk를 실행하라. hda1의 파티션 타입을 변경하라. 이제 이 파티션이  Linux native
       파티션이라고 선언한다. T 명령을 사용한다(t, 1, 83).
    - P 명령으로보면 변경된 부분은 Unknown이 linux native가 되었고 c 가 83이 된 것이다.
    - 저장 후 종료하라.(w) : fdisk -l 로 다시 확인하라.
    - fdisk 종료시 다음 에러 메시지를 받았다.

        The partition table has been altered!
             Calling ioctl() to re-read partition table.
             Syncing disks.
             Re-read table failed with error 16: Device or
           resource busy.
             Reboot your system to ensure the partition table is
           updated.

    내가 아는한 이 메시지는 정상적이고 무해하다. 나는 리부팅하지 않았다.

    - 포맷 : mke2fs /dev/hda1. 수많은 숫자가 나타나고서 시스템이 한참 무슨 일을 한다.
                이제 윈98은 더 이상 존재하지 않는다. 신중한 사람이라면 배드블록 검사를 위해
                -c 옵션을 사용할 것이다.

    이제 윈도우는 사라졌다. 이에 대해 무슨 쾌감을 느끼지는 않는다(나는 윈98에대한 개인적 감정은 없다). 단지 나는 리눅스가 좋을 뿐이다.

 

4. 새 파티션 사용하기

    이제 나는 아무것도 들어있지 않은 1.5 Gb 파티션과 /home 디렉토리를 위한 600 Mb 파티션 /에대한 800 Mb  (그리고 100 Mb 스왑)을 갖고 있다.
    /home/myaccount에는  100 Mb 가 있다. 이는 /usr/local에 갈 것이다.(나는 이를 /dev/hda2에 놓겠다) /usr/local에는 현재 10메가가 있다. 나는 루트 파티션(/)을 hda1으로 옮기겠다.(원래 윈95 차지였던 곳)  그리고 /usr/local 을 hda2에 놓겠다. 결과는 아래처럼 될 것이다.

     

    Filesystem

    1024-blocks

    Used

    Available

    Capacity

    Mounted on

    /dev/hda1

    1600672

    465000

    1130672

    29%

    /

    /dev/hda2

    796065

    110000

    696065

    13%

    /usr/local

    /dev/hda4

    628351

    40739

    587612

    6%

    /home

     

    몇 년간은 쓸 정도로 충분하다.

    이제 어떻게 이를 달성하는가. hda1을 접근하기 위해 서는 어딘가에 마운트 해야한다.

    보통 /mnt에 올린다.

    - /mnt 에 새 디렉토리를 만들라. /mnt/tmp 라고 하자. (mount는 디렉토리를   만들어 주지 않는다): mkdir /mnt/tmp.

    - /mnt/tmp에 hda1을 마운트하라 : mount -t ext2 /dev/hda1 /mnt/tmp  
      (-t ext2 는  filesystem 타입을 지정한다).

    - / 를 /mnt/tmp/ 에 원래 구조를 유지한 채 복사하라. : cp -ax / /mnt/tmp/.

    - a 옵션은  man 페이지는 말하길 복사시에 원래 파일(디렉토리)의 구조와 특성을 가능한한
       보존한다. -dpR과 같다. d, p, R 의 의미는 cp man 페이지를 참고하라. -x 옵션은 다른 파일
       시스템에 있는 서브디렉토리를 스킵할지를 묻는다. 내 경우에는 /home를 /dev/hda1을 복사
       하는걸 방지한다. 복사   작업은 약간 시간이 걸린다. 이제 남들이 하는 것 처럼 커피 한잔을
       들거나 위스키를 더블로 한잔하라.

    - hda1에는 빠진게 있다. -x 옵션 때문에 /home과 /proc 디렉토리가 빠져
      있다. 그러므로 mkdir /mnt/tmp/home 그리고 mkdir /mnt/tmp/proc 명령을 주라.
      이 디렉토리는 /home과 /proc 디렉토리가 /에 마운트 되도록하기 위해 필요하다.

    이제 일이 약간 더 복잡해진다. 우리는 /를 hda2에 갖고있다. 그러나 /mnt/tmp/에도 있다. 이제 다시 시작해야 한다. fstab와 lilo.conf를 수정해야 한다.
    리눅스에게 우리는 /를 /mnt/tmp 에 있는걸로 시작하려 한다는걸 말해야 한다. 그러므로 우리가 수정해야하는  fstab는/mnt/tmp/etc/fstab 이다.

    그러나 lilo.conf는 다르다. 우리는 /etc/lilo.conf를 수정하고 lilo를 돌려야 한다. 그리고 /etc/lilo.conf를  /mnt/tmp/etc/lilo.conf 에 복사해야 한다.

    또는 /mnt/tmp/etc/lilo.conf 파일을 수정하고서 -C 옵션으로 다른 구성 파일을 사용해야 한다고 알려 주어야 한다. 나는 두번째 방법을 썼다.

    - /mnt/tmp/etc/fstab

    이 파일은 시작시 마운트하는 모든 것들을 어디에 어떻게 마운트 할 지를 알려준다. 우리는 /hda1이 /가 되기를 원한다. 그래서 fstab 의 첫째 라인이 아래처럼 되야 한다. 물론 우리는 두개의 루트를 마운트 할 수 없다. 우리는 /dev/hda2에서 작업해야 하므로 이를 /mnt/tmp 에 올린다. 다른 부분은 그대로이다.

     

    /dev/hda1

    /

    ext2

    defaults

    1 1

    /dev/hda2

    /mnt/tmp

    ext2

    defaults

    1 2

    /dev/hda4

    /home

    ext2

    defaults

    1 3

    /dev/hda3

    swap

    swap

    defaults

    0 0

    /dev/fdo

    /mnt/floppy

    ext2

    user,noauto

    0 0

    /dev/cdrom

    /mnt/cdrom

    iso9660

    user,noauto,ro

    0 0

    none

    /proc

    proc

    defaults

    0 0

     

    - /mnt/tmp/etc/lilo.conf.

    lilo.conf 는 lilo의 구성 파일이며 MBR에 위치한다. 세부적인건 다루지 않는다. 다른 사람이 lilo를 사용하지 않는다면 사용하라고 강력히 권하겠다. (lodelin 은 우리의 경우에 터무니 없다. 그리고 요즘도 플로피롤 부팅하나요?)이제 우리는 lilo에게 커널이 hda1에 있다고 말해주어야 한다. (이전에는 hda2에 있었다) 윈도우에관한 모든 걸 지운다.

    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=500
    image=/boot/vmlinuz-2.0.34-1
    label=linux
    root=/dev/hda1
    read-only

    - lilo 실행 : /sbin/lilo -v -C /mnt/tmp/etc/lilo.conf. v는  lilo 실행에 관한
       정보를 알려준다. 여기에 에러가 나오면 안된다. 다시 리부팅하기를 바란다면    실수를 해서는 안된다 . 아래와 같은 메시지를 보게 될 것이다.

    LILO version 20, Copyright 1992-1997 Werner Almesberger
         Reading boot sector from /dev/hda
         Merging with /boot/boot.b
         Boot image: /boot/vmlinuz-2.0.34
         Added linux *
         /boot/boot.0300 exists - no backup copy made.
         Writing boot sector.

    - 리부팅하라. 약간의 테스트를 해보라.(df, fdisk -l, 등이다. 파일시스템이
       우리가 원하는 바인가).

    - /mnt/tmp/에서 모든 걸 지우라. /mnt/tmp에서 아래처럼 실행한다.
      : rm -rf *

    - 이제 /usr/local을 cp -a 명령으로 /mnt/tmp에 복사하라.
       (cd /usr/local 후에)
    - 모든게 정확한지 체크하라. 그리고 /usr/local을 지우라.
       즉 /usr/local에서 rm -rf * 명령을 주라.(단 디렉토리는 지우지 않아야 한다
       이는 마운트 포인트가 되므로)
    - 다시 /etc/fstab을 수정해 두 번째 라인을 아래처럼 바꾸라.

          /dev/hda2    /usr/local      ext2    defaults       1 2

    - 리부팅하고 테스트하라.

    작업은 끝났다. 나는 모든게 만족스러웠다. 프로그램을 모두 테스트 했으나 이상이 없다.

 

문제점>

    실제는 약간의 문제가 있다. 위는 실제 그대로는 아니고 이상적인 경우이다. 내가 할 수 있는 충고는 당신이 현재 진행 중인 내용을 이해해야 한다는 것이다. 그래서 잘 안되면 그것을 수정해야한다.

    Olivier Tharan 은 내게 “싱글 유저모드로 리부팅하라고 했지만 그렇게 하지 않았다. 왜냐하면 내가 싱글유저모드에 대해 아는 유일한 문서에는 “싱글유저 부트모드에서 파일을 보라” 였다.

    첫 번째 리부트 후에는 부팅디스켓을 만드는게 신중한 처사이다. 이것도 상황에 따라 다르다. 그러나 나는 정확히 알지 못한다.

    내가 겪은 문제들이다. 첫번 리부팅 전에 나는 모든걸 다 했다. 그러나 파일시스템 마운트 후 여러 에러 메시지가 화면에 나타났다. 언뜻 읽기에는 /proc ... error ... error ... /home ... error 등 이었다(/var/log/messages에는 안나왔다). 그리고서 login 프롬프트가 사라졌다. 나는 root로 login했다.

    [root@snoopy root]$ df

     

    Filesystem

    1024-blocks

    Used

    Available

    Capasity

    Mounted on

    /dev/hda1

    1548535

    506977

    961525

    35%

    /

    /dev/hda2

    796065

    506992

    247947

    67%

    /mnt/tmp

     

    home이 마운트 되지 않았다. fstab을 편집해 보았으나 모든게 정상이었다.  그러다 기발한 생각이 들었다. /home을 마운트해 보자. 그러나 결과는 아래 에러 메시지 였다.
    <<mount: mount point /home does not exist>>.

    나는 마운트 포인트가 무언지를 깨달았다. 그리고 cp에서 x 옵션을 잊었다는 생각이 들었다. 그래서 /home과 /proc를 만들고 마운트하니 모든게 작동되었다.

    그래서 위와 같이 적는다.

    참조>
    man pages: fdisk, mk2ext, cp, mv, rm, lilo, lilo.conf and fstab
    /usr/doc/lilo-0.20/doc/User_Guide.ps
    /usr/doc/util-linux-2.7/README.fdisk
    Hard Disk Upgrade Mini How-To

     

    필자 : Olivier Chapuis
    이글은 LinuxFocus 1999년 7월호 기사입니다.




▲ top

home으로...