2009년 10월 8일 목요일

22

Gentoo Linux 설치문서
Gentoo Version : 2004.0Hardware 사양 1. CPU : Intel Pentium 4 2.4C 2. RAM : 삼성 PC3200 256MB X 2 3. MainBoard : Gigabyte 8IPE1000 PRO 4. Graphic Card : ATi Radeon 9600 PRO 유니텍 5. SoundCard : Onboard 6. LanCard : OnboardNetwork : 한국통신 VDSL Premium
설치시 참고한 문서1. 지나가던 곰님의 Gentoo Linux 설치문서(
http://www.gentoo.or.kr/wiki/moin.cgi/Install_25by_25neoesraph)2. mizikn님의 Gentoo Linux 설치문서(http://wiki.kldp.org/wiki.php/GentooInstall)3. Gentoo 1.4 설치문서 번역(http://www.gentoo.or.kr/wiki/moin.cgi/1_2e4_bc_b3_c4_a1_b9_ae_bc_ad_b9_f8_bf_aa)4. Gentoo 1.2 설치문서 번역(http://www.gentoo.or.kr/docs/build-ko.html)5. Gnome Install Guide(http://www.gentoo.or.kr/wiki/moin.cgi/GnomeInstallGuide)
\ Gentoo CD 받기1. 2004.1(2004년 6월 8일 현재 최신버젼)
http://ftp.gentoo.or.kr/releases/x86/2004.1/livecd/install-x86-minimal-2004.1.iso (87M)http://ftp.gentoo.or.kr/releases/x86/2004.1/livecd/install-x86-universal-2004.1.iso (674M)
2. 2004.0
http://ftp.gentoo.or.kr/releases/x86/2004.0/livecd/universal/install-x86-minimal-2004.0.iso (87M) http://ftp.gentoo.or.kr/releases/x86/2004.0/livecd/universal/install-x86-universal-2004.0.iso (674M)
※저는 2004.0 미니시디를 받았습니다. 2004.1로 설치를 하려고 했으나 2004.1시디로는제 컴퓨터에서 네트워크가 안잡혀서 어쩔수 없이 2004.0 미니시디를 받았습니다. Stage1으로 설치하려고 하기 때문에 미니시디를 받은것입니다.
시디이미지를 받았으면 공시디에 굽습니다. 구운다음 시디로 부팅을 합니다.
\ Gentoo 설치시디를 집어넣고 부팅하면
boot:
라는 화면이 나타납니다.그냥 엔터를 눌러줍니다.부팅이 끝나면
livecd root#
이 화면이 나타나게 될것입니다.이제부터 Gentoo Linux의 설치 시작입니다.
1. 네트워크 설정
젠투리눅스는 emerge를 사용해서 패키지대부분을 웹에서 받아서 설치를 하게 됩니다.우선 네트워크를 잡아줍니다.
linvecd root#net-setup eth0
라고 치면 화면이 바뀌면서
0 USE DHCP to auto-detcet my network settings1 Specify an IP address manually
선택하는 화면이 나올 것입니다.저는 VDSL사용자이기 때문에 0번을 선택하였습니다.
네트워크가 제대로 잡혔는지 알아보려면
linvecd root#ifconfig
을 해줍니다.그러면 화면에
eth0 ~~~~~~~~~~~~~~~~~~~~(내용생략 ㅡ.ㅡ;; 너무 많아서)
lo ~~~~~~~~~~~~~~~~~~~~(내용생략 ㅡ.ㅡ;; 이것도 역시 너무 많아서)
하고 나올것입니다.(제가 지금 이문서를 윈도우에서 작성하다보니 정확히 알아볼 방도가 없기에 대충 적어놓겠습니다. 나중에 자세하게 채워넣도록 하겠습니다.)
좀더 확실하게 알아보는 방법은
livecd root#ping -c 3
www.google.com
해서
PING
www.google.akadns.net (216.239.53.99) 56(84) byte of data64byte from 216.239.53.99 : icmp_seq=1 ttl=243 times=125ms64byte from 216.239.53.99 : icmp_seq=2 ttl=243 times=123ms64byte from 216.239.53.99 : icmp_seq=2 ttl=243 times=123ms
---www.google.akadns.net ping statistics ---3 packets transmitted, 3 recived, 0% packets loss, time 2018 msrtt min/avg/max/mdev = 127.741/125.195/125.714/0.399 ms
이런 결과가 나오게되면 네트워크가 제대로 잡힌겁니다.
2. 파티션 설정
젠투리눅스는 레드햇리눅스에서 제공하는 그래픽파티션툴인 diskdruid가 아닌 순수텍스트파티션툴인 fdisk를 사용합니다.리눅스를 처음 설치하시는분은 파티션에 관해 kldp같은곳에서 알아보시고 하시는게실수를 방지할수 있을것입니다.파티션 설정을 위해 fdisk를 실행합니다.
livecd root#/sbin/fdisk /dev/hda
를 입력하게 되면 다음과 같은 상태가 됩니다.
Command (m for help) :
이상태에서 필요한 명령어를 입력해서 자신의 하드에 젠투리눅스를 설치할 파티션을 생성해 주는 것입니다.
fdisk에서 주로 사용하는 명령어를 살펴보겠습니다.(주로라지만 이것밖에는 사용할일이 없을 것입니다. 제경험상 다른 명령어는 사용한적이 없기 때문에 ^^:;;)
p - HDD의 파티션 상황을 보여줌n - 새로운 파티션을 생성함d - 기존의 파티션을 삭제함t - 파티션의 system id 설정w - 저장하고 fdisk 끝내기q - 저장하지 않고 fdisk 끝내기
우선 p를 입력해서 파티션 상황을 살펴봅니다.
DeviceBootStartEndBlockIdSystem
/dev/hda1*17305863693+bW95 FAT32Windows Me 파티션/dev/hda2
73114591111338484+fW95 Ext'd(LBA)Windows 확장파티션/dev/hda5
731268815727633+7HPFS/NTFSWindows XP 파티션/dev/hda6
268933415245191bW95 FAT32Me 데이터 파티션
제 HDD파티션 상황입니다.120기가중에서 6기가를 Windows Me, 15기가를 Windows XP, 5기가를 Windows Me 데이터 파티션으로 할당해줬습니다.나머지 파티션에다가 젠투를 설치하고나서 남은 파티션을 XP 데이터 파티션으로 만들었습니다.
젠투설치를 위한 파티션을 생성합니다.먼저 Swap파티션
Command (m for help) : n
Command action l logical (5 or over) p primary partition (1-4)
여기서 l 을 선택해줍니다.
First Cylinder (3342-14591, default 3342):
나오면 디폴트값으로 적용 그냥 엔터를 누르시면 됩니다.
Last Cylinder or +sizeM or +sizeK (3342-14591, default 14591):
여기서는 자신이 생성하고자 하는 용량만큼 적어줍니다.저는 스왑파티션을 1기가로 잡았기에
Last Cylinder or +sizeM or +sizeK (3342-14591, default 14591):+1024M라고 입력했습니다.M가로 입력하는게 생성하는데 편합니다.
잘 생성이 되었나 p명령어를 이용하여 확인 해봅니다.
Command (m for help) : p
DeviceBootStartEndBlockIdSystem
/dev/hda1*17305863693+bW95 FAT32Windows Me 파티션/dev/hda2
73114591111338484+fW95 Ext'd(LBA)Windows 확장파티션/dev/hda5
731268815727633+7HPFS/NTFSWindows XP 파티션/dev/hda6
268933415245191bW95 FAT32Me 데이터 파티션/dev/hda7
33423466100403183LinuxLinux swap파티션
스왑파티션이 생성 되었습니다.다음은 boot파티션과 /(root)파티션을 위의 방법과 같은 방법으로 생성합니다.저는 boot파티션은 100M, /(root)파티션은 15GB로 잡았습니다.원래 boot파티션을 256M로 잡을려고 생각했었는데 100M만으로도 충분하다는 지나가는곰님의 문서를 보고 100M가로 잡았습니다.
파티션을 다 생성했으면 이제 스왑파티션의 ID를 변경해주어야합니다.제가 설치문서를 보면서 분면히 설치문서에는 스왑파티션이 82로 나오는데 저는 아무리 생성을 해도 83으로 나오길래 뭘 잘못했길래 설치문서랑 다르지하고 생각하다가 fdisk명령어를 살펴보다 우연히 t 명령어를 알게되었습니다.
Command (m for help) : t
Partition number (1-7) : 7 (자신의 파티션중 스왑파티션으로 쓸 파티션의 번호입력) Hex code (type L to list codes) : 82 (Swap ID)
해주고나서 p명령어를 이용하여 파티션 상황을 보면
DeviceBootStartEndBlockIdSystem
/dev/hda1*17305863693+bW95 FAT32Windows Me 파티션/dev/hda2
73114591111338484+fW95 Ext'd(LBA)Windows 확장파티션/dev/hda5
731268815727633+7HPFS/NTFSWindows XP 파티션/dev/hda6
268933415245191bW95 FAT32Me 데이터 파티션/dev/hda7
33423466100403182LinuxLinux swap파티션
/dev/hda7의 ID가 83에서 82로 변경되어 있을 것입니다.
제 리눅스 파티션은/dev/hda7 (swap) 1024M/dev/hda8 (boot) 100M/dev/hda9 (root) 15000M입니다.
이제 파티션을 포맷해줍니다.저는 boot파티션은 ext3로, root파티션은 xfs로 생성했습니다.
livecd root#mke2fs -j /dev/hda8livecd root#mkfs.xfs -f /dev/hda9livecd root#mkswap /dev/hda7livecd root#swapon /dev/hda7
※파일 시스템의 종류(지나가는 곰님의 설치문서 참고)ext2/ext3 : 전통적인 리눅스 파일시스템으로 많이 사용된다. ext3는 ext2에서 저널링이 포함되었다. 이 파티션 타입은 /boot 같은 곳에나 쓰시고 다른데에는 쓰시지 않는게 좋습니다. 실제로 Disk I/O를 모니터링 해보면 하는 일 없이 상대적으로 아주 많은 I/O를 소모하는 파일시스템입니다. ext3는 최악입니다. 저널링이 필요하시다면 XFS 혹은 Reiserfs를 쓰시기 바랍니다.
XFS : 메타데이터 저널링 지원, 요즘에 많이 쓴다더군요. 실리콘 그래픽스사에서 공개한 파일 시스템인데 현재 리눅스에서 쓸 수 있는 파일 시스템 중에서 가장 스케일이 큰 파일시스템입니다. "Think Big"이 XFS의 개발 모토이며 상대적으로 다른 파일 시스템보다 시스템 부하가 약간 큽니다
ReiserFS : 트리기반구조를 한 파일스템 용량이 적고 , 큰 파일에 유리 특정 작업에서 매우 빠름 - 반대로 적어놓으셨군요. ReiserFS는 벤치마크를 해보시면 아시겠지만 작은 파일에 아주 강합니다. 약 4Kb 파일을 죽어라 만들고 다 지우는 스크립트를 돌려 보십시오. 다른 파일 시스템과는 비교가 안될만큼 빠릅니다. 하지만, 큰 파일은 역시 XFS입니다.
JFD : IBM에서 새로 출시한 파일 시스템 -몇몇분은 매우 안정적이다고 하시는군요. 매우 안정적이긴 하지만 IBM답게 아주 user-friendly하곤 담쌓은 파일시스템입니다. 벤치마크를 해봐도 XFS의 장점에 못미치고 ReiserFS의 아기자기한 맛은 온데 간데 없는 어정쩡한 파일시스템이 아닌가 하는 사견입니다
특성이 이렇다는군요그런데 다른 문서에서 보니 여기 설명된것과는 좀 상이하게 소개가 되어있어서 어떤 파일시스템을 선택할지 고민이 많이 되었었습니다.그래서 저같은 경우는 저 파일 시스템중에서 맘에 드는걸 골라서 적용했습니다.boot는 ext3, root는 xfs로 선택해서 사용중인데 아무 이상없이 잘 작동하고 있습니다.어떤 파일 시스템을 선택하실지는 전적으로 설치하고자 하시는 분 마음이시니깐요 ^^;;
3. 설치를 위한 파티션 마운트
설치를 위해서 HDD의 파티션으로 마운트를 합니다.
livecd root#mount /dev/hda9 /mnt/gentoolivecd root#mkdir /mnt/gentoo/bootlivecd root#mount /dev/hda8 /mnt/gentoo/bootlivecd root#cd /mnt/gentoolivecd getnoo#
4. Stage파일 받기
만일 라이브시디를 받지않고 600M짜리 이미지를 받으신분은 시디에서 stage파일을 복사해오면 됩니다.저는 미니시디를 받았기에 웹에서 다운받아야합니다.
livecd gentoo#wget
http://ftp.gentoo.or.kr/releases/x86/2004.0/stages/x86/stage1-x86-20040218.tar.bz2
입력해주시면 stage1파일을 다운받기 시작합니다.
stage파일의 압축을 풀어줍니다.
livecd gentoo#tar -xvjf stage1-x86-20040218.tar.bz2
하게 되면 압축이 풀어지게 됩니다.
※ 리눅스에서는 파일명이 길기 때문에 일일이 다 입력해주기보다는 Tab키를 이용해줍니다. Tab키는 파일이름이나 폴더명을 자동으로 완성해주기 때문에 유용하게 사용되니 알아두세요^^;;
stage파일을 풀어줬으니 proc를 사용할수 있도록 proc를 mount합니다.
livecd gentoo#mount -t proc proc /mnt/gentoo/proc
저는 왜 이걸 하는지 모릅니다. mizikn님의 문서에 하라고 되어있길래 한것이니 질문은 사양해주세요 ^^;;
5. Mirror설정
젠투는 대부분의 모든 패키지를 네트워크에서 받아 설치한다고 앞에서 언급했었죠.그 패키지를 받기위한 미러서버를 설정해주는것입니다.우리나라에도 젠투미러서버가 있는데 속도가 아주 좋습니다.한국 젠투미러만 설정해도 되지만 가끔씩 한국미러가 먹통이 되는 경우가 있더군요그래서 저는 한국미러랑 일본에 있는 미러를 설정해 줬습니다.
livecd gentoo#mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
미러목록이 나오면 한국미러인
ftp.gentoo.or.kr (kor)를 선택해줍니다.안심이 안되신다면 일본미러도 몇 개 선택해줘도 됩니다.
만일 한국미러외에 다른 미러도 선택하셨다면 make.conf파일을 수정해줘서 속도빠른 한국미러가 제일 앞으로오도록 수정해줍니다.
livecd gentoo#nano /mnt/gentoo/etc/make.conf
GENTOO_MIRROR 항목에서 한국미러를 가장 앞으로 오게 고쳐주고 Ctrl+X키를 눌러 저장해주고 빠져나옵니다.
만일 미러서버를 선택하는게 안나온다면 네트워크 설정이 잘못된것이므로 다시 네트워크를 잡아줍니다.
livecd gentoo#net-setup eth0
이제 본격적인 설치를 위한 준비가 끝났습니다.
6. 설치시작1
이제 본격적으로 설치를 시작합니다.
livecd gentoo#cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
해서 resolv.conf파일을 HDD로 복사해줍니다.
livecd gentoo#chroot /mnt/gentoolivecd /#
이건 chroot로 해서 가상HDD에서 자신의 HDD로 들어온것입니다.(이건 제 추측으로 생각한건데 맞는지는 잘 모르겠군요)
livecd /#env-update
>>>>Regenerating /etc/ld.so.cache........
livecd /#source /etc/profilelivecd /#
7. 설치시작2-Portage받기
livecd /#emerge sync
저는 Portage를 받아오는 이과정에서 약 30여분이 걸렸습니다.
8. 시스템 최적화 설정
make.conf파일을 수정해서 최적화를 해줍니다.
livecd /#nano /etc/make.conf
CFLAGS="~~~~~~~~~~~~~~~~(내용생략)"
이부분을
CFLAGS="-03 -march=i686 -mcpu=pentium4 -fomit-frame-pointer -mmmx -msse2 -msse -pipe"
로 수정해줍니다.그리고 역시
CHOST="~~~~~~~(내용생략)“
이부분도
CHOST="i686-pc-linux-gnu"
로 수정해준다음 저장하고 빠져나옵니다.이 최적화 부분은 지나가는곰님의 문서에서 펜티엄4에 최적화된 설정이라 하기에 저렇게 설정을 해주었습니다.저 설정의 내용에 대해 좀더 알고 싶다면 지나가는 곰님의 설치문서를 참고하세요 ^^;;
9. BootStrap
이 bootstrap은 자신의 시스템에 맞게 gcc,gliblc등을 설치하는 과정이라고 합니다.앞에서 했던 emerge sync작업은 이 bootsrap과정을 위한 준비였다는군요
livecd /#cd /usr/portagelivecd portage/#scrips/bootstrap.sh
하면 설치가 시작됩니다.이 과정은 시간이 꽤 오래 걸립니다.지나가던 곰님과 mizikn님은 이과정에서 3~4시간정도 걸렸다고 합니다.저는 약 1시간 50분정도 걸리더군요젠투설치에서 가장중요한것은 컴퓨터 성능보다는 네트워크상태가 가장 큰 영향을 주는거 같더군요여러번 젠투설치를 했을때 가끔 한국미러가 죽어서 일본미러에서 받는데 그때는 거의 3시간에 가까이 걸리는걸 보니 확실한듯 합니다.
10. System설치
설치에 필요한 각종 툴을 자신의 환경에 알맞게 설치해주는 과정입니다.
livecd portage/#emerge system
이 과정역시 시간이 오래 걸린다고 합니다.무려 12시간걸리는 경우도 있다고 하더군요저같은 경우는 1시간정도 걸렸습니다.※ bootstrap과 system설치를 한꺼번에 하는것도 가능합니다.
livecd portage#scripts/bootstrap.sh ; emerge system
하면 bootstrap과 system설치를 한꺼번에 설치를 하게됩니다.저는 저렇게 하다가 system파일이 설치가 되었는지 확신을 할 수 있는 방법이 없어서 언제나 따로 설치를 해주었습니다.그러다가 어느분의 질문 답변에
livecd portage#emerge -pv system
Calculating system depencies......................done!
이란 메시지가 나오게 되면 system설치가 완료된것이라고 합니다.참고하세요 ^^;;
11. 시간설정
시스템의 시간을 설정해줍니다.
livecd portage#ln -sf /usr/share/zoneifo/Asia/Seoul /etc/localtime
12. fstab설정
livecd portage#nano /etc/fstab
에서 수정할 부분은
#
/dev/BOOT /boot ext2 noauto,noatime 1 1/dev/ROOT / xfs noauto,noatime/dev/SWAP none swap sw
이부분을 자신의 환경에 맞게 수정해 줍니다.
#
/dev/hda8 /boot ext2 noatime 1 1/dev/hda9 / xfs noatime/dev/hda7 none swap sw
저는 위와 같이 수정을 해주었습니다.저 밑에 있는 부분은 잘 아시는 분이 아닌 한 손대지 마시기를 손댔다가 무슨일 생기면 책임 못짐^^;;
13. Kernel설치
자 이제 리눅스의 핵심이라고 할수 있는 커널설치입니다.제가 이 문서를 작성하고 있는 현제 최신 커널버젼은 2.6.6입니다.
livecd portage#cd /usr/srclivecd src#emerge module-init-tools
이건 커널버젼이 2.6이상일때 설치해줍니다.설치안해주면 커널 설치때 에러메세지를 토하더군요 ^^;;이제 커널을 받습니다.
livecd src#wget
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
커널 압축을 풉니다.
livecd src#tar -xvjf linux-2.6.6.tar.bz2
압축이 다 풀리면 linux-2.6.6폴더가 생성됩니다.
livecd src#cd linux-2.6.6livecd linux-2.6.6#
우선 커널설치를 하기전에 커널소스를 편집해줍니다.커널 2.6버젼으로 와서부터는 키보드의 한/영키랑 한자키가 안먹는다는군요그렇기에 커널소스를 편집해서 한영키를 사용가능하게 수정해줍니다.한영키를 사용하기위해 수정해줘야할 소스파일은 2가지입니다.
linux-2.6.6/drivers/input/input.c에서
case EV_KEY: if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return;
if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return; if (value == 2)
break;

case EV_KEY: if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return;
if (code != KEY_HANGUEL && code != KEY_HANJA)
{
if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return;
} if (value == 2)
break;
로 수정을 해줍니다.
linux-2.6.6/drivers/input/keyboard/atkbd.c :
137번째 라인에
#define ATKBD_RET_HANGUEL 0xf1#define ATKBD_RET_HANJA 0xf2
이부분을
#define ATKBD_RET_HANGUEL 0xf2#define ATKBD_RET_HANJA 0xf1수정한다음 저장하고 빠져나옵니다.
livecd linux-2.6.6#make mrproperlivecd linux-2.6.6#make menuconfig
여기서 커널 옵션설정하는 화면으로 넘어가게 됩니다.
Linux Kernel v2.6.0-test11 Configuration
???????????????????????? Linux Kernel Configuration ? Arrow keys navigate the menu. selects submenus --->. ? Highlighted letters are hotkeys. Pressing includes, excludes, ? modularizes features. Press to exit, for Help. ? Legend: [*] built-in [ ] excluded module < > module capable +?????????????????????????????????????????????????????????????????????????????? ? ? Code maturity level options ---> ? ? General setup ---> ? ? Loadable module support ---> ? ? Processor type and features ---> ? ? Power management options (ACPI, APM) ---> ? ? Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> ? ? Executable file formats ---> ? ? Device Drivers ---> ? ? File systems ---> ? ? Profiling support ---> ? ? Kernel hacking ---> ? ?????????v(+) +????????????????????????????????????????????????????????????????????????????????