요즘 Ubuntu Linux가 linux 진영에서 하나의 trend로써 전세계적으로 많이 사용되고 있는데 시험삼아 Ubuntu와 Kbuntu를 설치해서 GNOME과 KDE를 한번 비교해봤습니다. FreeBSD를 쓸때에는 Window Maker 이외에는 써보질 않았고 요즘 다시 쓰고 있는 NetBSD 3.1은 XFCE를 사용하고 있는터라 솔직히 GNOME과 KDE가 얼마나 많이 변해왔는지 궁금하기도 하고 2년 넘게 개발 머신으로 사용하고 있는 linux가 현재는 배포되고 있지않은 Wow Linux라서 차기 linux를 선택할 때가 되었다는 생각이 들어 요즘 고르고 있는 중입니다.
Ubuntu 계열 좀 더 정확히 말하면 Debian 계열의 Linux의 장점은 aptitude를 이용한 손쉬운 바이너리 업데이트에 있는데 거기에다 깔끔한 설치화면을 가미하고 CLI환경을 사용자에게 감추는 방식을 사용해서 처음 접하는 사용자에게 그리 어렵지 않게 다가갈수 있도록 배려한 점은 높이 살만합니다.
그래서 이번 기회에 x86계열의 노트북에 VMWare로 NetBSD를 설치할때 순수 바이너리 인스톨만 가지고 얼마나 깔끔한 환경을 제공할 수 있는지 삽질아닌 삽질(?)을 해보았습니다. OS 설치하는 것을 개인적으로 상당히 싫어하는 편이지만 설치할 때 이것 저것 처음 접하는 장면은 화면 캡쳐를 많이 해 두는 버릇이 있어 요번에 설치할때 캡쳐한 화면을 가지고 글을 하나 써보려고 합니다.
목적: KDE 데스크탑 환경으로서의 NetBSD 사용
목표: pkgsrc(2007Q2) 바이너리만 가지고 NetBSD 설치하기
환경: x86 VMWare(WinXP Home), 256MB RAM, 20GB
pkg_add 명령으로 remote에 있는 package를 설치할 수 있는 방법은 PKG_PATH 변수를 이용해서 설치하는 방법이 있는데 예를 들어 다음과 같이 할수 있습니다.(pkg_add(1))
# export PKG_PATH=ftp://ftp.NetBSD.org/pub/NetBSD/packages/2.0/i386/All
# pkg_add -v firefox
dependant한 패키지가 있는 경우 자동으로 설치가 되는데 FreeBSD 만큼 매끄럽게 설치되지가 없습니다. 그래서 하는 수 없이 수동으로 ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/All 에 있는
패키지를 다운로드 받아서 설치하는 방법을 사용했습니다. 그리고 설치하면서 알게 된 사실인데 이 경우에도 dependant한 패키지가 로컬 디렉토리(정확히는 pkg_add를 수행하는 디렉토리)에 있는 자동으로 매끄럽게 설치가 됩니다.
우선 제일 먼저 설치하는 메뉴에서 모든 set를 설치해서 X도 같이 설치 될수 있게끔 했습니다. 그리고 설치후 에는 제가 좋아하는 xdm이 기동 될수 있는 환경으로 꾸몄습니다.
netbsd: {91} cd /etc
netbsd: {92} pwd
/etc
netbsd: {93} diff -bu ttys.orig ttys
--- ttys.orig 2007-08-25 10:17:17.000000000 +0900
+++ ttys 2007-08-25 10:19:53.000000000 +0900
@@ -9,6 +9,7 @@
ttyE1 "/usr/libexec/getty Pc" vt220 on secure
ttyE2 "/usr/libexec/getty Pc" vt220 on secure
ttyE3 "/usr/libexec/getty Pc" vt220 on secure
+ttyE4 "/usr/libexec/getty Pc" vt220 off secure # manual add...
tty00 "/usr/libexec/getty std.9600" unknown off secure
tty01 "/usr/libexec/getty std.9600" unknown off secure
tty02 "/usr/libexec/getty std.9600" unknown off secure
netbsd: {101} pwd
/etc/X11/xdm
netbsd: {102} diff -bu Xaccess.orig Xaccess
--- Xaccess.orig 2007-08-25 16:33:58.000000000 +0900
+++ Xaccess 2007-08-25 16:34:34.000000000 +0900
@@ -45,7 +45,7 @@
# right hand sides can match.
#
-#* #any host can get a login window
+* #any host can get a login window
#
# To hardwire a specific terminal to a specific host, you can
@@ -63,7 +63,7 @@
# so this may not work in all environments.
#
-#* CHOOSER BROADCAST #any indirect host can get a chooser
+* CHOOSER BROADCAST #any indirect host can get a chooser
#
# If you'd prefer to configure the set of hosts each terminal sees,
netbsd: {104} pwd
/etc/X11/xdm
netbsd: {105} diff -bu xdm-config.orig xdm-config
--- xdm-config.orig 2007-08-25 16:36:26.000000000 +0900
+++ xdm-config 2007-08-25 16:36:32.000000000 +0900
@@ -30,4 +30,4 @@
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
-DisplayManager.requestPort: 0
+!!DisplayManager.requestPort: 0
netbsd: {113} pwd
/etc/X11
netbsd: {114} cat XF86Config
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
ModulePath "/usr/X11R6/lib/modules"
FontPath "unix/:7100"
# FontPath "/usr/X11R6/lib/X11/fonts/misc/"
# FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
# FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
# FontPath "/usr/X11R6/lib/X11/fonts/CID/"
# FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
# FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
# FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
# FontPath "/usr/pkg/lib/X11/fonts/TTF/"
# FontPath "/usr/pkg/lib/X11/fonts/local/"
EndSection
Section "Module"
Load "extmod"
Load "glx"
Load "dbe"
Load "record"
Load "xtrap"
Load "type1"
Load "speedo"
Load "xtt"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "wsmouse"
Option "Device" "/dev/wsmouse"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
# HorizSync 31.5 - 35.1
# VertRefresh 50.0 - 70.0
Option "DPMS"
EndSection
Section "Device"
### Available Driver options are:-
### Values: : integer,
###
### [arg]: arg optional
#Option "HWcursor" # [
#Option "NoAccel" # [
Identifier "Card0"
Driver "vmware"
VendorName "VMware Inc"
BoardName "[VMware SVGA II] PCI Display Adapter"
BusID "PCI:0:15:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
netbsd: {120} pwd
/etc
netbsd: {121} cat rc.conf
...
hostname=netbsd.myhome
defaultroute="172.20.10.1"
sshd=YES
xfs=YES
xdm=YES xdm_flags=""
netbsd: {124} pwd
/etc
netbsd: {125} cat ifconfig.pcn0
up
172.20.1.8 netmask 255.255.0.0 media autoselect
netbsd: {126} pwd
/etc
netbsd: {127} cat hosts
...
172.20.1.8 netbsd netbsd. netbsd.myhome
여기까지하면 X와 ethernet 설정은 어느정도 마무리가 되었고 추가적으로 차후 pkgsrc 컴파일시 편리하게
하기 위해서 저는 sudo 를 설치하여 사용합니다.
netbsd: {136} pwd
/usr/pkg/etc
netbsd: {137} diff sudoers.orig sudoers
25c25
< # %wheel ALL=(ALL) NOPASSWD: ALL --- > %wheel ALL=(ALL) NOPASSWD: ALL
netbsd: {143} pwd
/etc
netbsd: {144} cat mk.conf
.if exists(/usr/pkg/bin/sudo)
SU_CMD= /usr/pkg/bin/sudo /bin/sh -c
.endif
이렇게 하고 난 다음 .xinitrc 는 다음 처럼 편집합니다.
netbsd: {145} cd
netbsd: {145} touch .xinitrc
netbsd: {145} ln .xinitrc .xsession
netbsd: {145} cat .xinitrc
#!/bin/sh
# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# start some nice programs
### nabi ###
export LANG=ko_KR.UTF-8
export XMODIFIERS="@im=nabi"
nabi &
### kde ###
startkde
여기까지 오면 이제 설정은 다 끝난 것으로 보이는데 다시 재부팅을 하면 xdm 환영 메시지가 나옵니다.
개인적으로 Xmanager와 같은 프로그램으로 연결을 하는 것을 좋아하기 때문에 xdm이 안 떠 있으면 X 쓰는
기분이 나질 않습니다^^
NOTE.
qt4 설치시 문제가 있는데 2007.08.26 현재 2007Q2 바이너리를 설치하면 안됩니다.
대신 2007Q1의 패키지를 설치해야 합니다. 2007Q2의 qt4-libs-4.2.3nb1에 Xml과 같은 라이브러리가
빠져 있어 designer, assistant와 같은 프로그램(qt4-tools-4.2.3)이 실행되지 않습니다. 더군다나
2007Q2에는 qt4-tools가 빠져있습니다. 따라서 다음 패키지는 2007Q1의 것을 이용했습니다.
qt4-libs-4.2.3nb1 C++ X GUI toolkit
qt4-tools-4.2.3 QT GUI (WYSIWYG) builder and other tools
qt4-docs-4.2.3 Documentation for the QT C++ X GUI toolkit
4GB 가 조금 넘는 양을 설치하고서야 위의 모든 기능이 설치가 되었는데 Kbuntu는 2GB 가 조금 넘는 크기를 가집니다. Kbuntu의 경우 개발 환경이 배제된 상태에서 이정도를 차지 하므로 사실상 설치 크기를 비교한다는 것은 아무런 의미가 없습니다. 패키지는 거의 200개에 육박할 정도로 설치가 되었는데 한가지 아쉬운 것은 KDE에서 처음 지향한 개발 모델에서 한가지 유감스러운 감이 있습니다. 라이브러리가 지나치게 많이 설치되는 문제가 있는데 이는 처음 KDE 프로젝트를 시작할 때 메일링리스트에 올린 글을 참조한다면 거의 해결하지 못했다는 느낌이 듭니다. 아무래도 오픈 소스의 가장 큰 딜레마가 아닐까 합니다.