본문 바로가기
배포판

FreeBSD

by 다움위키 2023. 10. 18.

FreeBSD는, Research Unix를 기반으로 하는, Berkeley Software Distribution (BSD)에서 유래한 자유와 오픈-소스 유닉스-계열 운영 시스템입니다. FreeBSD의 첫 번째 버전은 1993년에 출시되었습니다. 2005년에서, FreeBSD는 설치된 BSD 시스템 전체의 4분의 3이상을 차지하는, 가장 유명한 오픈-소스 BSD 운영 시스템였습니다.

FreeBSD는 범위와 라이센스에서 두 가지 주요한 차이점과 함께 리눅스와 유사성을 가집니다: FreeBSD는 완전한 시스템을 유지하는데, 즉, 커널(kernel), 장치 드라이버, 사용자층(userland) 유틸리티, 그리고 문서를 제공하는 프로젝트이고, 반면에 리눅스는 커널 및 드라이버, 그리고 시스템 소프트웨어에 대해 제 3자에게 의존합니다; 그리고 FreeBSD 소스 코드는 일반적으로 리눅스에 의해 사용되는 카피레트프 GPL과는 반대로, 허가된(permissive) BSD 라이선스 아래에서 출시됩니다.

FreeBSD 프로젝트는 기본 배포판에 포함된 모든 소프트웨어를 감독하는 보안 팀을 포함합니다. 추가적인 타사 응용 프로그램의 광범위한 부분은 pkg 패키지 관리 시스템 또는 FreeBSD 포트를 사용하여 설치하거나, 소스 코드를 컴파일함으로써 설치될 수 있습니다.

FreeBSD의 코드베이스의 대부분은 Darwin (macOS, iOS, iPadOS, watchOS, tvOS에 대한 기초), TrueNAS (오픈-소스 NAS/SAN 운영 시스템), 및 PlayStation 3PlayStation 4 게임 콘솔에 대해 시스템 소프트웨어와 같은 다른 운영 시스템의 필수적인 부분이 되어져 왔습니다.

Installation

FreeBSD 13.1에 대해, 설치 과정을 정리해 둡니다.

설치 매체 구하기

카이스트 ftp 서버에서 내려받을 수 있습니다. 가장 큰 dvd1.iso를 내려받았습니다.

TrueOS를 먼저 읽어 보시기 바랍니다. 부팅 후에 설치를 계속합니다.

Virtual Machine Manager

설치 이미지로부터 최신의 정보를 확인하기 위해, osinfo-db 패키지 업데이트가 필요합니다.

  • 메모리 : 4G

설치 시작

