프리BSD

From Hidden Wiki
(Redirected from 프리비에스디)
Jump to navigation Jump to search
필독 사항 유닠스 계열 저작물, 성인물, 도박 웹 써버 보안 프로그래밍 그래핔 파싱
필독 사항 고스트BSD 표면 웹 싸이트 제작 리눅스 마스터 파이썬 트킨터 뷰티펄 숲
수학 아이투피 마약, 아청물, 해킹 웹 싸이트 보안 웹 프로그래밍 데이터 분석 게임 제작
통계학 뮤와이어 다크넽 싸이트 제작 정보 보안 기사 쟁고우 팬더즈 파이게임

개요

FreeBSD는 유닉스 계열 운영 체제[* Unix-like OS]이며 리눅스처럼 서버용이든 데스크탑용이든 쓸 수 있는 범용적인 OS이다. 2017년 기준으로 BSD 계열 운영 체제 중 macOS를 제외하면 TrueOS에 이어 두번째로 많이 쓰이는 운영 체제이다. https://distrowatch.com/index.php?dataspan=2017


자세한 사용법은 트루OS (TrueOS) 문서를 참조하세요.


BSD란 Berkely Software Distribution의 약어로, 캘리포니아 대학교 버클리 캠퍼스에서 유래한 데서 붙여진 이름이다. vi로 유명한 빌 조이(Bill joy)[* 주말에 심심해서 vi를 만들어 버렸다는 흠좀무한 도시전설의 소유자이다. 그러나, 인터뷰 때 그건 아니라고 이야기했다. 솔라리스, ZFS, NFS, Sparc, Java 등으로 유명한 썬 마이크로시스템즈의 공동 창업자이기도 하다. ], 한때 메일 서버 계를 독점하다시피 했던 sendmail로 유명한 에릭 올먼(Eric Allman), 그리고 그의 동성 연인이자 유닉스 파일 시스템 UFS 혹은 FFS로 유명한 마셜 커크 매큐직(Marshall Kirk McKusick)[* 말 그대로 올먼과 매큐직은 게이 커플이다. 그다지 부끄러워하지도 않고, 공공연히 말하고 다닌다.] 등 프로그래머 계의 슈퍼스타 여럿이 버클리 출신이고, 버클리에 있던 시절 BSD를 위해 해당 프로그램들을 만들었다.

그러나, BSD는 AT&T와의 라이선스 문제 등 여러 가지 암초에 부딪히며 순항하지 못했고, 후에 4.4BSD-Lite를 끝으로 FreeBSD, NetBSD, OpenBSD 등으로 갈라지게 된다. 그리고, 초창기 멤버 중 매큐직은 FreeBSD 진영에 합류하여 오늘날까지 계속하고 있다. 문제는 저 몇 년 간의 틈새를 리눅스가 치고 들어와 선점했다는 것인데, 바로 이 차이로 인한 선점효과가 오늘날 점유율과 유명세 등에서의 커다란 차이를 보이게 된 원인이 되었다.

윈도우 운영체제의 사례에서 볼 수 있듯이, OS에서 선점효과는 막대하다. OS를 교체하려면 새 OS에 대해 배워야 하며 기존의 OS로 구축한 것을 새로운 OS에서 다시 구축해야 하는 수고가 들어가기 때문에(그나마도 새 OS에서 구축이 가능하다는 보장이 없다) 쉽게 교체하기 어렵다. 그나마 리눅스와 FreeBSD는 구조가 상대적으로 비슷한 편이므로 이 문제는 좀 덜한 편이기는 하지만, 다른 걸림돌이 있으니 이 둘은 주로 서버 시장에서 활동한다는 점이다. 서버 시장은 안정성이 극도로 중요하기 때문에, 이미 시장을 선점하여 작동 시간으로나 사용자 기반으로나 상대적으로 더 많이 검증된 기존의 OS를 버리고 갈아타는 데에 훨씬 더 보수적일 수밖에 없다.(유명 포털 사이트나 온라인 게임 서버가 예고 없이 다운되면 어떤 일이 벌어질 지를 생각해 보자.) 때문에 그 새로운 OS가 기존 OS에 비해 얼마나 많은 것을 제공해 주는지는 둘째 문제이다. 그리고, 이렇게 점유율에서 한번 밀려 버리면 당연히 해당 OS를 개발하려 하는 개발자들의 유입 역시 적어지고, 차이는 점점 벌어지는 것이 일반적이다. ~~이렇게 FreeBSD는 마이너가 되었다. 지못미~~

참고로, "BSD가 조금만 더 일찍 나왔다면 나는 리눅스를 만들지 않았을 것이다."라는 리누스 토르발스의 이야기를 누설(?)한 사람이 바로 매큐직이다. 실제로, 과거엔 BSD가 리눅스에 비해 성능이나 안정성 측면에서 좋은 점수를 많이 받았지만, 아무래도 점유율이 리눅스가 높아 개발자들의 유입도 많고 해서 빠르게 발전한 결과, 현재는 오히려 리눅스가 BSD를 앞질렀다고 볼 수 있다.


마이크로소프트에서는 예전엔 핫메일(Hotmail) 서버로 프리BSD(FreeBSD) 쓰다가 윈도우즈 2000 서버로 넘어갔다.[1] [2]

FreeBSD 설치 방법

유닠스 계열 문서와 트루OS 문서도 참조.

설치 USB 드라이브 제작

https://www.freebsd.org/where.html 에 가서 최신 버전인 FreeBSD 11.2-RELEASE의 Installer Images의 64비트 버전인 amd64를 받는다. i386은 32비트 버전이다. 772 MB인 FreeBSD-11.2-RELEASE-amd64-memstick.img가 있고, 3.2 GB인 FreeBSD-11.2-RELEASE-amd64-dvd1.iso가 있는데 뭐를 다운로드 받아도 설치에는 문제없다. 그리고 어차피 둘 다 GUI는 안 뜬다. 데스크탚 환경(desktop environment)을 직접 설치해줘야 GUI가 뜬다.


2017년에 나온 IntelCoffee Lake같은 최신 그래핔 칲셑(CPU 내장)을 사용하는 컴퓨터일 경우 FreeBSD 12.0-CURRENT에서 가장 최신 버전을 다운로드 받는다. 그럼 혹시 드라이버가 지원될 수도 있다. 972 MB인 FreeBSD-12.0-ALPHA8-amd64-20180928-r338991-memstick.img를 받으면 된다. 여기는 DVD용 iso 이미지는 아예 없다.


https://etcher.io/ 에 가서 Etcher의 portable 버전을 다운로드 받는다. img 파일이나 iso 파일을 USB 메모리에 구워준다.


iso 파일로 Etcher에서 구우려고 하면 It looks like this is not a bootable image. The image does not appear to contain a partition table, and might not be recognized or bootable by your device.라고 뜨는데 그냥 무시하고 Continue 눌러서 진행해도 프리BSD 설치에는 아무 문제 없다.


FreeBSD 웹싸이트에서 추천하는 Win32 Disk Imager로 구웠다가, USB 메모리의 파티션이 삭제가 안 되어 사용할 수 없게 됐을 경우에는 유닠스 계열 문서에 나온 방법을 참조하여 파티션을 삭제하면 된다.

