FreeBSD

Mon, Sep 21 2020 02:52:06

2023.08.01에 업데이트했습니다.

FreeBSD® 소개

FreeBSD 는 유닉스 운영체제입니다. FreeBSD 는 커널, libc, 시스템 관련 유틸리티를 모두 포함하는 완전한 형태의 운영체제입니다.

FreeBSD 13.2 버전 설치하기

https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.2/ 이미지를 다운받습니다.
*.img 파일이 UBS 용 파일입니다.

다음 문서를 참고하세요.
https://www.freebsd.org/doc/handbook/bsdinstall.html

xfce 데스크탑 환경 설치하기

설치 단계를 나누지 않고 합쳐서 설명 드리겠습니다.

사용자가 포함되는 그룹을 수정

아래 명령을 하면 username 이라는 사용자가 wheel, operator, video 그룹에 추가됩니다. wheel 그룹에 추가해야만 su 명령을 사용할 수 있습니다.

# pw usermod username -G wheel, operator, video

패키지 설치

주의: AMD 3000G CPU, Asus Prime A320I-K 메인보드와 nvidia 그래픽 카드를 기준으로 설명 드립니다.
nvidia 그래픽 카드를 추천드리며 amdgpu 는 드라이버 품질이 좋지 않기 때문에 추천드리지 않습니다.
아래 설명은 귀하의 환경과는 맞지 않을 수 있습니다.

FreeBSD 를 설치한 후에 터미널에서 아래 패키지들을 설치합니다.

pkg install curl xorg-minimal nvidia-driver-470 nvidia-xconfig drm-kmod sddm \
  sddm-freebsd-black-theme xfce xfce4-screensaver xfce4-pulseaudio-plugin \
  xfce4-screenshooter-plugin xfce4-whiskermenu-plugin xfce4-weather-plugin \
  thunar-archive-plugin file-roller 7-zip ristretto noto-kr firefox \
  devcpu-data-amd icons-tango icons-tango-extras

일부 패키지는 설치한 후에 설정을 필요로 합니다.

rc.conf 설정

/etc/rc.conf 에 아래 내용을 추가합니다.

clear_tmp_enable="YES" # 재시동할 때 /tmp 디렉토리 내의 파일들을 삭제합니다
syslogd_flags="-ss" # 원격 로그 기능을 사용하지 않습니다
devfs_system_ruleset="localrules" # /etc/devfs.rules 적용
kld_list="nvidia-modeset" # nvidia 커널 모듈을 로딩
dbus_enable="YES" # dbus 가동
sddm_enable="YES" # sddm 가동

sddm-freebsd-black-theme 설정

sddm-freebsd-black-theme 을 사용하면 화면이 멋있어 보입니다. /usr/local/etc/sddm.conf 파일이 없으면 만든 후 아래 내용을 넣어 줍니다.

[Theme]
Current=sddm-freebsd-black-theme

USB 메모리 설정

/etc/devfs.rules 파일이 없으면 만든 후에 아래 내용을 추가합니다. USB 메모리를 꽂으면 da0 이런 형태의 장치 이름이 생깁니다. 아래 설정은 USB 메모리를 꽂았을 때, operator 그룹에 있는 사용자가 da* 장치에 읽기 쓰기할 수 있도록 하기 위해 da* 장치에 소유지/그룹 읽기 쓰기 권한과 operator 그룹 권한을 부여하는 내용입니다.

[localrules=5]
add path 'da*' mode 0660 group operator

fstab 설정

많은 프로그램들이 리눅스 proc 파일 시스템을 필요로 합니다. proc 파일 시스템을 사용하기 위해 /etc/fstab 에 아래 내용을 추가합니다.

proc            /proc           procfs  rw      0       0

sysctl.conf 설정

/etc/sysctl.conf 에 아래 내용을 추가합니다.

vfs.usermount=1 # 일반 사용자가 USB 저장소를 마운트할 수 있게 해줍니다.
hw.snd.default_unit=3 # 기본 사운드 유닛을 3 (0부터 시작하므로 네번째)으로 합니다. 시스템 마다 다릅니다.

로케일 설정

/etc/profile 에 아래 내용을 추가합니다.

LANG=en_US.UTF-8; export LANG
MM_CHARSET=UTF-8; export MM_CHARSET
LC_ALL=en_US.UTF-8; export LC_ALL

LC_ALL=en_US.UTF-8; export LC_ALL 이부분을 추가하지 않으면 리브레오피스에서 한글 이름의 파일을 읽지 못하거나 문서 내에 한글이 있을 경우 이상하게 나옵니다. /etc/profile 말고 ~/.login_conf, ~/.shrc, ~/.cshrcLC_ALL 을 추가해봤자 파일탐색기에서 한글 파일을 클릭하여 파일을 열었을 때 소용없었습니다. 그래서 /etc/profile 에 추가합니다.

xorg 설정

kldload nvidia-modeset
X -configure
mv /root/xorg.conf.new /usr/local/etc/X11/xorg.conf.d/amdgpu.conf

참고: suspend 모드로 들어갔다가 나오면 키보드 설정이 풀리는 현상이 있습니다. 이 문제를 해결하기 위해서는 /usr/local/etc/X11/xorg.conf.d/에 키보드 설정 파일을 만들어 주면 됩니다.

영문 드보락 자판을 사용하신다면 아래 내용을 /usr/local/etc/X11/xorg.conf.d/dvorak.conf 라는 파일로 저장하시면 되겠습니다.

Section "InputClass"
  Identifier      "Keyboard0"
  MatchIsKeyboard "on"
  Option          "XkbVariant" "dvorak"
EndSection

외산 키보드로 한글을 입력하신다면 아래 내용을 /usr/local/etc/X11/xorg.conf.d/korean.conf 라는 파일로 저장하시면 되겠습니다.