부팅 후에 B를 눌러서 다중 사용자 모드로 부팅합니다:

  • Welcome: Install을 선택합니다.
  • Keymap Selection: Continue with default keymap을 선택합니다. 아직 한글 키보드 선택은 없습니다.
  • Set Hostname: freebsd 정도로 입력합니다.
  • Distribution Select: 기본값 kernel-dbg는 제거하고, lib32, ports를 선택하고 진행합니다.
  • Partitioning: 기본값 Auto (ZFS)을 선택하고 진행합니다.
  • ZFS Configuration: 기본값으로 진행합니다.
  • ZFS Configuration: 기본값으로 진행합니다.
  • ZFS Configuration: 찾아지는 HDD를 선택하고 진행합니다.
  • ZFS Configuration: 그동안 선택된 사항을 저장하고, 맞으면 YES로 옮기고 진행합니다.
  • Installing: 파티션을 만들고, 파일 시스템을 만들고, 패키지를 설치합니다.
  • Root Password: 입력합니다.
  • Network Configuration: vtnet0가 확인됩니다.
  • IPv4 구성: Yes선택합니다.
  • DHCP 사용: Yes선택합니다.
  • IPv6 구성: No선택합니다.
  • Resolver Configuration: 확인하시고, OK를 누릅니다.
  • Time Zone Selector: Asia/Korea (Republic of)
  • Confirmation: 'KST' 확인창을 보고, YES로 진행합니다.
  • Time & Date: 날짜가 맞으니 Skip을 누릅니다.
  • Time & Date: 시간을 맞춥니다.
  • System Configuration: 부팅시 시작할 서비스를 골라줍니다. 전부 제거하고 진행합니다.
  • System Hardening: 시스템 보안을 위해 필요한 사항을 선택하는 것입니다. 기본값으로 진행합니다.
  • Add User Accounts:
  1. Username: 반드시 입력해야 합니다.
  2. Full name: 입력 안하셔도 됩니다.
  3. Uid (Leave empty for default): ↵ Enter
  4. Login group: ↵ Enter
  5. Login group is user_id. Invite user_id into other groups? : wheel
  6. Login class [default]: ↵ Enter
  7. Shell (sh csh tcsh nologin) [sh]: tcsh
  8. Home directory: ↵ Enter
  9. Home directory permissions: ↵ Enter
  10. Use password-based authentication> [yes]: ↵ Enter
  11. Use an empty password? ↵ Enter
  12. Use a random password? ↵ Enter
  13. Enter password:
  14. Enter password again:
  15. Lock out the account after creation?: ↵ Enter
  16. OK?: yes
  17. Add another user?: no
  • Final Configuration: 지금까지 설정한 부분들을 볼 수 있습니다. 잘못된 부분은 다시 들어가서 설정할 수 있습니다.
  • Manual Configuration: 쉘을 열어서 수동으로 설정할 부분이 있는지 확인을 합니다. No를 누릅니다.
  • Complete: Reboot를 누릅니다.

재시작하면 설치가 마무리 됩니다. 터미널 환경만 있기 때문에 GUI 환경을 구성해야 합니다. 재시작 후에 설정을 계속합니다.

Configuration

먼저, root 사용자로 로그인 합니다.

Port Update

  • pkg update
  • pkg upgrade

Change fastest pkg mirror

  • pkg install ports-mgmt/fastest_pkg
  • fastest_pkg

Useful program

  • pkg install bash nano sudo
  • bash

일반사용자를 wheel 그룹에 등록한 후에, /usr/local/etc/sudoers 파일을 수정합니다.

%wheel ALL=(ALL) ALL

앞의 주석을 제거해 줍니다.

Sendmail stop

부팅시에 샌드메일이 시작하는데 시간이 꽤 걸립니다. 아래와 같이 중지시킬 수 있습니다.

  • nano /etc/rc.conf

sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"

위의 4줄을 사용하는 것보다 아래의 한 줄을 사용하는 것이 좋겠습니다.

sendmail_enable="NONE"

Bash

필요할 때마다 터미널에서 bash를 사용할 수 있지만, 항상 bash를 이용하도록 바꿀 수 있습니다.

  • which bash

/usr/local/bin/bash

  • chsh
#Changing user information for user_id.
Shell: /usr/local/bin/bash
Full Name: user_name
Office Location:
Office Phone:
Home Phone:
Other information:

2번째 줄에 나오는 내용을 위와 같이 바꾸어 줍니다. 수정할 때는 시스템의 기본인 vi가 사용되는 것으로 추정됩니다. i키를 눌러서 수정한 후에 Esc를 눌러서 :wq를 눌러서 수정을 완료합니다. 수정이 끝난 후에는 사용자 암호를 입력과정이 있으며, 재로그인을 해야 변경된 사항이 적용됩니다.

위의 방법이 어려운 분들은 다음과 같이 합니다.

  • chsh -s /usr/local/bin/bash
  • chsh -s /usr/local/bin/bash user_id

첫번째 명령은 root사용자의 쉘을 바꾸는 방법입니다. 두번째 명령은 user_id에 해당되는 사람의 쉘을 바꾸는 명령입니다.

X Windows

  • pkg install xorg

모든 디바이스를 자동으로 설정을 하기 때문에, 수동으로 설정을 할 필요가 없다고 합니다. 만약 자동으로 설정을 했을 때 기능이 완전하지 못하면 수동으로 설정을 해야 합니다.

  • startx