Secure Boot 끄기

메인보드 설정에서 Secure Boot를 꺼야 부팅이 된다.

설치 과정

부팅이 되면 Install 버튼을 누른다. Live CD 버튼을 눌러봤자 CLI터미널만 뜬다.

Keymap Selection에 Korean이 없으니까 그냥 엔터 눌러서 다음으로 넘긴다.

Distribution Select도 그냥 엔터 눌러서 넘긴다.

Partitioning

디스크 전체 암호화(full disk encryption)를 안 할 거면 Partitioning에서 Manual을 선택하고, 전체 암호화를 할거면 Shell에서 수동으로 만들어줘야 한다. Auto (UFS)나 Auto (ZFS)는 선택하지 않는다. SSDHDD 전체를 사용한다.

Manual 파티셔닝

ada0과 da0이 보일텐데 ada0은 SSDHDD이고, da0은 설치용 USB 디스크이다.


키보드로 ada0의 파티션 중 하나에 커서를 갖다대고 Create를 선택한다. Type: efi에 Size 1MB로 하고, Options는 기본값인 FAT32 그대로 하면 된다. FAT16이나 FAT12로 바꿀 필요가 없다. 여기서는 좌우 화살표 키가 아니라 상하 화살표 키로 움직인다. Tab 키도 사용하여 움직여야 한다.


Type: freebsd-swap에 Size: 2GB 정도로 swap partition을 만들 수도 있지만, 작은 공간이 따로 떨어진 상태로 혼자만 많이 쓰여지기 때문에 SSDTRIM에 불리하고, 별도로 암호화를 안 하면 보안상 문제도 있으므로 swap partition은 만들지 않는다. 대신 나중에 필요하면 swap file을 만들 수 있다. SSD는 일정 이상 쓰면 망가지므로 전체 공간을 비슷하게 쓰도록 TRIM 기능이 작동하는데, 파티션 별로 작동하므로 swap partition처럼 혼자만 집중적으로 많이 쓰이는 공간이 있으면 SSD의 수명을 갉아먹는다.


Type: freebsd-ufs에 Size: 15 GB에 Mountpoint: /로 주 파티션을 만든다. 15 GB 이상은 할당하는 게 좋다. Options에서 TRIM (Enable SSD TRIM support)을 선택해준다.


df -h로 각 파티션 크기를 확인할 수 있고, free로 메모리와 swap 공간의 크기와 여유 공간을 확인할 수 있다.


Swap file 만드는 방법은 아래 링크 참조.

https://www.freebsd.org/doc/handbook/adding-swap-space.html

Shell 파티셔닝과 geli 암호화

(shell, )은 GUI가 아닌 CLI 환경에서 사용하는 터미널(terminal)같은 걸 말한다.


프리BSD(FreeBSD)에서는 전체 디스크 암호화(full disk encryption)를 겔리(geli, 젤리)로 한다. geli는 FreeBSDGEOM 위에서 작동하기 때문에 오픈BSD(OpenBSD)나 넽BSD(NetBSD)에서는 쓸 수 없다.


리넠스(Linux)에서는 렄스(LUKS, Linux Unified Key Setup)를 쓴다. 리넠스 커널(kernel)에서 지원하는 암호화가 dm-crypt이며, 그 front-endcryptsetup이고, cryptsetup에 쏠트(salt)를 넣는 등 개선한 것이 LUKS이다.


Use this shell to set up partitions for the new system. When finished, mount the system at /mnt and place an fstab file for the new system at /tmp/bsdinstall_etc/fstab. Then type 'exit'. You can also enter the partition editor at any time by entering 'bsdinstall partedit'.

위와 같은 메시지가 뜬다.


Manual 파티셔닝으로 들어가려면 bsdinstall partedit을 입력하면 되는데 다시 Shell 파티셔닝으로 돌아오지는 못 한다.


터미널에서 gpart show로 디스크와 파티션 목록을 확인한다. ada0은 SSDHDD이고, da0은 설치용 USB 드라이브이다.


gpart destroy -F ada0

위 명령어는 ada0 HDD에 있던 GPT 파티션 테이블을 지우는 명령어인데 특별히 문제가 없다면 지울 필요는 없다.


gpart create -s gpt ada0

위 명령어로 ada0 HDD에 GPT partition table을 만든다. 다른 운영 체제를 설치해서 이미 GPT partition table이 생성된 상태라면 이 명령어는 생략해도 된다.


지워야 할 파티션이 있으면 지운다. ada0의 9번 파티션은 gpart delete -i 9 ada0 과 같은 방식으로 삭제한다.


gpart add -t efi -s 800k ada0

800 kB 크기의 EFI 파티션은 ada0 디스크에 만든다. 트루OS의 경우 800k 대신 200m을 써서 200 MB 크기로 만든다.


dd if=/boot/boot1.efifat of=/dev/ada0p9

위 명령어로 EFI 파티션을 사용 가능하게 만든다. p9의 숫자는 EFI 파티션의 숫자를 적어주면 된다.


gpart add -t freebsd-ufs -s 1g -l boot0 ada0

1 GB 크기의 파티션을 만든다. 이름표(label)를 boot0 이라고 붙인다. 트루OSZFS만 지원하여 UFS를 사용하면 설치시 오류가 나니, freebsd-ufs 대신에 freebsd-zfs라고 적어준다.


gpart add -t freebsd-ufs -l root0 ada0

나머지 공간 전체를 파티션으로 만들고, root0 이라는 이름을 붙인다. /에 배정할 공간은 15 GB 이상이면 된다. TrueOS의 경우 freebsd-zfs라고 적어준다.


newfs -L bootfs0 /dev/gpt/boot0

고스트BSD의 경우 위 명령어를 입력하면 newfs: /dev/gpt/boot0: failed to open disk for writing이라는 오류 메시지가 뜬다. su 명령어로 root 계정으로 바꾼 후 하면 된다.


geli init -b -B /var/tmp/system0 -e AES-XTS -l 256 -s 4096 /dev/gpt/root0

위와 같이 하고, GELI에서 사용할 암호를 넣어준다. 컴퓨터를 부팅할 때마다 이 암호를 넣지 않으면 디스크 전체 암호화(full disk encryption)가 풀리지 않는다. 오타 방지를 위해 Reenter new passphrase:에 한 번 더 입력한다.


geli attach /dev/gpt/root0

Enter passphrase:가 뜨면 아까 넣은 비번(passphrase)을 넣어준다.


newfs -U -L rootfs0 /dev/gpt/root0.eli

고스트BSD의 경우 위 명령어를 입력하면 newfs: /dev/gpt/root0.eli: could not find special device라는 에러 메시지가 뜬다. 이건 root 권한으로 해도 마찬가지 오류가 뜬다.


mount /dev/gpt/root0.eli /mnt

GhostBSD에서 위 명령어를 입력하면 mount /dev/gpt/root0.eli: No such file or directory라는 오류 메시지가 뜬다. root 권한으로 해도 마찬가지다.


