[Gentoo] VMwareFusion 에 Gentoo 리눅스 설치 Computer Tip

그동안 대부분의 경우 우분투를 많이 사용하고 있었습니다.
그러나 임베디드 시스템 등의 경우에 있어서는 많은 경우 Gentoo를 사용합니다.

그 이유는 크로스 컴파일이 아닌 해당 기기에 최적화된 컴파일을을 하여
그 시스템에 맞는 최적화 시스템을 소스코드 차원에서 제공하기 때문이 아닌가 싶습니다.

아뭏든 참으로 오랫만에 젠투를 맥북프로 15" 2014 mid 에서
VMWare Fusion 위에 설치해 보기로 하였습니다.

우선 Gentoo 설치를 위해서는 

다운로드링크에서 amd64용 "Minimal Installation CD"와 "Stage 3" 을 다운로드해 놓습니다.

새로운 가상머신을 만들려고 하면,

위와 같은 창에서 오른쪽 화살표를 누르고,

위에서 처럼 "Create a custom virtual machine"을 선택하였습니다.

위와 같이 "Other Linux 3.x kernel 64-bit"를 선택하고, "Continue"...

위와 같이 하고 "Continue"...

위와 같은 상황에서 "Customize Settings"를 누르고...

이름을 지정합니다. (위에서는 Gentoo)
그 다음 하단의 "Customize Settings" 단추를 눌러,

위에서 "Camera, Printer, Sound Card" 등 필요없는 디바이스를 삭제하고, Hard Disk(SCSI) 는 8GB 에서 80GB로 늘렸습니다.

그리고 CD/DVD (IDE) 장치를 눌러,

처음에 받아놓았던 minimal iso 이미지를 마운트 합니다. (꼭 상단의 Connect CD/DVD Drive 를 체크하시기 바랍니다)

다음 위와 같이 나타나는데, 가운데 삼각형을 누르면...

위와 같이 나오는 boot: 프롬프트에서 엔터를 누릅니다.

위와 같이 프롬프트가 나오면 정상입니다.

위와 같이 ifconfig 명령으로 네트워크 장치가 설정되었는가 확인합니다.

어라!!! eth0 이 온데간데 없고 eno16777736 이라는 인터페이스 이름이 있군요...
나중에 따로 찾아보았더니 CentOS7 에도 그렇고 3.x 최신 커널에서는 eth(N) 대신 en + o (onboard) + BIOS 번호 등으로 
기술이 된다고 하더군요. 수십년 보아왔던 eth0 가 없어져서 처음에는 일순 많이 당황했었습니다... ^^

이 상태에서 

livecd ~ # passwd
로 암호를 설정하고,

livecd ~ # /etc/init.d/sshd start
명령으로 ssh 서비스를 시작하였습니다.

이제는 맥의 터미널에서

$ ssh root@192.168.117.157
로 접속을 하면 잘 접속됨을 알 수 있습니다.

(이후에는 계속 맥 터미널 화면이 나옵니다)

livecd ~ # fdisk /dev/sda
로 위와 같이 만들기 시작하여
위와 같이 만듦니다.
(후에 a 명령으로 /dev/sda2 가 booting 파티션임을 지정했습니다.)

위와 같이 파일 시스템을 만듦니다.
위와 같이 마운팅 작업을 합니다.

livecd ~ # mount /dev/sda4 /mnt/gentoo
livecd ~ # mkdir /mnt/gentoo/boot
livecd ~ # mount /dev/sda2 /mnt/gentoo/boot
(다음 명령은 별도의 tmp 파티션을 만들었을 경우)
livecd ~ # chmod 1777 /mnt/gentoo/tmp

다른 터미널에서 위와 같이 stage3-*.tar.bz2를 scp 로 원격에 /mnt/gentoo 에 복사해 넣습니다.
(ip 주소 확인요.... )


livecd ~ # cd /mnt/gentoo; tar xvjpf stage3-*.tar.bz2 --xattrs

livecd ~ # nano -w /mnt/gentoo/etc/portage/make.conf
명령으로 위와 같이 열고 위와 같이 CFLAGS에 -mtune=i686 을 추가했습니다.

livecd ~ # mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
위와 같이 한국 사이트를 지정하고 "OK" 합니다.

livecd ~ # cp -L /etc/resolv.conf /mnt/gentoo/etc/
livecd ~ # mount -t proc proc /mnt/gentoo/proc
livecd ~ # mount --rbind /sys /mnt/gentoo/sys
livecd ~ # mount --make-rslave /mnt/gentoo/sys
livecd ~ # mount --rbind /dev /mnt/gentoo/dev
livecd ~ # mount --make-rslave /mnt/gentoo/dev

와 같이 필요한 정보를 복사 및 특수 목적 폴더를 마운트합니다.

이제 드디어 CHROOT 로 설치 환경처럼 들어가봅니다.

livecd ~ # chroot /mnt/gentoo /bin/bash
livecd ~ # source /etc/profile
livecd ~ # export PS1="(chroot) $PS1"
(chroot) livecd ~ # 

이제 부터는 portage를 관리해 봅니다.
portage는 설치 패키지의 묶음 이라 생각하시면 됩니다.

(chroot) livecd ~ # emerge-webrsync
최신 것의 패키지 (하루 하루 빌드되는)로 업데이트합니다.

(chroot) livecd ~ # eselect profile list
이런 명령으로 
위와 같이 1번의 디폴트 터미널 설정으로 놓고 진행해 봅니다.

(chroot) livecd ~ # emerge --info | grep ^USE
USE="X acl alsa amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri ..."
위의 명령으로 USE 에서 사용할 것이 무엇 무엇 있는지 확인할 수 있고,

