설치환경
M/B: Asus P5GZ-MX
CPU:
VGA:
NIC:
이후의 측정 시간들은 AMD 2000 1.66 Ghz, 512MB 메모리, SATA 하드 2개로 구성된 시스템에서 측정한 것으로 시스템에 따라 차이가 날 수 있다.
다운받은 CD를 굽고 그 시디로 부팅한다.
부팅 선택화면에서 gentoo-nofb를 입력하고 부팅한다. 부팅시 시스템이 멈추는 현상이 발생하면 nodetect 옵션을 사용하여 부팅하고 필요한 모듈을 명시적으로 로딩한다.
mke2fs, mke2fs -j, mkreiserfs, mkfs.xfs, mkfs.jfs 명령을 이용해 리눅스 파티션을 포멧 한다. mkswap, swapon 명령어를 이용해 스왑 파티션을 초기화 한다.
위의 파티션들을 마운트 한다.
미러 사이트에서 stage 파일을 다운로드 받는다. /mnt/gentoo 디렉토리에서 다음 명령어를 실행해 압축을 푼다. tar xjpf <stage3 tarball>
최신버전 Portage snapshot를 설치한다. 설치과정의 stage3 설치과정과 유사하다.
/etc/conf.d/net파일을 네트워크 환경에 맞게 수정한다. net.eth0 스크립트를 default run level에 추가한다. 여러개의 랜카드를 사용한다면 /etc/init.d/net.eth1 심볼릭 링크 파일 등을 만들어 default run level에 추가한다. 아래를 참고하여 설정한다.
Set the root password using passwd를 이용해서 root 패스워드를 설정한다.
위에서 설정했던 타임 존으로 /etc/conf.d/clock 파일을 설정한다.
/etc/rc.conf, /etc/conf.d/rc , /etc/conf.d/keymaps 파일에 추가으로 필요한 시스템 설정을 한다. (필요하다면)
필요한 파일 시스템 툴 (xfsprogs, reiserfsprogs or jfsutils) 과 네트워킹 툴 (dhcpcd or ppp) 을 설치한다.
1. Using grub
USE 플래그의 enable, disable 설정을 한다. USE 플래그의 enable/disable 설정에 따른 패키지를 확인하려면 emerge -vpe world 명령을 이용한다. 아래 명령어를 이용해서 /etc/make.conf 파일의 USE 변수를 설정한다. 듀얼코어나 듀얼 시피유인 경우는 -j3를 싱글인 경우는 -j2를 사용한다.
최근 버전의 glibc는 로케일 설정을 위해 /etc/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.
약간의 성능 증가를 위해 상당히 많은 시간을 필요로 하는 작업이지만 최종 수정된 설정을 반영하기를 원한다면 전체 시스템일 다시 컴파일 해야한다. 항상 새로운 버전의 패키지를 유지하고 하여 시스템을 최적하 할 수 있다. 시스템 유지보수 관점에서는 재컴파일 하는 것은 좋은 방법일 수 있다. 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.
다른 문서를 참고해서 설치할 프로그램을 설정하는 방법을 확인한다.
Important: The following is only an example. It is in no way meant as a recommended setup.
Gnome 설치시 다음 에러가 발생하는 경우
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 접근 제한
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
댓글 없음:
댓글 쓰기