mkdir -p /mnt/bootfs

mount /dev/gpt/boot0 /mnt/bootfs

cd /mnt

mkdir bootfs/boot

ln -s bootfs/boot


exit을 입력하여 나온다. 그럼 설치를 계속 진행한다.


설치 종료 직전에

Manual Configuration

The installation is now finished. Before exiting the installer, would you like to open a shell in the new system to make any final manual modifications?

라는 메시지가 뜬다. Yes를 입력한다.


그리고 터미널에 아래 내용을 입력한다.

echo 'geom_eli_load="YES"' >> /boot/loader.conf

echo 'vfs.root.mountfrom="ufs:ada0p11.eli"' >> /boot/loader.conf

트루OS의 경우, 위 내용 중 ufs:ada0p11을 zfs:ada0p11로 바꿔준다. p11의 숫자는 해당하는 파티션 번호를 적어준다. 그런데 사실 TrueOS에서는 오류가 나서 이 과정이 되지 않았다.


그리고 fstab 파일의 내용을 수정한다.

vi /etc/fstab

vi 텍스트 에디터는 i를 눌러 수정 모드로 들어간다. 아래 내용을 입력한다.

  1. Device Mountpoint FStype Options Dump Pass#

/dev/gpt/root0.eli / ufs rw 1 1

/dev/gpt/boot0 /bootfs ufs rw 0 0

간격은 Tap 키로 맞추면 된다. 사실 간격은 중요하지 않고, 순서만 중요하다.

Esc 키를 누르고 :wq 를 입력하여 저장 후 vi를 종료한다.


reboot을 눌러 컴퓨터를 다시 시작한다.

메인보드의 설정에 들어가보면 리넠스 민트는 ubuntu로 뜨고, 윈도우즈는 Windows Boot Manager로 뜨는데, 프리BSD는 UEFI OS로 뜨는 것을 볼 수 있다.


  • HOWTO - Encrypted FreeBSD

November 12, 2017

http://daemon-notes.com/articles/system/encryption


  • Using a Solid State Drive with FreeBSD

2016-01-10

http://www.wonkity.com/~wblock/docs/html/ssd.html


위 링크의 글 두개는 gptboot를 사용하는데 gptboot는 BIOS-based computer에서 UFS를 위한 GPT bootcode이므로 UEFI에서는 필요없다.[3]


FreeBSD에서 EFI 파티션은 800 kB면 충분하다.[4] 다른 운영 체제에서의 EFI 파티션 크기는 아래 링크를 참조하기 바란다.


  • EFI partition size

2016-03-03

https://www.reddit.com/r/archlinux/comments/48qtmj/


gpart 명령어 사용법은 아래 링크 참조.

http://www.wonkity.com/~wblock/docs/html/disksetup.html


  • Gpart CheatSheet - wiping drives, partitioning, & formating

Mar 12, 2014

https://forums.freebsd.org/threads/gpart-cheatsheet-wiping-drives-partitioning-formating.45411/

네트워크 설정

Intel Wireless-AC 9462같은 최신 무선 랜(wireless LAN) 하드웨어는 비에스디(BSD)에 드라이버가 없어서 못 잡는다. 그냥 설치시에 랜 케이블을 연결해놓고, 유선으로 쓰자. 랜 케이블을 연결해놓은 상태라면 DHCP로 자동으로 인터넷 공유기로부터 IP 주소 등을 받아올 것이다. 못 받아오면 수동으로 설정해주면 된다.


root 및 사용자 추가

root 비번을 설정하라고 나온다. Enter password:라고 나오면 root 비번을 적당히 정해서 넣어준다.


사용자를 추가하라고 한다. Username과 password를 적당히 정해서 넣어준다. 보안을 위해 root와는 다른 비번을 사용한다. Enter password again:이라고 나오면 오타 방지를 위해 한 번 더 비번을 적어준다.


재부팅 후 설정

그래핔 환경 설정

vi는 쓰기 불편하니 우선 텍스트 편집기 nano를 설치한다. 터미널에서 아래 명령어를 입력한다.

pkg install nano


그리고 GUI 환경을 위한 display server인 X(Xorg)를 설치한다.

pkg install xorg


https://www.freebsdfoundation.org/freebsd/how-to-guides/installing-a-desktop-environment-on-freebsd/


그리고 데스크탚 환경(desktop environment)인 그놈3(Gnome3)를 설치한다.

pkg install gnome3


그리고 nano로 rc.conf 파일을 수정한다.

nano /etc/rc.conf


아래 내용을 추가해주면 된다.

dbus_enable="YES"

hald_enable="YES"

gdm_enable="YES"

gnome_enable="YES"


Ctrl + x를 눌러 저장 및 종료한다. 그리고 reboot을 눌러 재부팅한다.


위 내용 중 gdm을 실행함으로써, startx나 gnome-session을 입력하지 않아도 자동으로 GUI 로그인 화면이 뜨게 된다.

https://unix.stackexchange.com/questions/7226/launch-a-gnome-session-from-terminal

https://unix.stackexchange.com/questions/83651/gnome-not-starting-in-freebsd


https://www.freebsd.org/doc/handbook/x-config.html


pkg install firefox libreoffice gimp rhythmbox vlc

를 해서 소프트웨어를 설치한다. Firefox는 웹 브라우저, LibreOffice는 문서 작성 프로그램, GIMP는 이미지 제작 프로그램, Rhythmbox는 음악 재생 프로그램, vlc는 동영상 재생 프로그램이다.

화면이 지저분하면 clear를 입력하여 지울 수 있다.

reboot을 입력하여 재부팅한다.

uname -a로는 설치된 운영 체제에 대한 자세한 내용을 알 수 있다.

halt를 입력해도 재부팅된다. shutdown -r now를 입력해도 리부팅된다. shutdown -p now의 경우 컴퓨터를 종료시킨다.

https://www.freebsd.org/doc/handbook/boot-shutdown.html


그래핔이 뜨지 않을 경우

2017년에 나온 IntelCPU Coffee Lake 내장 그래핔 칲셑처럼 최근 하드웨어의 경우, 윈도우즈리넠스에서는 재빨리 지원하나, 개발자가 거의 없는 비에스디에서는 몇 년은 걸려야 지원한다. 그럴 경우에도 CLI로 쓸 수는 없으니 GUI를 쓰도록 다른 드라이버를 사용한다.


Coffee Lake의 경우 고스트BSD의 경우는 GUI가 뜨지 않아 설치조차 되지 않았다. TureOS는 다른 드라이버를 잡아줘서 화면은 좀 후졌어도 GUI 자체는 떴다. FreeBSD의 경우 그래핔 드라이버를 수동으로 다른 것으로 잡아줘야 한다. 그런데 그래도 TrueOS에서 잡아준 드라이버보다 느리고 오류도 많은 것 같다.


일단 아래 링크를 따라하면 Coffee Lake에서도 간신히 GUI가 작동은 한다.

https://wiki.freebsd.org/Graphics/SCFB


아래 링크를 보다시피 2016년도에 나온 Intel Kaby Lake까지 밖에 지원을 하지 않는다.

