FreeBSD
Mon, Sep 21 2020 02:52:062023.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
, ~/.cshrc
에 LC_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
명령을 이용하시면 되겠습니다.