Section "InputClass"
  Identifier      "Keyboard0"
  MatchIsKeyboard "on"
  Option          "XkbOptions" "korean:ralt_hangul,korean:rctrl_hanja"
EndSection

그 다음 아래 명령을 합니다.

# service sddm stop
# service sddm start

매번 service sddm start 명령을 해야 하는 것은 아닙니다. 다음 번에 리부팅을 하 시면 위 명령을 수작업으로 할 필요없이 그래픽 로그인 화면이 나오게 될 것입니다.

위 설치 작업들을 반자동화하는 스크립트를 만들었으니 참고하시기 바랍니다.

install-xfce-amd-dvorak.sh
install-xfce-nvidia-dvorak.sh

USB 마운트

dos 파일 시스템을 마운트할 때, UTF-8 이름이 있으면 에러 나는 경우가 있습니다. 이 때

mount_msdosfs -L en_US.UTF-8 /dev/da0s1 /mnt

이런 식으로 마운트 하면 됩니다.

exFAT 마운트

안드로이드 폰에서 마이크로 SD카드를 사용하기도 하는데, exFAT 파일 시스템을 사용할 것입니다.
마이크로 SD카드를 UBS 카드 리더에 꽂고, USB 카드 리더를 컴퓨터 본체의 꽂습니다.

# pkg install fusefs-exfat
# kldload fusefs
# mount.exfat /dev/da0s1 /mnt
# ls /mnt
.android_secure Audiobooks      Download        Pictures
Alarms          Call            Movies          Podcasts
Android         DCIM            Music           Recordings
AudioRecorder   Documents       Notifications   Ringtones

사용을 완료한 후에는

# umount /mnt

명령을 하시면 되겠습니다.

홈 디렉토리의 Music 폴더를 USB 메모리에 동기화하는 방법

USB 메모리가 /mnt 에 마운트되어 있다고 가정합니다.
보통은 -avh 옵션을 주는데
-a 옵션은 -rlptgoD 옵션과 같습니다.
-g 옵션은 그룹을 보존합니다.
-o 옵션은 소유자를 보존합니다.

그런데 exFAT 과 함께 작업할 때 exFAT 는 파일 시스템에 권한이 없으므로 rsync 명령어를 사용할 때 -g, -o 옵션을 빼야 rsync를 사용할 때 에러가 발생하지 않습니다.

-c 는 checksum 옵션입니다. -c 옵션을 사용하더라도 우려할 정도로 CPU 를 많이 사용하지는 않습니다.

last pid:  5567;  load averages:  0.07,  0.25,  0.31                                                                                 up 0+19:28:58  05:20:43
105 processes: 1 running, 104 sleeping
CPU:  0.6% user,  0.0% nice,  1.4% system,  1.0% interrupt, 97.1% idle
Mem: 1541M Active, 8870M Inact, 353M Laundry, 2701M Wired, 1367M Buf, 294M Free
ARC: 448M Total, 72M MFU, 341M MRU, 396K Anon, 3698K Header, 32M Other
     374M Compressed, 405M Uncompressed, 1.08:1 Ratio

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
 5548 root          1  21    0    19M  5848K select   1   0:16   1.88% rsync
 5559 root          1  21    0    68M  6276K fu_ans   2   0:01   1.73% rsync
 5184 root          1  20    0    43M    21M physrd   3   0:18   1.66% mount.exfat-fuse
 5549 root          1  20    0    43M    26M fu_ans   0   0:13   1.03% rsync

다음처럼 명령하면 $HOME/Music/mnt/Music 에 동기화됩니다.

cd
rsync -rlptDvhc --delete ./Music /mnt

/etc/fstab

리눅스 파일 시스템인 ext4 파일 시스템을 장착(mount)하기 위해서는 다음의 마지막 줄을 참고하시기 바랍니다.

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/gpt/efiboot0       /boot/efi       msdosfs rw              2       2
/dev/ada2p3             none            swap    sw              0       0
proc                    /proc           procfs  rw              0       0
/dev/ada0p2             /mnt/linux      ext2fs  rw              0       0

위의 예의 마지막 줄에서 ext4 파일 시스템이 있는 파티션이 /dev/ada0p2 이고 장착 위치(mount point)는 /mnt/linux 입니다. ext4 파일 시스템의 경우 /etc/fstab 파일에서 파일 시스템 타입을 ext2fs로 지정하면 되겠습니다.

crontab

리눅스가 별도의 장치 또는 별도의 파티션에 설치되어 있다고 할 때, 위의 방법으로 리눅스 파티션을 장착할 수 있습니다. rsync/etc/crontab 을 통하여 파일 백업을 자동화할 수 있습니다.

/etc/crontab 에 아래 내용을 넣으면 매일 0시 0분에 root 권한으로 rsync -rlptDvhc --delete /home/username/Music /mnt/linux/home/username 명령이 실행됩니다.

0       0       *       *       *       root    rsync -rlptDvhc --delete /home/username/Music /mnt/linux/home/username

geany 패치 만들기 예제

portsnap auto
cd /usr/ports/devel/geany
make extract
cd work-gtk3/geany-1.37.1/scintilla/gtk/
cp ScintillaGTK.cxx ScintillaGTK.cxx.orig
# ScintillaGTK.cxx 파일을 수정합니다.
cd /usr/ports/devel/geany
make makepatch
# ./files/patch-scintilla_gtk_ScintillaGTK.cxx 가 생성되었네요

그 다음에 make 한 후에 make deinstall 하고 make reinstall 하면 패치된 geany 가 설치됩니다. make clean 하여도 패치 파일은 남아 있어서 다음 번에 또 이용할 수 있습니다.

shell 변경하는 방법

chsh 명령을 이용하시면 되겠습니다.