https://wiki.freebsd.org/Graphics/FAQ#Intel_Graphics

https://wiki.freebsd.org/Graphics#Intel_Graphics


  • Intel HD Graphics 630

Mar 16, 2017

Intel Kaby Lake 사용자가 드라이버 문제로 그래핔 속도가 매우 느리다고 얘기하고 있다.

https://forums.freebsd.org/threads/intel-hd-graphics-630.60159/


  • Installing a Graphics Drivers

Jul 4, 2017

https://forums.freebsd.org/threads/installing-a-graphics-drivers.61500/


  • FreeBSD and Intel Video Cards

10/05/2018

http://www.srobb.net/freebsdintel.html


  • i915 Coffee Lake · Issue #20 · FreeBSDDesktop/kms-drm · GitHub

2018/01/04 - 2018/05/27

Intel Coffee Lake 드라이버가 정식 버전은 아니지만, 테스트 버전은 있는 것 같다.

https://github.com/FreeBSDDesktop/kms-drm/issues/20

유선 랜 설정

처음에 설치할 때 랜 케이블을 꽂지 않아 유선 랜 설정을 해두지 않았다면 나중에 수동으로 해줘야 한다. ifconfig로 랜 카드 번호를 알아낸다. re0이라고 가정한다. lo0은 루프 백이라 의미가 없다. 랜 카드가 하나 더 있다면 re1이라고 뜰 것이다.

vi /etc/rc.config

위 명령어로 rc.config 파일을 편집한다. vi는 쓰기 불편하지만 유선 랜이 연결이 안 되어 nano 설치를 아직은 할 수 없으니 이번엔 그냥 써야 한다.

i를 눌러 편집 모드로 들어간다.

ifconfig_re0="DHCP"

위 내용을 입력한 후 Esc 키를 누르고 :wq를 입력하여 저장 후 vi를 종료한다.

그리고 shutdown -r now를 터미널에 입력하여 리부팅한다.

만약 그래도 유선 랜 케이블로 인터넷이 안 된다면 DHCP로 정보를 자동으로 못 받아오는 것이므로 수동으로 rc.config 파일에 내용을 적어준다.

ifconfig_re0="inet 192.168.1.216 netmask 255.255.0.0"

defaultrouter="192.168.1.1"

위와 같은 설정보다는 아래와 같은 설정이 더 일반적일 것이다.

ifconfig_re0="inet 192.168.0.132 netmask 255.255.255.0"

defaultrouter="192.168.0.1"

어쨌든 자기 인터넷 공유기에 맞는 설정을 하고 저장해준다. 그리고 재부팅한다.

제대로 되면 ifconfig 했을 때 inet에 IP 주소가 떠야 한다.

https://www.freebsd.org/doc/en_US.ISO8859-1/articles/linux-users/network.html


무선 랜 설정

ifconfig로 내 컴퓨터에 설치된 유선 랜 카드와 할당된 IP 주소, netmask 등을 확인할 수 있다.


ifconfig | grep -B3 -i wireless 나 sysctl net.wlan.devices로 무선 랜 카드 정보를 확인할 수 있다.

https://www.freebsd.org/doc/handbook/network-wireless.html


pciconf -lv 나 pciconf -l 로도 무선 랜 카드 정보를 확인할 수 있다.


  • Intel 8265 / 8275 driver

Oct 19, 2017

https://forums.freebsd.org/threads/intel-8265-8275-driver.62905/#js-post-363306


드라이버가 있는 경우, 아래 명령어를 쳐주고

kldload if_iwm

kldload iwm7260fw


아래 내용을 /boot/loader.conf 파일에 덧붙이는 것만으로 무선 랜 문제가 해결되는 경우도 있다.

if_iwm_load="YES"

iwm7260fw_load="YES"


  • Intel 7260

Feb 9, 2016

https://forums.freebsd.org/threads/intel-7260.55061/


  • FreeBSD and Intel Dual Band Wireless-AC 8260?

Mar 08 2017

https://www.reddit.com/r/freebsd/comments/5y6yhq/freebsd_and_intel_dual_band_wirelessac_8260/


하지만 안타깝게도 8265 시리즈까지만 드라이버가 있는 것 같다.

https://www.freebsd.org/cgi/man.cgi?query=iwm&sektion=4&manpath=freebsd-release-ports


Intel Wireless-AC 9462같은 최신 무선 랜(wireless LAN) 하드웨어는 비에스디(BSD)에 드라이버가 없다. 윈도우즈 XP의 드라이버를 FreeBSD용으로 바꿔주는 NDISGEN이라는 스크맆트가 있다.

https://www.freebsd.org/doc/handbook/config-network-setup.html


  • Install Linux driver

Mar 22, 2015

https://forums.freebsd.org/threads/install-linux-driver.50963/


그래서 직접 해봤다.

https://downloadcenter.intel.com/product/125192/Intel-Wireless-AC-9462

위 링크에 들어가니 Wireless와 Bluetooth 드라이버가 같이 있었다. Intel Wireless-AC 9462는 블루투스 기능을 포함한 것 같다.


https://downloadcenter.intel.com/download/28147

위 링크에 가니, Windows 7, 8.1, 10에 대해 각각 32-bit와 64-bit 드라이버가 있었다. Windows XP에 그나마 가까운 Windows 7을 선택하고, 현재 설치된 FreeBSD의 bit 수인 64-bit를 고른다. WiFi_20.80.0_Driver32_Win7.zip를 다운로드 받는다.

압축을 풀어보면 10개의 파일이 보이는데 sys와 inf 파일만 필요하다.

ndisgen /root/Downloads/WiFi_20.80.0_Driver64_Win7/Netwsw02.INF /root/Downloads/WiFi_20.80.0_Driver64_Win7/NETwsw02.sys

위와 같이 입력하여 ndisgen을 실행시킨다.


우선 첫번째 오류 메시지가 뜬다.

Windows(r) driver converter

INF file validation

This .INF file appears to be Unicode.

Trying to convert to ASCII...

Done.

Press reture to continue...


그리고 두 번째 메시지가 뜬다.

Windows(r) driver converter

Driver file validation

This .SYS file appears to be in Windows(r) PE format.

Press return to continue...


그 다음 뜨는 창이다.

Windows(r) driver converter

Driver file validation

The script will now try to convert the .INF and .SYS files using the ndiscvt(1) utility. This utility can handle most .INF files; however, occasionally it can fail to parse some files due to subtle syntax issues: the .INF syntax is very complex, and the Windows(r) parser will sometimes allow files with small syntax errors to be processed correctly which ndiscvt(1) will not. If the conversion fails, you may have to edit the .INF file by hand to remove the offending lines.

Press enter to try converting the files now:


그 다음 뜨는 에러 창이다.

ndiscvt: line 9626:

syntax error.

CONVERSION FAILED


역시 너무 예전 스크맆트라 제대로 작동하지 않는 것 같다.


그래도 Netwsw02.INF와 NETwsw02.sys 외에도 Netwsw04.INF와 NETwsw04.sys 파일도 있어서 얘네도 테스트해봤다.

