2011년 8월 2일 화요일

Gentoo Linux x86 Quick Install Guide

설치환경
M/B: Asus P5GZ-MX
CPU:
VGA:
NIC: 


1.Introduction

이 문서는 젠투 스테이지3 설치를 위한 모든 명령에 대해 설명한다. 스테이지3와 스냅샷 포테이지 다운로드를 하려면 인터넷에 연결되어 있어야 한다.
이후의 측정 시간들은 AMD 2000 1.66 Ghz, 512MB 메모리, SATA 하드 2개로 구성된 시스템에서 측정한 것으로 시스템에 따라 차이가 날 수 있다.

2.Quick Install Guide

Installation Media

미러 사이트 에서 CD를 다운로드 받는다. releases/x86/<release>/installcd 에서 minimal CD ISO파일을 찾을 수 있다. minimal installation CD 는 인터넷 기반의 설치에서만 사용 가능하다. 이 문서에서는 minimal CD 기반의 설치에 대해서만 설명할 것이다.
다운받은 CD를 굽고 그 시디로 부팅한다.
부팅 선택화면에서 gentoo-nofb를 입력하고 부팅한다. 부팅시 시스템이 멈추는 현상이 발생하면 nodetect 옵션을 사용하여 부팅하고 필요한 모듈을 명시적으로 로딩한다.
  • Code Listing 2.1: Boot the minimal CD
Gentoo Linux Installation LiveCD                     http://www.gentoo.org
Enter to Boot; F1 for kernels  F2 for options.
boot: gentoo-nofb
  (or in case of problems)
boot: gentoo-nofb nodetect


Optional: loading modules

Asus P5GZ-MX 보드의 경우 Marvell 88E8001 Gigabit Ethernet을 사용하기 때문에 아래와 같이 모듈을 로딩한다.
  • Code Listing 2.2: Load required modules