썰렁한 화면을 볼 수 있습니다. 마우스를 움직여 모든 창에 exit를 입력하면 X 윈도우가 종료됩니다.

Qxl driver

QEMU/KVM 아래에 설치된 freebsd에서 X 윈도우가 동작하지 않습니다. 이유는 qxl 드라이버가 제외되었기 때문입니다.

다음 과정으로 설치할 수 있습니다:

그런-다음

  • Xorg -configure
  • cp xorg.conf.new /etc/X11/xorg.conf
  • nano /etc/X11/xorg.conf

그런-다음 모드를 추가합니다:

SubSection "Display"
Viewport 0 0
Depth 15
Modes "1600x900" "1920x1080" "1440x900" "1280x800" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1600x900" "1920x1080" "1440x900" "1280x800" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1600x900" "1920x1080" "1440x900" "1280x800" "1024x768"
EndSubSection

Gnome

  • pkg install gnome-desktop gdm
  • nano /etc/fstab

proc /proc procfs rw 0 0

  • nano /etc/rc.conf
dbus_enable="YES"
hald_enable="YES"

시스템을 재시작해야 적용됩니다.

그놈 시작1

Gdm을 시스템이 시작될 때 자동으로 시작하고 싶다면,

  • nano /etc/rc.conf

gdm_enable="YES"

또는 gnome_enable="YES"를 입력해도 됩니다.

그놈 시작2

사용자 디렉토리 아래에 파일을 만듭니다.

  • echo "exec /usr/local/bin/gnome-session" > ~/.xinitrc
  • startx

그놈 시작3

로긴 매니져를 XDM을 사용하고 있을 때 사용하는 방법입니다.

  • echo "#!/bin/sh" > ~/.xsession
  • echo "exec /usr/local/bin/gnome-session" >> ~/.xsession
  • chmod +x ~/.xsession

그놈 제거 방법

과거에는 의존성에 의해 설치된 패키지를 같이 제거하는 방법이 없었지만, 지금은 만들어져서 쉽게 제거가 가능합니다.

  • pkg delete gnome3
  • pkg autoremove

Kde

  • pkg install kde4

과정은 그놈이랑 같으며, gdm->kde4gnome-session->startkde로 바꿉니다.

Xfce

  • pkg install xfce

Gnome, Kde처럼 자체의 로긴 매니져가 없습니다.

  • echo "exec /usr/local/bin/startxfce4 --with-ck-launch" > ~/.xinitrc
  • startx

Xdm을 이용한다면, 다음과 같이 설정합니다.

  • echo "#!/bin/sh" > ~/.xsession
  • echo "exec /usr/local/bin/startxfce4 --with-ck-launch" >> ~/.xsession
  • chmod +x ~/.xsession

Enlightenment

  • pkg install enlightenment terminology
NOTE: If you want "Shutdown" and "Restart"
menu actions to work properly, manually set SUID bit on
"/usr/local/lib/enlightenment/utils/enlightenment_sys"
executable.

일반 사용자는 E 차림표에서 Shutdown, Reboot을 이용할 수 없습니다. 아래와 같이 수정하시면 일반 사용자도 해당 명령을 이용가능합니다.

  • sudo chmod u+s /usr/local/lib/enlightenment/utils/enlightenment_sys
  • nano .xinitrc

exec /usr/local/bin/enlightenment_start

Install Open VM tools

  • pkg install open-vm-tools
  • nano /etc/rc.conf
vmware_guest_vmblock_enable="YES"
vmware_guest_vmhgfs_enable="YES"
vmware_guest_vmmemctl_enable="YES"
vmware_guest_vmxnet_enable="YES"
vmware_guestd_enable="YES"
  • pkg install xf86-video-vmware
  • pkg install xf86-input-vmmouse

수동 설정