ndisgen /root/Downloads/WiFi_20.80.0_Driver64_Win7/Netwsw04.INF /root/Downloads/WiFi_20.80.0_Driver64_Win7/NETwsw04.sys

터미널에서 위와 같이 실행했으나 역시 마찬가지 에러 메시지를 뿜으며 실패했다.


한글 설정

Gnome 3를 설치했다면 우선 Settings의 Region & Language로 들어간다.

Language를 English (United States)에서 Korean으로 바꾼다.

Input Sources에 Korean이나 Korean (101/104 key compatible)을 추가한다. Input Sources에서 Korean을 English (US)보다 위로 올린다.

내장된 웹 브라우저한글이 깨져서 나왔고, 파이어폭스는 한글이 제대로 나왔다.

한글 입력기 설치는 트루OS 문서를 참조하기 바란다.

사용 방법

(Tor), 크로미엄(Chromium), 베라크맆트(VeraCrypt) 설치 및 사용 방법은 트루OS(TrueOS) 문서 참조.


파이어폭스 설치

웬 후지게 생긴 웹 브라우저가 기본으로 내장되어 있다. 파이어폭스크로미엄을 깔아서 쓰자.


터미널에서 root 권한으로 pkg install firefox를 입력하면 된다.

su 및 sudo 설정

su를 쓰려면 내 사용자 계정이 wheel 그룹에 속해있어야 하고, sudo를 쓰려면 sudo 설치 후 wheel 그룹과 내 사용자 계정을 추가해야 한다.


  • Cannot su or use sudo

Apr 14, 2015

https://forums.freebsd.org/threads/cannot-su-or-use-sudo.51267/


트루OS같은 경우는 sudo 설치와 이 설정이 미리 되어있다. 프리BSD는 자기가 직접 해야 한다. 그래서 그냥 귀찮아서 root 계정을 쓴다.


외장 HDD

일단 USB 메모리를 꽂으니까 자동으로 연결해준다.


윈도우즈에서 쓰던 외장 HDD를 꽂으니까 인식은 하는데 연결을 못 한다. 리넠스 민트에서는 인식도 못 하던 거라 조금 더 나은 것 같다. 하지만 트루OS에서는 연결까지 자동으로 해줬다.


프리BSD의 경우 아래와 같은 에러 메시지가 뜬다.

Cannot mount volume.

Unable to mount the volume 'Volume Name'.

Details

mount: illegal option -- m usage: mount [-t fstype] [-o options] target_fs mount_point


수동으로 마운트 해주면 마운트가 가능할 것 같다.


  • USB Storage Devices

https://www.freebsd.org/doc/handbook/usb-disks.html

특징

일반에 잘 알려지지 않은 BSD 계열이라 마이너하게 보이지만, 의외로 꽤 인기있는 OS이다. Distrowatch의 Page hit ranking에서도 리눅스 배포판들의 홍수속에 10위권을 오락가락하고 젠투보다 높다.(...)[* [[1]]] 게다가, 소수지만 매우 활동적인 커뮤니티를 갖고있는지라, 질문에 대한 답변도 웬만한 인기 리눅스 배포판보다 훨씬 빠르게 답변이 달린다.

FreeBSD는 기본 로 bash보다 고전~~원시~~적인 csh나 tcsh를 사용한다. 그렇다고 bash를 못 쓰는 건 아니고 설치하면 된다. 이 csh도 빌 조이가 만들었다.[* 그러나, csh는 프로그래밍 습관에 부정적인 영향을 끼칠 수 있다는 주장이 제기되어 대차게 까이는 중이다.]

FreeBSD가 따르는 BSD 라이선스리눅스GPL 라이선스보다 "Free"라는 단어를 포괄적으로 해석하여 자유 소프트웨어라면 사용하는 것 자체가 제약 없이 자유여야 한다는 모토이기 때문에, 소스를 가져다가 마음대로 바꿔 소스 공개를 하지 않은 채 상업적으로 이용해도 아무런 제약이 없다. 원 저작자 이름만 표기해 주면 그걸로 땡이다. ~~덕분에 기업 사용자들이 좋아한다.~~

FreeBSD가 리눅스와 다른 또 하나의 차이점은 완전한 OS라는 점이다. 리눅스의 경우, 보통 리눅스는 커널만을 의미하고, 이 커널을 가져다가 다른 소프트웨어 및 패키지 매니저를 이용하여 OS를 완성시키는 것은 각 배포판들이 하는 일이다. 반면, FreeBSD는 커널도 개발하면서 동시에 소프트웨어 포팅 및 패키지 매니저 제공, 문서화까지 모두 FreeBSD Project에서 진행한다. 이는 OpenBSD, NetBSD 등도 마찬가지이다. 덕분에 같은 커널에 같은 패키지를 가져다가 디폴트 세팅과 패키지 매니징 정도로 차별화를 시키는 리눅스 배포판들과 달리, BSD 진영은 4.4BSD에 기반했다는 것 정도만 같고, 서로 완전히 다른 OS라 봐도 될 정도로 커널 레벨에서부터 차이가 심하게 벌어진다.

NetBSD 프로젝트의 목적은 최신 하드웨어 지원과 퍼포먼스에 중점을 둔 FreeBSD와 달리 호환성에 주안점을 두어 개발한다. NetBSD는 공식적으로 지원되는 플랫폼만 57개이다. 리눅스 진영에는 젊은 개발자들이 많이 유입되고 그만큼 여러가지 트릭이나 빠르게 신기술을 적용하며 그때그때의 패치 위주로 개발되는 경향이 있고, FreeBSD도 그보다는 덜하지만 그런 경향이 있다면, NetBSD는 보다 느린 대신 상당히 엄밀한 접근법을 취하는 편이다. 또한, 커뮤니티가 작아서 그런지 몰라도 친목질(...)이 좀 있는 편. 다만, 생각하는 것처럼 폐쇄적인 친목질은 아니고, 그냥 분위기가 더 부드러운 편.

OpenBSD는 NetBSD 창립멤버 중 한명인 Theo de Raadt이 어느날 갑자기 특별한 이유없이 내쳐지게 되고(아마도 꾸준한 분탕질로 인한 결과인듯) 나와서 새로 만든 BSD인데, 보안을 최우선으로 생각하여 개발한다. 오로지 버그수정만을 전담으로 하는 개발팀이 따로 있으며, 여기에 소속된 사람들은 수십만 줄의 소스코드를 한줄 한줄 엄밀히 검사하는 흠많무한 짓을 아주 당연하게 생각하는데다 많은 경우 같은 코드를 가지고 그 짓을 몇 번씩 반복한다고 한다(!). OpenBSD 사이트에 가보면 아주 오랜 기간 동안 remote hole이 발견된 적이 두 번밖에 없다고 자랑한다. 게다가, 크래커들의 공격에 대비한 여러 가지 패치를 해놓았으며, 암호화 소프트웨어도 OS 자체에 여기저기 통합시키는 등 덕후 수준의 보안 시스템을 구축한 OS이다.(미국 기반 OS들의 경우, 법에 의해 암호화 알고리즘을 국외로 빼는 것이 불법이기에 불가능하지만, OpenBSD는 캐나다 기반이므로 상관이 없다.)