livecd root # lspci
(Use lspci's output to identify required modules)

(sk98lin 모듈을 로딩한다)
livecd root # modprobe sk98lin


Network Configuration

아래와 같이 수동으로 네트워크 정보를 설정한다. 아래에서 192.168.1.10는 설치될 머신에 할당될 IP, 192.168.1.1은 default gateway , 219.250.36.130은 네임서버 IP이다.
  • Code Listing 2.4: Configure networking the manual way
livecd root # ifconfig eth0 192.168.1.10/24
livecd root # route add default gw 192.168.1.1
livecd root # echo nameserver 219.250.36.130 > /etc/resolv.conf


Preparing the Disks

fdisk 또는 cfdisk를 이용해서 파티션을 설정한다. 최소 1개의 스왑 파티션(타입 82)와 1개의 리눅스 파티션(타입 83)이 필요하다. 아래에서는 1개의 /boot 파티션, 1개의 스왑 파티션, 나머지를 / 파티션으로 설정한다. 하드디스크 인터페이스에 따라 SATA나 SCSI는 /dev/sda로 IDE는 /dev/hda로 표시될 것이다. (/boot 파티션은 제일 처음 100메가 이하로 설정할 것을 권장한다)
  • Code Listing 2.8: Create the partitions
livecd ~ # fdisk /dev/sda

(The rest of this guide uses the following partitioning scheme)
livecd ~ # fdisk -l /dev/sda

Disk /dev/sda: 599.9 GB, 599978409984 bytes
255 heads, 63 sectors/track, 72943 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          12       96358+  83  Linux
/dev/sda2              13         110      787185   82  Linux swap / Solaris
/dev/sda3             111       72943   585031072+  83  Linux

mke2fs, mke2fs -j, mkreiserfs, mkfs.xfs, mkfs.jfs 명령을 이용해 리눅스 파티션을 포멧 한다. mkswap, swapon 명령어를 이용해 스왑 파티션을 초기화 한다.

  • Code Listing 2.9: Create the file systems and activate swap
(ext2 is all you need on the /boot partition)
livecd ~ # mke2fs /dev/sda1

(Let's use ext3 on the main partition)
livecd ~ # mke2fs -j /dev/sda3

(Create and activate swap)
livecd ~ # mkswap /dev/sda2 && swapon /dev/sda2

위의 파티션들을 마운트 한다.

  • Code Listing 2.10: Mount the file systems
livecd ~ # mount /dev/sda3 /mnt/gentoo
livecd ~ # mkdir /mnt/gentoo/boot
livecd ~ # mount /dev/sda1 /mnt/gentoo/boot


Setting Up The Stage

아래처럼 시스템 시간을 확인해서 틀린 경우 시간을 맞춘다.
  • Code Listing 2.11: Set the date and UTC time
(Check the clock)
livecd ~ # date
Mon Mar  6 00:14:13 UTC 2006

(Set the current date and time if required)
livecd ~ # date 030600162006 (Format is MMDDhhmmYYYY)
Mon Mar  6 00:16:00 UTC 2006

미러 사이트에서 stage 파일을 다운로드 받는다. /mnt/gentoo 디렉토리에서 다음 명령어를 실행해 압축을 푼다. tar xjpf <stage3 tarball>

  • Code Listing 2.12: Download a stage3 archive
livecd ~ # cd /mnt/gentoo
livecd gentoo # links http://www.gentoo.org/main/en/mirrors.xml
(Pick a mirror, move to the releases/x86/current/stages directory highlight the
stage3 of your choice, probably the i686 stage3 and press D to download it)

(또는 미러 선택을 하지 않고 아래와 같이 직접 URL을 입력해 다운받는다.)
livecd ~ # cd /mnt/gentoo
livecd gentoo # wget ftp://gentoo.osuosl.org/pub/gentoo/releases/x86/current/stages/stage3-i686-2007.0.tar.bz2
  • Code Listing 2.13: Unpack the stage3 archive
livecd gentoo # time tar xjpf stage3*

real  1m13.157s
user  1m2.920s
sys   0m7.230s

최신버전 Portage snapshot를 설치한다. 설치과정의 stage3 설치과정과 유사하다.

  • Code Listing 2.14: Download the latest Portage snapshot
livecd gentoo # cd /mnt/gentoo/usr
livecd usr # links http://www.gentoo.org/main/en/mirrors.xml
(Pick a mirror, move to the snapshots/ directory,
highlight portage-latest.tar.bz2 and press D to download it)

(또는 미러 사이트의 URL을 입력해 직접 다운로드 한다)
livecd gentoo # cd /mnt/gentoo/usr
livecd usr # wget http://gentoo.osuosl.org/snapshots/portage-latest.tar.bz2
  • Code Listing 2.15: Unpack the Portage snapshot
livecd usr # time tar xjf portage*

real  0m51.523s
user  0m28.680s
sys   0m12.840s


Chrooting

아래와 같이 /proc 파일 시스템을 마운트 하고 /etc/resolv.conf 파일을 복사한다. 그리고 젠투 환경으로 chroot 한다.
  • Code Listing 2.16: Chroot
livecd usr # cd /
livecd / # mount -t proc proc /mnt/gentoo/proc
livecd / # cp -L /etc/resolv.conf /mnt/gentoo/etc/
livecd / # chroot /mnt/gentoo /bin/bash
livecd / # env-update && source /etc/profile
>>> Regenerating /etc/ld.so.cache...


Set your time zone

/usr/share/zoneinfo 디렉토리에 위치한 파일을 이용해 타임 존을 설정한다.
  • Code Listing 2.17: Setting your timezone
livecd / # ls /usr/share/zoneinfo
(Using Seoul as an example)
livecd / # cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime

livecd / # date
Wed Mar  8 00:46:05 KST 2007


Set your host and domain name

아래와 같이 /etc/conf.d/hostname, /etc/hosts 파일에 호스트 이름을 설정한다. 아래에서는 호스트 네임이 mybox이고 도메인 이름이 at.myplace이다. nano를 이용해 아래와 같이 설정한다.
  • Code Listing 2.18: Set host and domain name
livecd / # cd /etc
livecd etc # echo "127.0.0.1 mybox.at.myplace mybox localhost" > hosts
livecd etc # sed -i -e 's/HOSTNAME.*/HOSTNAME="mybox"/' conf.d/hostname
(Use defined host name and check)
livecd etc # hostname mybox
livecd etc # hostname -f
mybox.at.myplace


Kernel Configuration

커널 소스(gentoo-sources 이용)를 설치하고 설정하고 컴파일해서 arch/i386/boot/bzImage 파일을 /boot로 복사한다.
  • Code Listing 2.19: Install a kernel source, compile it and install the kernel
livecd etc # time emerge gentoo-sources

real  2m51.435s
user  0m58.220s
sys   0m29.890s
livecd etc # cd /usr/src/linux
livecd linux # make menuconfig
(Configure your kernel)
livecd linux # time make -j2

(Elapsed time depends highly on the options you selected)
real  3m51.962s
user  3m27.060s
sys   0m24.310s

livecd linux # make modules_install
(/boot 파티션이 마운트 되지 않았다면 마운트한다)
livecd linux # cp arch/i386/boot/bzImage /boot/kernel

Configure the system

Edit your /etc/fstab and replace BOOT, ROOT and SWAP with the actual partition names. Don't forget to check that the file systems match your installation. 지금까지 설치한 환경에 맞게 /etc/fstab파일을 실제 환경에 맞게 수정한다.
  • Code Listing 2.20: Example fstab
livecd linux # cd /etc
livecd etc # nano -w fstab
/dev/sda1   /boot     ext2    noauto,noatime     1 2
/dev/sda3   /         ext3    noatime            0 1
/dev/sda2   none      swap    sw                 0 0

/etc/conf.d/net파일을 네트워크 환경에 맞게 수정한다. net.eth0 스크립트를 default run level에 추가한다. 여러개의 랜카드를 사용한다면 /etc/init.d/net.eth1 심볼릭 링크 파일 등을 만들어 default run level에 추가한다. 아래를 참고하여 설정한다.

  • Code Listing 2.21: Configure networking
livecd etc # cd conf.d
livecd conf.d # echo 'config_eth0=( "192.168.1.10/24" )' >> net
livecd conf.d # echo 'routes_eth0=( "default via 192.168.1.1" )' >> net
livecd conf.d # rc-update add net.eth0 default
(If you compiled your network card driver as a module,
add it to /etc/modules.autoload.d/kernel-2.6)
livecd conf.d # echo sk98lin >> /etc/modules.autoload.d/kernel-2.6
(If you want to reconnect via ssh after you have rebooted your new box:)
livecd conf.d # rc-update add sshd default

Set the root password using passwd를 이용해서 root 패스워드를 설정한다.

  • Code Listing 2.22: Set the root password
livecd conf.d # passwd
New UNIX password: type_the_password
Retype new UNIX password: type_the_password_again
passwd: password updated successfully

위에서 설정했던 타임 존으로 /etc/conf.d/clock 파일을 설정한다.

  • Code Listing 2.23: Edit /etc/conf.d/clock
livecd conf.d # nano -w /etc/conf.d/clock
TIMEZONE="Europe/Brussels"

/etc/rc.conf, /etc/conf.d/rc , /etc/conf.d/keymaps 파일에 추가으로 필요한 시스템 설정을 한다. (필요하다면)

  • Code Listing 2.24: Optional: edit some config files
livecd conf.d # nano -w /etc/rc.conf
livecd conf.d # nano -w /etc/conf.d/rc
livecd conf.d # nano -w /etc/conf.d/keymaps


Installing System Tools

syslog-ng, vixie-cron 와 같은 시스템 툴을 설치하고 default run level에 추가한다.
  • Code Listing 2.25: Install a syslogger and a cron daemon
livecd conf.d # time emerge syslog-ng vixie-cron

real  1m52.699s
user  1m1.630s
sys   0m35.220s
livecd conf.d # rc-update add syslog-ng default
livecd conf.d # rc-update add vixie-cron default

필요한 파일 시스템 툴 (xfsprogs, reiserfsprogs or jfsutils) 과 네트워킹 툴 (dhcpcd or ppp) 을 설치한다.

  • Code Listing 2.26: Install extra tools if required
livecd conf.d # emerge xfsprogs       (If you use the XFS file system)
livecd conf.d # emerge jfsutils       (If you use the JFS file system)
livecd conf.d # emerge reiserfsprogs  (If you use the Reiser file system)
livecd conf.d # emerge dhcpcd         (If you need a DHCP client)
livecd conf.d # emerge ppp            (If you need PPPoE ADSL connectivity)


Configuring the Bootloader

grub를 설치하고 /boot/grub/grub.conf를 설정한다.
1. Using grub
  • Code Listing 2.27: Emerge grub and edit its configuration file
livecd conf.d # time emerge grub

real  1m8.634s
user  0m39.460s
sys   0m15.280s
livecd conf.d # nano -w /boot/grub/grub.conf
  • Code Listing 2.28: Example grub.conf
default 0
timeout 10

title=Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/sda3
  • Code Listing 2.29: Install grub
livecd conf.d # grub
Probing devices to guess BIOS drives. This may take a long time.

grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/
grub/menu.lst"... succeeded
Done.

grub> quit


Reboot

chroot 환경을 종료하고 모든 파일 시스템을 언마운트한 뒤 리붓한다.
  • Code Listing 2.33: Reboot
livecd conf.d # exit
livecd / # umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo
livecd / # reboot
(Don't forget to remove the CD)


Finalizing the Installation

root로 로그인한 뒤 useradd를 이용해 계정을 추가한다.
  • Code Listing 2.34: Connect to your new box from another PC
(Clean up your known_hosts file because your new box
has generated a new definitive hostkey)
$ nano -w ~/.ssh/known_hosts
(Look for the IP of your new PC and delete the line,
then save the file and exit nano)

(Use the IP address of your new box)
$ ssh root@192.168.1.10
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
RSA key fingerprint is 96:e7:2d:12:ac:9c:b0:94:90:9f:40:89:b0:45:26:8f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts.
Password: type_the_password
  • Code Listing 2.35: Add a new user
mybox ~ # adduser -g users -G lp,wheel,audio,cdrom,portage,cron -m john
mybox ~ # passwd john
New UNIX password: Set John's password
Retype new UNIX password: Type John's password again
passwd: password updated successfully
  • root로 ssh 접근 제한
/etc/ssh/sshd_config 파일 수정
PermitRootLogin no

Last configuration touches

mirrorselect를 이용해 미러 사이트 선택을 위한 /etc/make.conf파일의 SYNC, GENTOO_MIRRORS 변수를 설정한다.
  • Code Listing 2.36: Use mirrorselect and set MAKEOPTS
mybox ~ # emerge mirrorselect
mybox ~ # mirrorselect -i -o >> /etc/make.conf
mybox ~ # mirrorselect -i -r -o >> /etc/make.conf
(Usually, (the number of processors + 1) is a good value)
mybox ~ # echo 'MAKEOPTS="-j3"' >> /etc/make.conf

USE 플래그의 enable, disable 설정을 한다. USE 플래그의 enable/disable 설정에 따른 패키지를 확인하려면 emerge -vpe world 명령을 이용한다. 아래 명령어를 이용해서 /etc/make.conf 파일의 USE 변수를 설정한다. 듀얼코어나 듀얼 시피유인 경우는 -j3를 싱글인 경우는 -j2를 사용한다.

  • Code Listing 2.37: View USE flags in use and enable or disable some
mybox ~ # emerge -vpe world
(Portage displays the packages and their USE flags, as an example, let's
disable ipv6 and fortran, and enable unicode)
mybox ~ # echo 'USE="nptl nptlonly -ipv6 -fortran unicode svg dbus \
> X -kde -qt3 -qt4 -arts -eds -esd qtk gnome hal avahi gstreamer firefox apache2 nls"' >> /etc/make.conf


최근 버전의 glibc는 로케일 설정을 위해 /etc/locale.gen를 사용한다.
  • Code Listing 2.38: Define locales
mybox ~ # cd /etc
mybox etc # nano -w locale.gen

최적화를 위해 필요하다면 /etc/make.conf의 CFLAGS 변수를 수정한다. 프로세스 타입과 -O2 -pipe 옵션 정도는 사용할 것을 권장한다.

You may also want to switch to ~x86. You should only do this if you can deal with the odd broken ebuild or package. If you'd rather keep your system stable, don't add the ACCEPT_KEYWORDS variable. Adding FEATURES="parallel-fetch ccache" is also a good idea.
  • Code Listing 2.39: Last edit of make.conf
mybox etc # nano -w make.conf
(Set -march to your CPU type in CFLAGS)
CFLAGS="-O3 -march=i686 -pipe"
(Add the following line)
FEATURES="parallel-fetch ccache"
(Only add the following if you know what you're doing)
ACCEPT_KEYWORDS="~x86"

약간의 성능 증가를 위해 상당히 많은 시간을 필요로 하는 작업이지만 최종 수정된 설정을 반영하기를 원한다면 전체 시스템일 다시 컴파일 해야한다. 항상 새로운 버전의 패키지를 유지하고 하여 시스템을 최적하 할 수 있다. 시스템 유지보수 관점에서는 재컴파일 하는 것은 좋은 방법일 수 있다. Gentoo GCC Upgrading Guide를 참고하라. (듀얼 시피유인 경우는 -O3를 싱글인 경우는 -O2를 사용한다)

Recompiling only the packages that have already been updated since the release or that are affected by your new USE flags will take enough time. You might also have to remove packages that block your upgrade. Look for "[blocks B ]" in the output of emerge -vpuD --newuse world and use emerge -C to remove them.
  • Code Listing 2.40: Update your packages
(Install ccache)
mybox etc # emerge ccache

(Please note that the switch to ~x86 causes many packages to be upgraded)
mybox etc # emerge -vpuD --newuse world
(Take a good look at the package list and their USE flags,
remove blocking packages if any, and start the lengthy process)
mybox etc # time emerge -vuD --newuse world
(79 packages have been (re)compiled)

real  180m13.276s
user  121m22.905s
sys   36m31.472s

(Remerge libtool to avoid further potential problems)
mybox etc # emerge libtool

(Update config files, make sure you do not let etc-update
update config files you have edited)
mybox etc # etc-update

(If perl has been updated, you should run the perl-cleaner script)
mybox etc # time perl-cleaner all
real  1m6.495s
user  0m42.699s
sys   0m10.641s

(In case of a major upgrade of python, you should run the python-updater script)
mybox etc # python-updater

What to do next

Depending on what your new Gentoo machine is supposed to do, you will probably want to install server applications or a desktop system. Just as an example, emerge gnome and emerge kde have been timed on the ~x86 system installed as describe above. Both have been installed from the same starting point. 필요하다면 emerge gnome 또는 emerge kde 를 실행해서 gnome이나 kde를 설치한다.
다른 문서를 참고해서 설치할 프로그램을 설정하는 방법을 확인한다.
Important: The following is only an example. It is in no way meant as a recommended setup.
  • Code Listing 2.41: Emerge GNOME
mybox etc # emerge -vp gnome
(Look at the list of packages and their USE flags,
then edit make.conf if required.
mybox etc # nano -w /etc/make.conf
(The following USE flags have been defined)
USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \
     -kde -qt3 -qt4 -arts -eds -esd gnome gstreamer gtk firefox"

mybox etc # time emerge gnome
(326 packages have been emerged)

real  520m44.532s
user  339m21.144s
sys   146m22.337s
  • Code Listing 2.42: Emerge KDE
mybox etc # emerge -vp kde-meta
(Look at the list of packages and their USE flags,
then edit make.conf if required.
mybox etc # nano -w /etc/make.conf
The following USE flags have been defined)
USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \
     kde qt3 qt4 -arts -eds -esd -gnome -gstreamer -gtk -firefox"

mybox etc # time emerge kde-meta
(391 packages have been emerged)

real  1171m25.318s
user  851m26.393s
sys   281m45.629s
참고:
Gnome 설치시 다음 에러가 발생하는 경우
-------------------------------------------------------------------------------- 
!!! ERROR: x11-libs/gtk+-2.8.19 failed. 
Call stack: 
ebuild.sh, line 1555: Called dyn_setup 
ebuild.sh, line 668: Called pkg_setup 
gtk+-2.8.19.ebuild, line 57: Called die 

!!! cairo needs the X flag set 
!!! If you need support, post the topmost build error, and 
the call stack if relevant. 
-------------------------------------------------------------------------------- 
USE="X" emerge x11-libs/cairo 

댓글 없음:

댓글 쓰기