발생할 수 있는 어떠한 피해에 대해서도, 복구 절차는 다음의 4단계만이 요구됩니다.
첫째, 디스크들의 라벨(예: disklabel sd0 | lpr),
파일 시스템 테이블(/etc/fstab), 모든 부트 메시지들을 두 카피씩
출력하세요.
둘째, 시스템의 모든 디바이스가 boot, fixit 플로피(boot.flp와 fixit.flp)에 포함되어 있는지 확인하십시요. 손쉬운 확인 방법은 boot 플로피로 시스템을 부팅하여 출력되는 메시지들을 살펴보는것 입니다. 모든 디바이스가 포함되어 있고 잘 동작한다면, 셋째 단계로 넘어가십시요.
그렇지 않다면, 장착된 디스크를 마운트하고,
테이프 드라이브가 제어되는 커널이 삽입된 두장의 맞춤 부팅 플로피를
만들어야 합니다. fdisk(8), disklabel(8), newfs(8),
mount(8), 필요한 백업 프로그램 또한 포함되어야 합니다.
프로그램들은 스태틱 링크(역자주: statically linked, 필요한 라이브러리가
실행 파일에 모두 포함된)여야 합니다. 백업에 dump(8)가 사용되었다면,
restore(8) 또한 포함하십시요.
셋째, 여느 때와 같이 테이프 백업을 수행하십시요. 마지막 백업 이후 수정된 자료들은 복구가 불가능할 수도 있습니다. 백업된 테이프에 쓰기-방지 탭을 거십시요.
넷째, 플로피(boot.flp와 fixit.flp 혹은 둘째 단계에서 만든
두장의 맞춤 부트 플로피)와 백업 테이프가 양호한지 검사하십시요.
복구 순서를 노트하여, 부트 플로피와 백업 테이프에 붙이고 출력도
해 두십시요. 정신이 매우 혼란스러운 상태이기 때문에, 본 노트는
복구과정에서 백업 테이프를 삭제해버리는 불상사를 예방하는데 도움이될 것 입니다.
(어떻게요? tar xvf /dev/rst0 대신 실수로 타이핑된
tar cvf /dev/rst0 명령은 백업 테이프를 덮어써 버립니다)
안전을 보장하기 위해, 부트 플로피와 백업 테이프를 두 카피 제작하여, 한 카피를 외부 장소에 보관하십시요. 같은 건물안의 다른 사무실은 적합하지 않습니다. 세계무역센터 빌딩내의 수많은 회사들은 이에대한 값비싼 교훈을 얻었습니다. 외부 장소는 반드시 귀하의 컴퓨터와 디스크로부터 물리적으로 분리되어 충분히 떨어진 장소여야 합니다.
부트 플로피를 생성하는 스크립트 예제:
#!/bin/sh
#
# 복구 플로피 생성
#
# 플로피 포맷
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin
fdformat -q fd0
if [ $? -ne 0 ]
then
echo "불량 플로피 입니다. 다른것을 사용하세요."
exit 1
fi
#
# 플로피에 부트 블록 생성
#
disklabel -w -B -b /usr/mdec/fdboot -s /usr/mdec/bootfd /dev/rfd0c fd1440
#
# 파일시스템 생성
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/rfd0a
#
# 플로피 마운트
#
mount /dev/fd0a /mnt
#
# 필요한 디렉토리 생성
#
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt # for the root partition
mkdir /mnt/tmp
mkdir /mnt/var
#
# 디렉토리 복사
#
if [ ! -x /sys/compile/MINI/kernel ]
then
cat << EOM
MINI 커널이 없습니다. 만들어 주세요.
MINI 커널을 위한 예제 설정 파일은 다음과 같습니다.
#
# MINI -- 디스크 삽입하기 위한 커널
#
machine "i386"
cpu "I486_CPU"
ident MINI
maxusers 5
options INET # _tcp _icmpstat _ipstat _udpstat _tcpstat _udb을 사용하기 위해 필요합니다.
options FFS # 버클리 빠른 파일 시스템
options FAT_CURSOR # syscons나 pccons의 블록 커서
options SCSI_DELAY=15 # SCSI 디바이스에 대해 안전을 기하기 위해
options NCONS=2 # 하나의 가상 콘솔 포함
options USERCONFIG # 사용자 설정 옵션 -c XXX 허용
config kernel root on sd0 swap on sd0 and sd1 dumps on sd0
controller isa0
controller pci0
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
disk fd0 at fdc0 drive 0
controller ncr0
controller scbus0
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
device sd0
device sd1
device sd2
device st0
pseudo-device loop # INET에서 요구됩니다.
pseudo-device gzip # gzip으로 압축된 a.out 실행
EOM
exit 1
fi
cp -f /sys/compile/MINI/kernel /mnt
gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore
gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync
cp /root/.profile /mnt/root
cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV
chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore
#
# 디바이스 노드 생성
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV sd0
./MAKEDEV sd1
./MAKEDEV sd2
./MAKEDEV st0
./MAKEDEV pty0
cd /
#
# 최소 파일시스템 테이블 생성
#
cat > /mnt/etc/fstab <<EOM
/dev/fd0a / ufs rw 1 1
EOM
#
# 최소 passwd 파일 생성
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM
cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM
chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd
#
# 플로피 언마운트후 사용자에게 통지
#
/sbin/umount /mnt
중요한 문제는 하드웨어의 복구 가능 여부 입니다. 백업을 받았다면 소프트웨어에 대해서는 걱정할 필요가 없습니다.
하드웨어가 손상되었다면, 손상받은 부품을 교체하십시요.
하드웨어에 문제가 없으며, 플로피가 사용가능한지 검사하십시요. 맞춤 부트 플로피가 준비되어 있다면, 싱글-유저로 부팅합니다. ("boot:" 프롬프트에서 "-s"를 입력하세요) 다음 항목은 넘어가도 좋습니다.
boot.flp와 fixit.flp가 준비되어 있다면, 계속 읽어 나가십시요.
첫번째 플로피 드라이브에 boot.flp를 삽입한후, 컴퓨터를 켜세요.
초기 설체 메뉴가 화면에 표시될 것 입니다.
"Fixit--Repair mode with CDROM or floppy." 옵션을 선택한후, fixit.flp를
요구할 때 fixit 플로피를 삽입하십시요. restore와 필요한 프로그램들은
/mnt2/stand에 있습니다.
각각의 파일시스템을 개별적으로 복구하세요.
첫번재 디스크의 루트 파티션을
mount(8) (예: mount /dev/sd0a /mnt) 하세요.
디스크라벨이 손상되었다면, disklabel(8) 명령으로
인쇄해 보관해 두었던 것과 동일하게 파티션과 라벨을 다시 만든후,
newfs(8) 명령으로 파일시스템을 재생성 하십시요.
플로피를 읽기-쓰기 모드로 다시 마운트 하십시요. (예: mount -u -o rw /mnt)
백업 프로그램과 백업 테이프를 사용해 파일시스템을 복구 합니다.
(예: restore vrf /dev/st0) 파일시스템을 언마운트한 후
(예: umount /mnt), 손상받은 각각의 파일시스템에 대해
동일한 과정을 반복합니다.
복구가 마무리되면, 다시 발생할지 모를 시스템 크래쉬나 자료 손상등의 사고에 대비해 새로운 테이프에 자료를 백업하십시요. 지금 백업에 소비하는 몇 시간이 추후 발생할 수 있는 잠재적인 사고로부터 여러분을 지켜줄 것 입니다.