DragonFly BSD는 FreeBSD 5에서 도입한 M:N 스레딩 방식에 불만을 품은 매슈 딜런(Matthew Dillon)이 꾸준히 이의를 제기~~키배~~하다가 제재를 받고 나와서 그것을 도입하기 이전버전인 FreeBSD 4에다가 LWKT 와 Hammer 파일시스템을 탑재하여 개발 중인 BSD이다. ~~그리고 FreeBSD는 7.0이 되면서 M:N 스레딩 모델은 이론상으로만 좋았다는 것을 깨닫고 1:1로 바꾼다.~~

뭔가 분쟁으로 인해 탄생한 프로젝트들이 많지만, 그것과 별개로 각 BSD 프로젝트간의 코드공유는 활발하게 이루어진다. 물론, 코드공유가 활발하다 할지라도 각 프로젝트마다 추구하는 철학이 크게 다르기 때문에 결과물도 크게 다르다.

그 외에도 FreeBSD는 위에서 말했다시피 리눅스에 밀려 버린 상황이기 때문에 소프트웨어 지원이 좀 열악한 측면이 있는데[* 그래도 Ports 개수가 2만 개가 넘는다.], 이것을 극복하기 위하여 리눅스 에뮬레이션을 도입하였다. NVIDIA 드라이버, 플래시 등에 리눅스 에뮬레이션이 사용된다. 기본적으로 둘 다 Unix-like OS이기 때문에 에뮬레이션 자체가 그다지 부담이 되지도 않고, 속도 면에서도 앞서거니 뒤서거니 하면서 그냥 같다고 할 수 있다. 그리고 소스컴파일 방식을 사용하기 때문에 소프트웨어들의 업데이트 속도도 매우 빠르다. 리눅스 쪽에서 아치 리눅스 정도만 제외하면 FreeBSD보다 업데이트가 빠른 배포판은 찾아보기 힘들다.[* 다만, 좀 불균형하게 빠르다. 인기 Ports의 경우 빠르게 업데이트되는 반면, 잘 안쓰이거나 포팅이 쉽지 않은 거대 데스크탑과 같은 Ports의 업데이트속도는 상당히 느린 편이다.]

사실 소프트웨어 지원이 열악한 것은 조금 다른 측면에서 열악하다 볼 수 있는데, FreeBSD도 자체적으로 여러가지 시스템 API라든가 사운드 시스템 등을 갖고 있으며, 질적으로도 나쁘지 않은 경우가 많다. 단순히 돌아가는 소프트웨어의 종류로만 보면 사실 부족하다고 하긴 힘든 편인데, 오픈소스 진영 소프트웨어 개발자들은 아무래도 오픈소스 OS 하면 리눅스가 전부인 경우가 많아 그런 것을 제대로 이용하게끔 만드는 경우는 드물고, 덕분에 FreeBSD는 자신들의 OS에 걸맞는 좋은 것들을 갖고는 있어도 그걸 활용하는 소프트웨어를 찾기가 힘들다. ~~마이너의 비애라고나 할까~~

더불어 리눅스 진영과의 마찰도 좀 있는 편인데, BSD 측이 니 맘대로 하세요 식의 완전한 자유를 추구하는 반면 GNU 측은 소스코드 공개 의무화 등의 공격적인 오픈소스 방식을 취하고 있기 때문에, GNU 소프트웨어를 가져다 쓰면서도 자신들에게 협조를 안 하는 BSD 진영이 밉보일 수밖에 없다. 그러나, BSD 진영에서는 이것을 리눅시즘(Linuxism)이라며 가볍게 무시한다.

구형 GCC 문제

오픈소스 계의 표준 컴파일러라 볼 수 있는 GCC가 4.2.2 버전부터 BSD 라이선스와 호환되지 않는 GPLv3가 적용되었기 때문에, 기본 GCC 컴파일러가 상당히 오랜기간 4.2.1 버전이었다. (당시 대부분의 리눅스 배포판은 GCC 4.5+ 버전으로 컴파일된 바이너리를 제공하였다.) 물론 이것은 베이스 시스템 한정이고, 유저들이 자유롭게 GCC 최신 버전을 인스톨해서 사용하는 것은 가능했다.

이러한 컴파일러 문제가 타격이 상당히 컸기 때문에, FreeBSD뿐 아니라 다수의 *BSD 커뮤니티는 다른 컴파일러를 찾고 있고, FreeBSD 쪽에서는 애플이 지원하는 오픈소스 프로젝트인 LLVM/Clang으로 결정되어 광속 교체되었다. 그리하여 FreeBSD 10부터는 Clang이 디폴트 컴파일러이다. ~~스톨먼이 이 글을 싫어합니다.~~ 다만, 다른 BSD 프로젝트에서는 계속 GCC를 사용한다.

애초에 BSD 커뮤니티에서는 GCC 컴파일러가 수십년간의 최적화로 런타임 속도에서는 강하지만, 기본적인 설계가 그리 깔끔하지 못하다는 점과 컴파일 속도가 매우 느리다는 점[* 일반적으로 이미 컴파일된 바이너리를 사용하는 리눅스 쪽에서는 별로 문제될 것이 없지만, *BSD처럼 프로그램을 설치할 때나 업데이트할 때마다 소스코드만 다운받아 사용자가 직접 컴파일하는 경우는 컴파일 속도도 매우 중요하다고 볼 수 있다.][* 2013년 이후 GCC의 코드 베이스는 C++로 교체되어 내부 설계 문제는 없어졌다.]을 문제삼아 비판하는 경우가 많았기 때문에, 사실 굳이 라이선스 문제가 없었어도 언젠가는 다른 컴파일러를 사용하려 했을 거라는 소리도 있긴 하다.

ZFS

FreeBSD가 제공하는 것들은 여러 가지가 있겠지만, 개중에 눈여겨볼 만한 것은 ZFS[* ZFS는 썬 마이크로시스템즈가 개발했으며, OpenSolaris와 FreeBSD로 공식적으로 포팅이 되어 있...었는데, 오라클이 썬 마이크로시스템즈를 인수하면서 라이선스 정책을 바꿔 OpenSolaris가 사실상 죽어 버린 관계로(OpenIndiana 라는 포크가 새로 생기긴 했다.), FreeBSD는 현재 오픈소스계의 ZFS의 마지막 희망이라 할 수 있다.] 파일 시스템이다. ZFS는 현재 파일 시스템 중의 끝판왕이라고 봐도 될정도로 여러가지 기능을 간단한 커맨드라인 명령으로 다 지원하며, 데이터 안전성에 있어서도 모든 데이터를 Check-summing 하는 방식으로 기존 파일 시스템이 속수무책이던 Silent corruption을 방지해주기도 한다. NFS와 CIFS, iSCSI를 파일시스템 자체에서 지원하며[* FreeBSD에서는 NFS만 지원되고, CIFS, iSCSI 등은 파일시스템이 아닌 FreeBSD에서 수동으로 설정해야 한다.], 많은 메모리와 SSD를 캐시로 달아 주면 하드웨어 레이드 카드에 버금가는 속도를 보여주기도 한다.[* ZFS의 등장을 하드웨어 레이드 카드의 죽음으로 비유한 사람도 있었다.]

