OpenBSD
조무위키
주의. 이 문서는 공머생들이 좋아하는 주제 혹은 공머생 그 자체에 대해 다룹니다. 본 문서가 다루는 내용에 지나치게 탐닉할 경우 필연적으로 여성들과 멀어지게 됩니다. 이는 조무위키가 책임지지 않습니다. |
파일:힙스터ㅂ.JPG | 주의! 이 문서는 힙스터 혹은 힙스터가 좋아하는 것을 다룹니다. 즉, 비주류라는 것입니다. 남들과는 다르다! 남들과는! |
[[파일:|300px|alt=]] | |
개발자 | Theo de Raadt 외 여러명 |
---|---|
OS 계열 | BSD |
사용 가능한 언어 | 영어(미국 영어, 영국 영어) 등 |
패키지 관리자 | pkg |
플랫폼 | x86-64, Alpha, ARMv7/v8, RISC, PowerPC, SPARC64 등 |
커널 | BSD, 모놀로딕 커널 |
기본 UI | FVWM (기본값) |
라이선스 | BSD 라이선스, ISC |
공식 웹사이트 | https://www.openbsd.org/ |
내용[편집]
1995년에 NetBSD로부터 포크된 BSD이다. BSD계열은 systemd나 S6이런것이 아닌 BSD init로 굴러간다. 굳이 비슷한걸로 치면 openrc정도. 오픈 브스드는 rcctl을 통해서 서비스들을 관리할 수 있다.
기본적으로 X11로 굴러가는 FVWM이 제공되며 이는 설치시에 Xenodm을 활성화하거나 tty부팅이후 startx, 또는 설치 이후 tty상에서 rcctl enable xenodm을 하면 사용이 가능해진다.
유닉스 철학을 고수하고 있으며 오픈소스로 제공된다. 코드가 상당히 깔끔하다던데 난 개발자 아니라서 모르겠음.
macOS의 방화벽 코드도 OpenBSD의 PF 방화벽 코드에 기반을 뒀으며, 안드로이드의 바이오닉 C 스탠다드 라이브러리도 OpenBSD의 코드에 기반을 뒀다. 또한 Windows 10은 OpenSSH를 리브레SSL과 함께 사용한다.
- 연관된 프로젝트로는 OpenSSH, OpenBGPD, rpki-client, OpenNTPD, OpenSMTPD, OpenIKED, mandoc, LibreSSl이 있다.
- 의외로 OpenPGP는 OpenBSD관련이 아님. 이건 PGP.inc이다.
보안에 상당히 신경을 쓴 BSD지만, FBI 백도어가 거의 10년간 연루되었다는 의혹이 있어서 이미지에 타격을 입었다.
현재 최신버전은 6.9.
여담[편집]
마스코트는 Puffy라는 이름의 댕청하게 생긴 복어인데 커엽다. 리눅스 tux, openbsd Puffy, Plan9 토끼가 삼대장이라 생각함. 아님말고. 근데 옛날에는 FreeBSD의 악마 닮은 놈이였다.
Qemu는 되지만 당연히 KVM은 미지원한다. 이는 KVM이 리눅스 커널단에서 굴러가는 놈이기에 BSD인 이놈은 안되는게 당연한것. Qemu를 받게 되면 기본적으로 tcg만 있는데 --aceel tcg해줘도 별 체감 없더라. 가상화는 포기하자. 템플OS도 괴상하게 굴러감 ㅠㅠ. 미안해요 테리좌 이 OS의 신앙은 글렀어.
공홈에 정리를 잘 해뒀다. man 페이지는 읽어보기 좋으며 문서들은 초보자들도 알기 쉽게 잘 적어뒀다.
가끔 공홈 미러 터진다. 미러 변경을 미리 해두자. 공홈보다 가까운 곳으로 해두면 속도도 빠르긴 한데 가끔 없는 패키지가 있어서 1티어 미러중에서 공홈빼고 다른곳으로 바꿔두자.
공홈가면 OpenBSD Songs해서 노래가 있는데 좋다. 6.1버전 노래가 난 맘에 들었음.
OpenBSD는 6개월 마다 버전 패치를 한다. 패치가 제공되면 sysupgrade로 업그레이드를 할 수 있다.
패키지 관리자[편집]
# pkg_add <패키지명>
참고로 다운 받는 속도는
curl -N http:// < curl http:// < ftp http:// < curl https:// < curl -N https:// < ftp https:// /// 클수록 시간이 오래 걸림.
자세한 내용은 [gemini://perso.pw/blog/articles/openbsd-pkg_add_performance_analysis.gmi/ 여기]로 가면 됨. 참고로 제미니 사이트라 일반 브라우저로는 안들어가짐.
- curl -N이랑 curl에서 http:// 미러 다운은 속도 차이가 거의 없음.
- ftp http:// 미러 다운이랑 curl https:// 다운이랑 속도 차이가 좀 나는데, 이건 https라 tls 때문에 좀 더 느린걸로 보임.
- 위의 http:// 에서의 curl -N이랑 curl이랑 마찬가지로 https:// 에서의 curl -N과 curl 속도도 차이가 거의 없음.
- ftp https:// 는 속도가 넘사벽으로 느림.
http가 더 빠르긴 한데.. tls 암호화가 안되서 프라이버시에 손해를 좀 봄. MITM 당할 수도 있고. 그래도 확인용 시그니쳐키가 있어서, 패키지에 누군가 손을 못대니 안심해라.
대충 정리하면 FETCH_CMD="/usr/local/bin/curl -L -s -q -N"이 가장 빠른 속도를 냄. 물론 귀찮겠지? pkg_add -U나 쓰자.
curl에서 FETCH_CMD를 쓸 때 다운 속도 제한 두고 싶으면
--limit-rate 900k
이런 식으로 추가해주면 된다. 이러면 속도 제한 되는데 빠른게 좋잖아? 추가 안해도 된다.
패키지 업데이트는 보통 pkg_add -u이다. 그런데 OpenBSD의 철학중 하나가 패키지는 항상 안정적이여야 한다는 것이다. 즉, 이새기들 패키지 버그 나기 전까지 업뎃 안할때도 많음. 만약 패키지가 망가졌을경우에, 패치가 제공된다. 이 패치는 syspatch라는 명령어로 받을 수 있다. 뒤에 -c 를 붙여주게 되면 업뎃은 안하고 체크만 할 수 있다.
- 추가로 패키지관리자 안쓰고 그냥 ports따로 받아서 거기서 makefiles써도 됨. 사용법이 궁금하면 여기로.
rcctl[편집]
OpenBSD 서비스(데몬) 관리 프로그램이다. Systemd로 치면 systemctl.
사용법은
# rcctl enable <데몬이름>
이다.
데몬 이름은 대부분 d로 끝난다. i2p는 i2pd, ssh면 sshd 이렇게. 데몬 목록은 /etc/rc.d로 가면 볼 수 있다.
rcctl 유틸이 싫다? 그러면 rc.conf에서 확인한 뒤, rc.conf.local에 일일히 추가해주면 된다. 근데 귀찮으니 rc.d에서 이름 확인하고 rcctl enable 해주면 편하다.
- enable은 당연히 부팅할때마다 자동 실행.
- disable은 자동 실행 비활성화
- start는 지금 실행
- stop은 지금 중지
각각 이렇게다.
더 궁금하면 man rcctl을 쳐서 읽어보자.
멀티미디어[편집]
볼륨 조절은 mixerctl outputs.master=좌측값,우측값을 해주면 된다. 125,125가 난 적당했음 킬때마다 기본값으로 초기화되는게 이게 귀찮으면 그냥 컨픽을 바꿔주면 된다. 경로는 /etc/mixerctl.conf다.
$ cat /etc/mixerctl.conf outputs.master=125,125 outputs.master.mute=off outputs.headphones=125,125 outputs.headphones.mute=off /// 기입 된 값이 다를 수 도 있음.
대부분 일일히 디바이스마다 바꿀 일 없을테니 마스터값만 변경해주면 될거다.
기본으로 aucat이라는 터미널 기반 음악 재생기가 있다. 근데 이거 버리고 cmus쓰는게 마음 편하다. 또한 CD음원 추출도 cdio라는 기본 추출기가 있다. 버리고 abcde[1]나 쓰자.
스토리지 외 디바이스[편집]
BSD계열은 리눅스랑 저장소 표기가 다르다. 리눅스는 sda1, sda2이런식이면 BSD는 sd1a, sd1b이런식이다. OpenBSD는 보통 a는 그 디스크의 루트파티션(/), b는 스왑, c는 디스크 전체를 의미한다. 그래서 보통 마운트 시에 sd3a나 c로 주면 보통 된다.
그리고 ext4지원 사실상 안되는거랑 마찬가지임. 읽기만 된다. openbsd <-> 리눅스 왔다갔다 하는 놈들은 미리 공용하드를 FAT32로 바꿔두자. 물론 단일파일 4기가 제한은 감수해야한다. 아님 그냥 BSD만 쓴다고 ufs로 날려버리면 됨.
리눅스에서 pci 디바이스를 확인할때 쓰던 lspci는 OpenBSD에서는 pcidump로 쓰면된다. 마찬가지로 lsusb는 여기선 usbdevs다.
디스크 라벨은 편하게 sysctl hw.disknames[2]로 볼 수 있다. 사용량은 df -h. 디스크 갯수는 sysctl hw.diskcount를 쓰면 된다. lsblk 없다. 원하는 디스크 라벨을 본 뒤에 /etc/fstab에 추가해두면 자동 마운트가 되니 개꿀일것이다.
USB는 대부분 FAT32이니 하단에서 서술할 newfs같은 짓 안해도 된다. 그냥 늘 하던대로 마운트[3]같이 하면 된다.
하드디스크 추가하는법[편집]
FAT32도 호환이 잘 되지만 가장 좋은건 지들이 익숙한 UFS를 쓰는거다.
- 우선 하드를 확인한다.
# sysctl hw.disknames hw.disknames=sd0:1e212bdb8b279f47(예시),sd1:
여기서 sd0은 당연히 OpenBSD가 깔린 디스크일테고 그럼 sd1이 내가 추가 할 하드일것이다.
- 그리고 fdisk로 새롭게 MBR 파티션 테이블을 써준다.
# fdisk -i /dev/rsd1c
- fdisk로 OpenBSD에서 위 작업을 했다면, 그 드라이브는 당연히 큰 "a" 파티션을 가질것이다. (위에서 말 했듯이 a는 디스크의 루트 파티션이므로 파티션을 분할 하지 않은 상태에선 통짜임.) 이걸로 만족하면 이쪽은 스킵하면 되고 다음으로 넘어가면 된다. 만약 파티션 분할을 하고 싶으면 disklabel을 사용해준다.
# disklabel -E /dev/rsd1c
-e보다 -E를 추천하는건 -E로 할 경우에 설치시에 본 disklabel이랑 같은 화면이 나온다. 그래서 더 편함.
- 파티셔닝을 끝냈으면
# disklabel /dev/rsd1c
로 디스크의 정보를 확인 할 수 있다.
- 이제 파일 시스템을 만들거다. ext4랑은 친하지 않고 fat32를 쓰기엔 단일파일 이동에서 4기가 용량 제한이 걸리기에 이게 나을걸? OpenBSD만 쓸거면 당연히 ufs로 가자.
# newfs /dev/rsd1c
를 하면 주르르르륵 일 하는게 보일거다. 좀만 기다리면 작업이 끝나고 이제 디스크 사용 준비는 다 끝남.
- 이제 마운트를 할 건데, 이 글 보는 놈들은 대부분 알거라고 생각함. 이 문서 올 놈이 얼마나 되겠어? 너가 원하는 마운트 위치는 알아서 정하셈. 나는 # mkdir /mnt/hdd로 hdd용 위치 추가해둠.
# mount /dev/sd1 /mnt/hdd /// 만약 안되면 sd1a나 sd1c로 바꾸면 된다.
자동 마운트를 원한다면[편집]
/etc/fstab을 수정해라. 위의 작업을 하고 나서 # sysctl hw.disknames를 치면 하드에도 예를 들어) sd1:b1ahbla8blah2123 이런식으로 DUID가 나올것이다. 이걸 포함한 몇가지 정보를 fstab에 추가 하면 됨. 뒤에 부가적으로 붙는게 더 있는데 그건 여기로 가면 정리 잘 해 뒀다.
메인으로 쓰는 필자가 쓰는 간단한 팁[편집]
설치할때 자동 레이아웃으로 설치하면 루트 공간을 엄청 적게 준다. 필자는 이거 무시하고 넘겼다가 후에 용량 좀 큰 패키지가 안받아지길래 ??? 하고 df -h를 쳐서 보니 /에 사용량이 105%로 괴상하게 적혀있더라. 램이 넉넉한 디키러들은 설치할때 스왑을 죽이고 스왑에 먹히던 대부분의 용량은 /로, 약간은 /home으로 보내주자. 아니면 반반해도 좋다. / 파티션에 용량만 더 주자.
처음엔 당연히 일반 계정으론 sudo나 doas(openbsd에서 만든 sudo 대체제)가 안된다. 일반 계정으로 로그인한 뒤 su -l root로 진입해서 cp /etc/examples/doas.conf /etc/를 해주면 일반 계정에서도 doas가 가능해진다. sudo 쓰고 싶으면 따로 받고 visudo수정하면 된다.
fvwm도 나쁘진 않긴 한데 조금 불편한 감이 없지 않아 있다. dwm을 깔아 쓰는걸 추천한다. suckless 사이트에 가서 slstatus를 받은뒤 config.h에서 시스템 사용량이나 온도, 볼륨 크기 표시 등을 추가해서 사용하는것도 나쁘진 않다.
DE를 원하면 그나마 난 xfce4를 추천한다. 마스코트 생쥐가 귀엽잖아?
시작 프로그램 셋팅은 기존 리눅스와 동일하다. ~/.xinitrc을 사용하면 된다. 예를 들어 ibus를 쓰고 싶다. 하면 ~/.xinitrc에 exec ibus-daemon &을 추가 해 주면 된다. 필자는 여기에 feh로 배경화면 설정이던지 xrdb로 ~/.Xresources 불러와서 XTerm 테마 변경등을 불러오게 해뒀다. 이거도 리눅스랑 같긴 하네.
그리고 기본 shell이 ksh인데 bash 그리운 놈들은 bash를 pkg_add bash로 받고 $ chsh -s bash를 해주면 된다. fish나 zsh면 그걸로 바꾸면 된다. 근데 ksh도 괜찮음 ㅇㅇ. 루트는 그대로 ksh로 두는걸 권장함. 왜냐면 기본 shell(sh, csh, ksh)이 아닌 놈들은 /usr/local/bin에 설치되기 때문임. 이곳은 루트 파티션이 아니기에 루트 파티션만이 마운트가 되는 상황에서 꼬이는 경우가 생길 수 있어서 그럼. 대부분은 안그러겠지만 혹시 모르니까 두자. 루트계정으로만 활동하는건 당연히 어디서든 비권장이니 어짜피 유저단에서 있을거니까?
- 물론 ksh는 기본 shell이기에 루트파티션에 속한 /bin 안에 설치되어 있어서 ㄱㅊ음
한글 입력은 scim써라. ibus 한글 컴파일 할 거면 그거 써도 되고. nabi는 시체니 걸렀음.