(chroot) livecd ~ # less /usr/portage/profiles/use.desc
위의 명령으로 USE 에서 사용할 것의 세부 내용을 볼 수 있습니다.

(chroot) livecd ~ # echo "Asia/Seoul" > /etc/timezone
(chroot) livecd ~ # emerge --config sys-libs/timezone-data
위의 명령으로 타임존을 설정합니다.

요 타임에서 손에 익은 에디터 (저는 vim) 으로 설정을 위하여

(chroot) livecd ~ # emerge --ask vim
명령으로 vim 을 설치합니다.

(chroot) livecd ~ # vi /etc/locale.gen
en_US.UTF-8 UTF-8
ko_KR.UTF-8 UTF-8

위와 같이 두개의 로케일을 지정한 후,

(chroot) livecd ~ # locale-gen
합니다.
그 다음은,
위와 같이 로케일을 지정합니다.

(chroot) livecd ~ # env-update && source /etc/profile && export PS1="(chroot) $PS1"

!!!커널 빌드
이 부분이 상당히 어려운 부분이요, 어찌보면 리눅스 커스터마이징의 결정체 입니다.

(chroot) livecd ~ # emerge --ask sys-kernel/gentoo-sources

우선 소스를 가져옵니다.

(chroot) livecd ~ # cd /usr/src/linux && make menuconfig
위와 같이 빌드할 수 있지만 너무 어려우므로 자세한 것은 따로 해 보실 필요있으시면 하시고,
여기서는 livecd가 최대한 가져올 수 있는 내용에 맞추어 하는 genkernel 을 이용해 봅니다.

(chroot) livecd ~ # emerge --ask sys-kernel/genkernel
로 genkernel 명령을 생성합니다.

(chroot) livecd ~ # vi /etc/fstab
파일을 열어, /dev/BOOT ... 대신  아래줄 처럼 /dev/sda2 만 수정해 줍니다.
/dev/sda2 /boot ext2 defaults 0 2

(chroot) livecd ~ # genkernel all
이렇게 하면 커널 및 모든 커널 모듈을 하꺼번에 빌드하기 때문에 시간이 상당히 걸립니다.
(한시간 정도...?)

위와 같이 잘 끝났으면 됩니다.

(chroot) livecd ~ # vi /etc/fstab
/dev/sda2 /boot ext2 defaults,noatime 0 2
/dev/sda3 none swap sw 0 0
/dev/sda4 / ext4 noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,user 0 0

위와 같이 설정합니다.


!!네트워크 설정

(chroot) livecd ~ # vi /etc/conf.d/hostname
hostname="Gentoo"

이렇게 호스트이름을 지정하고,

(chroot) livecd ~ # vi /etc/conf.d/net
dns_domain_lo="local"
config_eno16777736="192.168.117.200/24"
routes_eno16777736="default via 192.168.117.2"

만약 dhcp를 이용한다면...
config_eno16777736="dhcp"

위와 같이 지정하였습니다.

위의 인터페이스는 <eno16777736>
(chroot) livecd ~ # ls /sys/class/net
eno16777736  lo
로 확인 가능합니다.

(chroot) livecd ~ # cd /etc/init.d
(chroot) livecd ~ # ln -s net.lo net.eno16777736
(chroot) livecd ~ # rc-update add net.eno16777736 default

라고 하고

(chroot) livecd ~ # vi /etc/hosts
를 열어
127.0.0.1 Gentoo Gentoo.local localhost
::1 Gentoo Gentoo.local localhost

부분에 Gentoo Gentoo.local 부분을 추가해 줍니다.

기타 설정들...

(chroot) livecd ~ # passwd
root 디폴트 암호를 변경합니다.

참고로 원격에서 접속하게 만들려면 
(chroot) livecd ~ # rc-update add sshd default

(chroot) livecd ~ # vi /etc/conf.d/hwclock
clock="local"
로 UTC대신 로컬시간대역으로 설정합니다.

시스템 로거 지정
(chroot) livecd ~ # emerge --ask app-admin/syslog-ng
(chroot) livecd ~ # rc-update add syslog-ng default

크론 데몬 설정
(chroot) livecd ~ # emerge --ask sys-process/cronie
(chroot) livecd ~ # rc-update add cronie default

DHCP를 사용할 경우,
(chroot) livecd ~ # emerge --ask net-misc/dhcpcd

!!! 마지막으로 부트로더 설정
(chroot) livecd ~ # emerge --ask sys-boot/grub
(chroot) livecd ~ # grub2-install /dev/sda
(chroot) livecd ~ # grub2-mkconfig -o /boot/grub/grub.cfg

!!!리붓
(chroot) livecd ~ # exit
livecd ~ # cd
livecd ~ # umount -l /mnt/gentoo/dev{/shm,/pts,}
livecd ~ # umount /mnt/gentoo{/boot,/sys,/proc,}
umount: /mnt/gentoo/sys: target is busy
        (In some cases useful info about processes that
         use the device is found by lsof(8) or fuser(1).)
umount: /mnt/gentoo: target is busy
        (In some cases useful info about processes that
         use the device is found by lsof(8) or fuser(1).)
위의 오류가 나왔지만, 무시했음...
livecd ~ # reboot


참고...
맥의 VM 콘솔에서 로그인을 한 다음,
오른쪽 Command 키를 누르면 계속 새로운 tty 터미널이 나타나고,
왼쪽 Command 키를 누르면 이전 tty로 되돌아갑니다.

따라서 맥의 콘솔을 벗어나기 위한 Control+Command 를 누를 때 위의 tty 이동이
적용되는 것을 염두에 두어야 합니다...



어느 분께는 도움이 되셨기를...

덧글

댓글 입력 영역

구글애드텍스트