다만, 단점은 애초에 엔터프라이즈급 용도로 개발된 파일 시스템이라 메모리를 많이 먹으며, 저 정도의 기능을 위해서 속도를 좀 희생한 관계로, 서버에 비해 사양이 낮고 높은 수준의 데이터 안전성 및 여타 기능 따위가 별 필요없는 데스크탑 사용자는 ZFS의 진가를 알아보기도 힘들다. 이 경우, 그냥 리소스는 많이 먹으면서 속도는 느린 애물단지 파일 시스템으로 여길 수도 있다.[* 이에 대해 ZFS 측에서는 데이터 안정성을 포기하면 속도는 이론상 무한히 빨라질 수 있다며 받아친다.(광속으로 카피가 끝났는데 알고보니 에러가 나서 하나도 카피가 안되어있다면 그럴수도 있겠다.) ]

리눅스 쪽에서는 라이선스 문제로 공식적으로 커널에 포함되지 못하고, 비공식적으로만 포팅되어 있다. FreeBSD에서는 리눅스와는 다르게 ZFS로 부팅도 되기 때문에 사실상, 모든 파일 시스템을 ZFS로 사용이 가능하다. 리눅스쪽에서는 ZFS의 대항마로 현재 개발중인 Btrfs를 밀고 있는데, 지금 꽤나 오랜기간 동안 베타 딱지를 달고 있어 모든 기능이 완성되는 버전까지는 시간이 꽤 걸릴듯 하며, 완성된다 해도 실사용시 안정성을 입증받기까지는 몇년이 더 소요될 것이다. 게다가, 완성된 이후를 가정했을 때의 기능면에서도 ZFS와 엇비슷한 정도이다.[* 그러나, 마이너에 속하는 솔라리스나 FreeBSD에서만 제대로 지원되는 ZFS에 비해 Btrfs는 리눅스 커널의 공식적인, 그리고 전폭적인 지원 버프를 받는다는 차이가 있다.] Btrfs 역시 오라클의 후원으로 개발되는 파일시스템이다.

원시적 OS

좋게 말하면 어떤 면에서는 웬만한 리눅스 배포판들보다 로우레벨 세팅을 모두 관리자의 손에 맡기는 투명한 운영체제이고, 나쁘게 말하면 편의성이나 자동완성이란 게 뭔지 모르는 원시적(?)인 운영체제인데, 아예 인스톨 시 현재 인스톨하는 것들의 모든 소스 코드를 같이 까는 게 가능하며 그 상태로 그 소스코드를 이리저리 변경해서[* 능력이 된다면 알고리즘을 바꾸거나 하는 식으로 거창하게 할 수도 있지만, 그냥 값만 변경하는 정도의 변경은 굳이 거창한 유닉스 운영체제 구조의 이해 따위 없어도 할 수 있는 간단한 것들이다.] 다시 OS 자체를 원하는 옵션 주면서 컴파일해서 사용하는 것도 가능하다. 당연히 커스텀 커널도 지원하는데, ~~지원 하드웨어가 적어서~~ 리눅스보다 훨씬 간단하고 빠르게 끝난다.

젠투에서 커널을 최적화시키려면 보통 이리저리 시행착오를 감안하여 며칠은 잡아야 하는데, FreeBSD는 빠르면 몇 시간이면 끝이다. 방식도 젠투처럼 메뉴 제공도 안해주고 그냥 텍스트 파일 열어서 에디트하고 컴파일하는 게 끝이다. 참고로, 전체를 다시 컴파일하려면 우선 새로운 컴파일러를 컴파일하고, 그 새로운 컴파일러로 커널을 컴파일하고, 컴파일한 커널을 인스톨한 후, 재부팅 후 새로운 컴파일러를 인스톨하는 순서로 부트스트래핑 하는 것이 일반적이다. 새로운 FreeBSD 버전이 나와 업그레이드할 때도 마찬가지로, 새로운 버전의 소스를 다운받아 위와 같은 방식으로 인스톨한다.

거의 모든 게 사람 손을 거쳐야 하며, 그렇기에 초보자들에게 어려울 것 같지만, 문서화가 오픈소스 OS 중에 가장 잘 되어 있는 OS 중 하나이기 때문에 실제로 그렇게 어렵지는 않다. 젠투의 경우 초보자들이 잘 나가다가 USE flags의 벽에 가로막혀 좌절을 느끼는 경우가 많은 데 반해, FreeBSD의 Ports에는 그런 것 자체가 존재하지 않고 그냥 인스톨하다 보면 옵션 선택 창이 뜨며, 원하는 대로 선택하면 되기 때문에 처음 설치 시에 그런 데 골머리를 썩힐 일은 없다. 그리고, 옵션 선택 창에 이미 표준적으로 사용하는 디폴트 선택이 되어 있는 상태기 때문에 모르면 그냥 Next만 연타하는 윈도우처럼 인스톨해도 된다.

모듈형 디자인

소프트웨어는 Ports라는 시스템을 이용하는데, ~~port라고 쓰고 귀차니즘 종결자라 읽는다~~ 젠투처럼 그냥 소스코드 다운받아 컴파일하는 방식이다. 특징이라면, 처음 인스톨하는 Base system과 새로 인스톨하는 Ports를 엄격하게 구분한다는 것이다. 덕분에 소프트웨어 인스톨/삭제로 개판을 만들어도 베이스 시스템에는 영향이 가지 않는다. 다만, 소프트웨어 인스톨 시 웬만한 리눅스 배포판들은 다 즉시 사용이 가능하게끔 자동으로 세팅을 끝내 주는 반면, FreeBSD는 전혀 안 건드린다. 완전히 수동이다. ~~이제 원시적이란 말을 이해하겠는가?~~ 그리고, 깔 때는 의존성을 찾아서 다 깔아 주지만, 지울 때는 수동이다.(...) 각각의 의존성을 모두 수동으로 찾아서 언인스톨하든가, 그냥 냅두든가 해야 한다. ~~들어올 땐 마음대로였어도 나갈 땐 아니란다~~ 10.0부터는 pkgng라는 바이너리 패키지 관리툴이 새로 들어가서, 굳이 컴파일 설치를 하지 않아도 되고, 기존에 불가능했거나 아주 어려웠던 여러가지 관리 기능이 추가될 것으로 생각된다.