문제가 생기면 아래와 같이 수동으로 설정 파일을 만들어서, 적절한 위치에 옮겨서, 수정을 해야 합니다.

  • Xorg -configure
  • cp xorg.conf.new /usr/local/etc/X11/xorg.conf.d/xorg.conf
  • nano /etc/X11/xorg.conf
...
        InputDevice     "Keyboard0" "CoreKeyboard"
#        Option          "AutoAddDevices" "Off"    //이것을 추가하면 마우스가 동작하지 않습니다.
...
        Identifier  "Mouse0"
        Driver      "vmmouse"                     //이것을 수정해도 사용하지 않습니다.
...
        Identifier  "Card0"
        Driver      "vmware"                      //이것은 원래 사용합니다.
...

X 윈도우 로그를 보니, Hotplugging이 동작하고 있어서 'vmmouse' 드라이버를 사용중지시킨다는 메시지가 있습니다. 마우스 외에는 잘 작동하는 것으로 보입니다.

위 지면에서 제시하는 패치는 vmmouse의 자동 검색에 대한 오류를 제거하는 목적으로 만들어졌다고 합니다. FreeBSD 10.3 이후로 이 문제가 계속되어 왔다고 합니다. 10월 19일 패치가 제시되었으니 곧 공식 포트에 반영될 것으로 보입니다.

한글 입력기

  • pkg search hangul
ko-fcitx-hangul-0.3.0          Hangul support for Fcitx
ko-ibus-hangul-1.5.0           Hangul input engine for IBus
ko-imhangul-gtk2-2.1.1         Hangul input module for GTK+ 2.0
ko-imhangul-gtk3-3.1.1         Hangul input module for GTK+ 3.0
ko-libhangul-0.1.0_3           Library for Hangul processing
ko-scim-hangul-0.4.0_3         SCIM IMEngine module for Korean(Hangul) input
  • sudo pkg install ko-ibus-hangul
New packages to be INSTALLED:
        ko-ibus-hangul: 1.5.0
        ko-libhangul: 0.1.0_3
...
If you are using bash or zsh, please add following lines to your $HOME/.bashrc or
$HOME/.zshrc:

export XIM=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export XMODIFIERS=@im=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="-r --daemonize --xim"

If you are using tcsh, please add following lines to your $HOME/.cshrc:

setenv XIM ibus
setenv GTK_IM_MODULE ibus
setenv QT_IM_MODULE xim
setenv XMODIFIERS @im=ibus
setenv XIM_PROGRAM ibus-daemon
setenv XIM_ARGS "-r --daemonize --xim"

If you are using KDE4, you may create a shell script in $HOME/.kde4/env,
and add following lines:

#!/bin/sh
export XIM=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export XMODIFIERS=@im=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="-r --daemonize --xim"
  • 입력기 문제는 해결되더라도 terminology는 guest에서 host로 클립보드 공유가 안됩니다.
  • xterm은 클립보드 공유가 되지만, 입력기가 제대로 동작하지 않습니다. 설정을 손을 봐야 합니다.
  • uxterm 같은게 없을까요?

한글 글꼴

한글 port는 /usr/ports/korean 아래에 있습니다.

  • sudo pkg install ko-nanumfonts-ttf

한글 폰트는 나눔폰트보다 noto-kr이 더 보기 좋습니다.

  • sudo pkg install noto-kr

한글 글꼴은 아니지만, 영문 글꼴은 우분투 것이 보기에 좋습니다.

  • sudo pkg install ubuntu-font

그놈 터미널

  • gnome-terminal
Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 8

오류가 생깁니다. 이것은 로케일이 설정되지 않아서 발생하는 문제입니다. 그놈 설정에 있는 언어를 보면 US-ASCII(C)라고 되어 있습니다. 로케일을 설정합니다. ~/.bashrc에 씁니다.

export XIM=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export XMODIFIERS=@im=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="-r --daemonize --xim"
export LANG="en_US.UTF-8"

마지막 줄에 LANG 변수를 추가해 줍니다.

External links