컴파일 설치시 -DBATCH 옵션을 주면[* 정확히는 # make -DBATCH install 이다.] 아예 묻지도 않고 디폴트 세팅으로 죄다 인스톨해준다. 참고로, 그냥 인스톨하면 오랜시간 컴파일하다가 중간중간에 간간히 옵션 창이 떠서 멈추기때문에 매우 귀찮아진다. 그렇기 때문에, 아예 -DBATCH 옵션으로 인스톨하거나, config-recursive[* # make config-recursive] 옵션으로 미리 모든 의존 패키지의 옵션을 설정한 뒤에 컴파일해주는 게 훨씬 편리하다. 설정한 컴파일 옵션을 지우는 옵션은 rmconfig[* # make rmconfig]이고, 의존성 패키지의 모든 컴파일 옵션을 지우는 건 rmconfig-recursive[* # make rmconfig-recursive]이다. 다만, 아무 것도 고려하지 않고 의존 패키지이기만 하면 컴파일 옵션을 다 지워 버리므로, 주의해서 사용해야 한다.

컴파일 설치시 패키지 삭제는 수동이라 했는데, pkg_cutleaves라는 유용한 툴이 있다. 이것은 다른 패키지가 의존하지 않는 모든 패키지를(트리 구조에서 부르는 leaves) 하나씩 찾아서 지울지 말지 물어보는 툴인데, 어차피 지워야 하는 의존을 모두 기억하고 있어야 한다는 측면에서는 사실상 별 도움이 안되긴 한다.(...) 결국, 가장 깔끔하고 좋은 방법은 ZFS의 스냅샷 기능을 이용하여 패키지를 인스톨할 때마다 스냅샷을 찍어 놓고, 지워야 할 상황이 오면 가볍게 복원시키는 게 최상이다. 위에 말했듯이, 베이스시스템과 유저랜드를 칼같이 구분하기 때문에, 몇몇 Ports만 제외하면 프로그램이 실제 인스톨되는 /usr/local과 Ports 인스톨 정보가 기록되는 /var/db만 스냅샷 걸어주면 된다.

참고로 이 Ports 시스템은 Mac OS X에서도 사용할 수 있다. 애플의 오픈 소스 프로젝트의 하나로 [[2]]라는 물건이 있으며, OS X에서 기본으로 제공하지 않는 다양한 오픈소스 프로그램들을 손쉽게 받아서 설치할 수 있다. 유사품으로 fink와 [[3]]가 있다.[* 단 이들은 Ports 시스템은 아니다.] fink는 바이너리만 받아 설치하는 방식. Homebrew는 Ports랑 다르게 ~~설치가 간편하고~~ 기존에 있는 패키지를 최대한 재활용한다. MacPorts는 간혹 이미 설치된 프로그램을 다른 버전으로 또 받아서, 디스크 용량을 더 잡아먹고 무엇보다 설치해야 하는 패키지가 많다. 예를 들면 간단한 파이썬 스크립트로 구성된 패키지를 설치하려는데 python27 패키지를 받아서 먼저 의존성을 해결하는 식. 이렇게 쓰면 뭔가 MacPorts가 막장 같겠지만, 대신 시스템 패키지와 분리되어 있기 때문에 Homebrew보다 꼬일 염려는 더 적고, 지원하는 패키지가 몇 배 이상 많은 장점이 있다.

위와 같은 엄격한 모듈형 디자인은 부트 매니저에도 적용되는데, FreeBSD의 부트 매니저인 Booteasy는 MBR 512Byte를 엄격하게 지키는 몇 안 되는 부트 매니저이다. 물론, 512Byte로는 죽도 밥도 안 되기 때문에 스테이지를 나눠서 차근차근 부팅 과정을 진행시킨다. 이런 덕분에, 기능 면에서는 grub 등에 비해 떨어질지 몰라도, 안정성 측면에서 FreeBSD 파티션이 개판 돼도 Booteasy를 이용한 다른 파티션으로의 부팅은 문제없이 가능한 장점이 있다.

다른 사용처

macOS

애플과의 관계도 눈여겨볼 만한데, FreeBSD는 위에서 말했듯이 완전히 자유로운 라이선스로 배포되는지라, 애플(정확히는 NeXT사)도 소스코드를 가져다가 OS X을 만드는 데 사용하였다. 애플은 소스코드를 가져다 사용하기만 한 것이 아니라, 도로 돌아와 FreeBSD 개발팀에 Mac OS X 소스를 완전히(그러니까 오픈소스 부분만 완전히...) 공개하며 신기술을 알려주기까지 하여 친구를 먹었다.[* 그런데, FreeBSD 원년멤버이자 Ports 시스템 창시자인 코어개발자 한 명을 빼갔다. MacPorts도 이 사람이 애플로 가서 만든 작품이다. ] 이 이후부터 FreeBSD 커뮤니티는 애플 쪽과 밀월관계를 구축하였고, 애플도 이를 기점으로 CUPS라든가 KHTML을 포크한 WebKit 프로젝트 등 다양한 오픈소스 프로젝트를 BSD 라이선스로 공개 진행하며 오픈소스 커뮤니티와 진한 관계를 맺어갔다. 그리고, FreeBSD의 버전업 속도도 애플과의 밀월관계 이후로 상당히 가속을 받게 되었다. ~~그러나 안정성 역시 애플 따라 망해가는 느낌이...~~[* 이번 10.1-RELEASE 버전만 해도 프비의 공식 시스템 업데이트 도구인 freebsd-update의 오류로 인해 업데이트 도중에 /(루트 디렉토리)를 날려버리려 시도하는, 그야말로 초대형 사고를 일으킬 뻔했다. 다행히 rm 명령 자체가 아무 옵션이 없으면 디렉토리 삭제를 거부하기에 망정이지, 만약 지웠다면 그야말로 하트블리드를 뛰어넘는 참사를 일으킬 뻔한 것이다. ~~괜찮아, 쓰는 곳 별로 없으니까. 아 눈에서 땀이...~~ 윈도우로 치면 시스템 업데이트를 돌렸더니 C: 드라이브가 포맷될 뻔한 것과 같다.]


플레이스테이션 시리즈

플레이스테이션 3PS Vita도 FreeBSD를 사용하였고, 플레이스테이션 4의 Orbis OS 역시 FreeBSD의 커스터마이징 버전이다.

TmaxOS

width=450

티맥스에서 개발한 국산 OS. 리눅스 커널 기반일 줄 알았는데, FreeBSD 기반이었다.(...) 소스 코드를 가져와도 FreeBSD의 방침상 아무 문제가 없기 때문. ~~안정성이 뛰어난 FreeBSD의 장점을 다 말아먹는 것도 참 대단한 능력이긴 하다.~~ ~~FreeBSD의 흑역사~~

Junos OS

컴퓨터 네트워크 관련 기기 제조회사인 주니퍼 네트웍스에서 만들어진 자사의 라우터, 스위치 전용 네트워크 운영체제로서 시스코에서 만든 라우터와 스위치에 들어가는 운영체제인 시스코 IOS랑은 다르게 FreeBSD를 기반으로 커스터마이징되어 있다.

닌텐도 스위치

FreeBSD 기반의 운영체제를 사용한다는 것이 레딧의 유저에 의해 [[4]].

  1. MS, 핫메일 W2K로 이전 「유닉스 따라잡기」, 2000.08.03., http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000010006965
  2. Microsoft Hotmail still runs on U**x, (FreeBSD purge incomplete), 12 Dec 2001, https://www.theregister.co.uk/2001/12/12/microsoft_hotmail_still_runs/
  3. https://www.freebsd.org/cgi/man.cgi?gptboot
  4. https://wiki.freebsd.org/UEFI