User Tools

Site Tools


project:kernellab:bsd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
project:kernellab:bsd [2020/04/30 21:04] – removed maxfxproject:kernellab:bsd [2020/05/01 19:26] maxfx
Line 1: Line 1:
 +====== Fundamentals of FreeBSD ======
  
 +===== Getting Started with FreeBSD  =====
 +[[https://unixsheikh.com/articles/why-you-should-migrate-everything-from-linux-to-bsd.html | Why you should migrate everything from Linux to BSD ]]
 +[[https://unixsheikh.com/articles/technical-reasons-to-choose-freebsd-over-linux.html#introduction | Technical reasons to choose freebsd over linux ]]
 +[[https://www.digitalocean.com/community/tutorial_series/getting-started-with-freebsd | Getting Started with FreeBSD  ]]
 +[[https://svnweb.freebsd.org/base/head/share/misc/bsd-family-tree?view=co | BSD Tree ]]
 +
 +===== The Kernel Boot Process =====
 +
 +[[https://distkeys.com/operating%20systems/2014/07/08/boot-freebsd.html| Boot Freebsd ]]
 +
 +[[https://distkeys.com/operating%20systems/2014/08/03/system-call.html | System Call  ]]
 +
 +[[https://distkeys.com/operating%20systems/2014/08/04/open-system-call.html | Open System Call ]]
 +
 +[[https://distkeys.com/operating%20systems/2014/12/31/fork-freebsd.html| Fork]]
 +
 +[[https://distkeys.com/operating%20systems/2014/12/31/signal-code-in-freebsd.html| Signal]]
 +
 +[[https://distkeys.com/operating%20systems/2015/01/02/virtual-memory-1.html| Virtual memory 1 ]]
 +
 +[[https://distkeys.com/operating%20systems/2015/01/02/virtual-memory-2.html| Virtual memory 2 ]]
 +
 +[[https://distkeys.com/operating%20systems/2015/01/02/virtual-memory-3.html| Virtual memory 3 ]]
 +
 +[[https://distkeys.com/operating%20systems/2015/04/12/virtual-memory-4.html| Virtual memory 4 ]]
 +
 +[[https://bsdmag.org/basic-unix-queuing-techniques/ | Kernel Mode Queues ]]
 +
 +[[https://bsdmag.org/dynamic-memory-allocation-unix-systems/| Dynamic Memory Allocation in Unix Systems ]]
 +
 +===== The Kernel =====
 +
 +[[https://kernelnomicon.org/?p=682 | 64-bit U-Boot on Raspberry Pi 3 ]]
 +
 +[[https://www.bsdcan.org/2008/schedule/attachments/49_2008_uboot_freebsd.pdf| Interfacing FreeBSD with U-Boot]]
 +
 +[[https://bsdimp.blogspot.cz/2007/10/building-bootable-freebsdi386-images.html|  Building bootable FreeBSD/i386 images  ]]
 +
 +[[https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/201403-asiabsdcon2014-freebsd-smp-boot.pdf| How FreeBSD Boots: a soft-core MIPS perspective]]
 +
 +[[http://www.isysop.com/unpacking-and-repacking-u-boot-uimage-files/|http://www.isysop.com/unpacking-and-repacking-u-boot-uimage-files/]]
 +
 +[[http://www.isysop.com/unpacking-and-repacking-u-boot-images-part-2/| http://www.isysop.com/unpacking-and-repacking-u-boot-images-part-2/]]
 +
 +[[https://github.com/bitboss-ca/freebsd-arm-tools|https://github.com/bitboss-ca/freebsd-arm-tools]]
 +
 +[[https://raybsd.blogspot.cz/2012/12/|https://raybsd.blogspot.cz/2012/12/]]
 +
 +[[https://distkeys.com/blog/2014/08/03/inside-freebsd/|http://distkeys.com/blog/2014/08/03/inside-freebsd/]]
 +
 +[[https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-ports-on-freebsd-10-1|https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-ports-on-freebsd-10-1]]
 +
 +
 +===== FreeBSD Kernel Porting Guide =====
 +
 +[[https://www.freebsd.org/doc/en_US.ISO8859-1/books/arch-handbook/index.html | FreeBSD Architecture Handbook]]
 +
 +==== Do you like backdoors ? ====
 +
 +[[https://elkamika.blogspot.com/2019/09/freebsd-kernel-icmp-backdoor-part-3.html| https://elkamika.blogspot.com/2019/09/freebsd-kernel-icmp-backdoor-part-3.html]]
 +
 +[[https://elkamika.blogspot.com/2019/09/freebsd-kernel-stack-unrolling-and-safe.html | https://elkamika.blogspot.com/2019/09/freebsd-kernel-stack-unrolling-and-safe.html ]]
 +==== Kernel Porting to ARM Board ====
 +
 +[[https://www.bidouilliste.com/blog/2015/11/27/Porting-FreeBSD-to-a-new-ARM-Board-Part-1/|https://www.bidouilliste.com/blog/2015/11/27/Porting-FreeBSD-to-a-new-ARM-Board-Part-1/]]
 +
 +[[https://www.bidouilliste.com/blog/2015/11/27/Porting-FreeBSD-to-a-new-ARM-Board-Part-2/|https://www.bidouilliste.com/blog/2015/11/27/Porting-FreeBSD-to-a-new-ARM-Board-Part-2/]]
 +
 +[[https://www.bidouilliste.com/blog/2015/11/27/Porting-FreeBSD-to-a-new-ARM-Board-Part-3/|https://www.bidouilliste.com/blog/2015/11/27/Porting-FreeBSD-to-a-new-ARM-Board-Part-3/]]
 +
 +==== NetBooting ARM/MIPS ====
 +
 +[[https://kernelnomicon.org/?p=306 | Netbooting ARM/MIPS devices: server setup ]]
 +
 +[[https://kernelnomicon.org/?p=327 | Netbooting ARM/MIPS devices: kinds of kernel and u-boot ]]
 +
 +
 +==== Kernel Debug, BackTrace ====
 +[[https://backtrace.io/blog/backtrace/improving-freebsd-kernel-debugging/]]
 +
 +[[https://gist.github.com/bijanebrahimi/f2eb0c620d81aa6234e121a0ddd88cc2]]
 +
 +[[https://forums.freebsd.org/threads/ctl-alt-esc-not-taking-me-to-kernel-debugger.40111/]]
 +
 +[[https://riptutorial.com/freebsd/example/23734/download-the-latest-source-code]]
 +
 +[[https://elkamika.blogspot.com/2019/06/freebsd-kernel-remote-debugging-part1.html?m=1]]
 +
 +[[https://blog.hostileadmin.com/2012/09/25/so-you-want-a-freebsd-debugging-kernel/]]
 +
 +
 +==== Extended firmware interface (Efi) ====
 +[[https://bsdmag.org/beyond-bios-the-extended-firmware-interface-efi/ | https://bsdmag.org/beyond-bios-the-extended-firmware-interface-efi/]]
 +
 +
 +==== Internal Talks ====
 +
 +[[https://www.youtube.com/watch?v=nwbqBdghh6E|FreeBSD Kernel Internals, Dr. Marshall Kirk McKusick ]]
 +
 +[[https://www.youtube.com/watch?v=UfiTV9QWhM4|An Overview of Locking in the FreeBSD Kernel - Kirk McKusick, EuroBSDcon 2012 ]]
 +
 +[[https://www.youtube.com/watch?v=E04LxKiu79I|An Overview of Security in the FreeBSD Kernel, Dr. Marshall Kirk McKusick ]]
 +
 +[[https://www.youtube.com/watch?v=ds77e3aO9nA|A Narrative History of BSD, Dr. Kirk McKusick]]
 +
 +[[https://www.youtube.com/watch?v=_oWcfUt9QUs|Systems, Science and FreeBSD, George Neville-Neil]]
 +
 +[[https://www.youtube.com/watch?v=D-iKNtfBySg|The Realities of DTrace on FreeBSD, by George Neville Neil (EuroBSDcon 2017)]]
 +
 +[[https://www.youtube.com/watch?v=WnCClGMzB58|Tuning FreeBSD for routing and firewalling, by Olivier Cochard-Labbé (EuroBSDcon 2017)]]
 +
 +[[https://www.youtube.com/watch?v=NMUf6VGK2fI|Brian Kidney: The Realities of DTrace on FreeBSD - BSDCan 2017 ]]
 +
 +[[https://www.youtube.com/watch?v=8f9TREeqb5o|An introduction to the implementation of ZFS by Kirk McKusick]]
 +
 +[[https://www.youtube.com/watch?v=IQp_FglfzUQ|ZFS Internals Overview by Kirk McKusick ]]
 +
 +
 +==== FreeBSD is not a Linux distribution ====
 +
 +[[https://www.youtube.com/watch?v=wwbO4eTieQY|FreeBSD: Not a Linux Distro, George Neville-Neil ]]
 +
 +[[https://www.youtube.com/watch?v=ps67ECyh0sM|FreeBSD is not a Linux distribution: Philip Paes]]
 +
 +[[https://www.youtube.com/watch?v=cofKxtIO3Is|Convincing a Linux guy to use FreeBSD :-) ]]
 +
 +[[https://www.youtube.com/watch?v=XnO4S7kb7vg|What is FreeBSD by Gavin Atkinson]]
 +
 +[[https://www.youtube.com/watch?v=A5rmG2j4Lk8|Case Study: Switching from Linux to FreeBSD ]]
 +
 +[[https://www.youtube.com/watch?v=Mri66Uz6-8Y|Jordan Hubbard - FreeBSD: The Next 10 Years]]
 +
 +[[https://www.youtube.com/watch?v=TneLO5TdW_M|Rick Reed - WhatsApp: Half a billion unsuspecting FreeBSD users]]
 +
 +[[https://www.youtube.com/watch?v=YsBxS2WswBw | Michael W. Lucas talks FreeBSD ]]
 +
 +[[https://www.youtube.com/watch?v=Ib7tFvw34DM|The Trouble with FreeBSD ]]
 +
 +[[https://www.youtube.com/watch?v=5mv_oKFzACM| NYLUG Presents: George Neville-Neil on FreeBSD and Linux, a comparative analysis (Feb 19, 2014)]]
 +
 +[[https://www.youtube.com/watch?v=CehSeSVgEUA|LFNW 2018: Switching to the BSDs: A crash course in FreeBSD, FreeNAS, TrueOS and OpenBSD ]]
 +
 +[[https://www.youtube.com/watch?v=7kShjboN6ek&list=PLnTFqpZk5ebBqq5-LCFPLjPMxe4Ml7Fc8&index=2 | George Neville-Neil, Security Fantasies and Realities for the BSDs]]
 +
 +
 +==== FreeBSD BSDCons ====
 +[[https://www.youtube.com/watch?v=E8kAVmvlBLQ&list=PLeF8ZihVdpFegPoAKppaDSoYmsBvpnSZv&index=1 | BSDCon 2019]]
 +
 +[[https://www.youtube.com/watch?v=SeQ345njH1s&list=PLeF8ZihVdpFfkICtA2HFsZecdC28_mrQh | BSDCon 2018 ]]
 +
 +==== FreeBSD ASIANBSDCON 2018 ====
 +
 +[[https://www.youtube.com/watch?v=e1B_6iGY2lU|P01A: Institutionalizing FreeBSD Isolated and Virtualized Hosts -- Michael Dexter]]
 +
 +[[https://www.youtube.com/watch?v=SLlzep0IxVY|P02A: Tuning FreeBSD for routing and firewalling -- Olivier Cochard Labbe]]
 +
 +[[https://www.youtube.com/watch?v=bwbLuQDoxuQ|P03A: PC BSD evolves into TrueOS - Kris Moore]]
 +
 +[[https://www.youtube.com/watch?v=Y5cx9hEhxfE|P04A: FreeBSD ARM32ARM64 Porting to a new board - Emmanuel Vadot]]
 +
 +[[https://www.youtube.com/watch?v=NeJ2ztPasso|P05A: Profiling the FreeBSD kernel boot -- Colin Percival]]
 +
 +[[https://www.youtube.com/watch?v=FzF9e4jrnJ4|P06A: Role based Access Control in BCHS Web Applications -- Kristaps Dzonsons]]
 +
 +[[https://www.youtube.com/watch?v=vOVoylirkUU|P07A: OpenBSD/x-ray: OpenBSD on medical x-ray machines -- Henning Brauer]]
 +
 +[[https://www.youtube.com/watch?v=bBLSvTQY7xw|P08A: Improving netdump hardware support and performance with iflib -- Sam Gwydir]]
 +
 +[[https://www.youtube.com/watch?v=9mOFFovdAw0|P09A: Introducing FreeBSD VPC -- Sean Chittenden]]
 +
 +[[https://www.youtube.com/watch?v=lcrnXQ7xp7k|AsiaBSDCon 2018 Work in Progress Session and Closing]]
 +
 +==== FreeBSD ASIANBSDCON 2017 ====
 +
 +[[https://www.youtube.com/watch?v=9zyF7Kbxj3o|AsiaBSDCon 2017 Opening - Hiroki Sato]]
 +
 +[[https://www.youtube.com/watch?v=tuqADfhqwa8|P01A: Understandings NFSv4 ACLs - John Hixson]]
 +
 +[[https://www.youtube.com/watch?v=V_HqMATqtlA|P01B: Bulk building in the many core era - Joerg Sonnenberger]]
 +
 +[[https://www.youtube.com/watch?v=5Cni50vnlto|P01C: OpenBSD pf+rdomains create splendid multi tenancy firewalls - Philipp Buehler]]
 +
 +
 +===== Tweaking a Running Kernel =====
 +
 +==== Tuning tips ====
 +[[https://calomel.org/freebsd_network_tuning.html|FreeBSD network tuning]]
 +
 +[[https://calomel.org/network_performance.html|Network performance]]
 +
 +[[https://cooltrainer.org/a-freebsd-desktop-howto/|https://cooltrainer.org/a-freebsd-desktop-howto/]]
 +
 +[[http://www.packetwatch.net/documents/guides/2008030201.php|http://www.packetwatch.net/documents/guides/2008030201.php]]
 +
 +[[https://home.nuug.no/~peter/pf/en/|Firewalling with OpenBSD's PF packet filter]]
 +
 +[[https://www.freebsdnews.com/2017/07/18/building-bsd-home-router-pt-4-installing-pfsense/|Building-bsd-home-router-pt-4-installing-pfsense/]]
 +
 +[[https://www.digitalocean.com/community/tutorials/a-comparative-introduction-to-freebsd-for-linux-users|comparative-introduction-to-freebsd-for-linux-users ]]
 +
 +[[http://truelogic.org/wordpress/2015/09/24/freebsd-how-to-clean-and-rebuild-all-ports-with-portmaster/|How to clean and rebuild all ports with Portmaster]]
 +
 +[[http://www.wonkity.com/~wblock/docs/html/disksetup.html|http://www.wonkity.com/~wblock/docs/html/disksetup.html]]
 +
 +[[http://www.freebsdmadeeasy.com/tutorials/freebsd/schedule-tasks-with-crontab.php|schedule-tasks-with-crontab]]
 +
 +[[http://blog.up-link.ro/how-to-set-up-a-freebsd-router-step-by-step-tutorial/|Freebsd router step by step]]
 +
 +[[https://unixblogger.com/2011/10/18/the-pain-of-an-realtek-rtl8111rtl8168-ethernet-card/|The pain of a Realtek (RTL8111/RTL8168) ethernet card]]
 +
 +[[http://blog.ataboydesign.com/2014/04/23/freebsd-10-mounting-usb-drive-with-ext4-filesystem/|Mounting drive with ext4 filesystem]]
 +
 +[[https://www.garron.me/en/bits/change-permissions-recursively.html|Change permissions]]
 +
 +[[https://unrelenting.technology/articles/freebsd-on-the-thinkpad-x240|Freebsd on the Thinkpad x240]]
 +
 +====  FreeBSD Broadcom Wi-Fi ====
 +[[https://landonf.org/code/freebsd/Broadcom_WiFi_Improvements.20180122.html| Landon Fuller: FreeBSD Broadcom Wi-Fi Improvements ]]
 +
 +==== Linux® emulation in FreeBSD ====
 +
 +[[https://www.freebsd.org/doc/en_US.ISO8859-1/articles/linux-emulation/article.html | Linux® emulation in FreeBSD ]]
 +
 +==== How to Become a FreeBSD Committer ====
 +
 +[[https://wiki.freebsd.org/BecomingACommitter|How to Become a FreeBSD Committer]]
 +
 +==== Bios ====
 +[[http://opensecuritytraining.info/IntroBIOS_files/Day1_01_Advanced%20x86%20-%20BIOS%20and%20SMM%20Internals%20-%20QuickAsideTools.pdf | Intro to BIOS]]
 +
 +
 +
 +====== Bhyve Hypervisor ======
 +
 +* [[https://wiki.freebsd.org/bhyve | bhyve hypervisor ]]
 +
 +
 +====== Build ports ======
 +
 +==== Reference ====
 +
 +* [[https://networking.ringofsaturn.com/Unix/createportpatch.php|Creating a FreeBSD Port Patch]]
 +
 +* [[http://zewaren.net/site/node/172|Build your own FreeBSD ports and make packages out of them using jails, poudriere and portshaker ]]
 +
 +* [[https://www.freebsd.org/doc/handbook/ports-poudriere.html|Building Packages with Poudriere]]
 +
 +* [[https://github.com/freebsd/poudriere/wiki|Poudriere wiki]]
 +
 +* [[http://www.freebsd.cz/doc/en/books/porters-handbook/own-port.html|Making a New Port]]
 +
 +
 +==== Portmaster ====
 +
 +<code>
 +portmaster -L - Check all update for ports
 +portmaster -a - Upgrade ports
 +portmaster -af - Rebuild of installed application
 +</code>
 +
 +==== Build ports with Poudriere ====
 +
 +Create it ports tree for poudriere 
 +<code>
 +poudriere ports -c
 +</code>
 +
 +Configure poudriere, file system, ram, etc...
 +<code>
 +/usr/local/etc/poudriere.conf
 +</code>
 +
 +List port tree
 +<code>
 +poudriere ports -l
 +
 +PORTSTREE METHOD   TIMESTAMP           PATH
 +default   portsnap 2019-07-10 21:47:49 /usr/local/poudriere/ports/default
 +</code>
 +
 +Create it jail for build and the target system 
 +<code>
 +poudriere jail -c -j freebsd_11-2x64 -v 11.2-RELEASE -a amd64
 +</code>
 +
 +
 +List the jails
 +<code>
 +sudo poudriere jail -l
 +
 +JAILNAME        VERSION          ARCH  METHOD TIMESTAMP           PATH
 +freebsd_11-2x64 11.2-RELEASE-p11 amd64 ftp    2019-07-10 20:48:07 /usr/local/poudriere/jails/freebsd_11-2x64
 +</code>
 +
 +
 +Copy your port files to /usr/local/poudriere/default/
 +and then build it port for example
 +
 +<code>
 +sudo poudriere testport -o lang/halide -j freebsd_11-2x64
 +</code>
 +
 +==== Debug ports ====
 +
 +Just put the following line to /etc/make.conf. Then recompile port with debug symbol.
 +
 +<code>
 +WITH_DEBUG=    yes
 +</code>
 +
 +more information in
 +
 +<code>
 +/usr/ports/Mk/bsd.port.mk
 +</code>
 +
 +==== Debug Makefile ====
 +
 +Debug makefile for your port
 +
 +<code>
 +make -d A
 +</code>
 +
 +
 +====== Desktop tips ======
 +
 +==== FoldingHome on FreeBSD ====
 +
 +[[https://www.leidinger.net/blog/2020/03/19/fighting-the-coronavirus-with-freebsd-foldinghome/ | Folding home on FreeBSD ]]
 +
 +==== Steam on FreeBSD ====
 +
 +[[https://github.com/SteamOnFreeBSD/SteamOnFreeBSD|Steam on FreeBSD]]
 +
 +==== Bitcoin Full Node ====
 +
 +[[https://bsdmag.org/5374-2/|https://bsdmag.org/5374-2/]]
 +
 +==== Tuning Power Laptops ====
 +
 +[[https://wiki.freebsd.org/TuningPowerConsumption|https://wiki.freebsd.org/TuningPowerConsumption]]
 +
 +==== Optimus on Freebsd - Hot fix ====
 +
 +Comment out Nvidia-related parts from your [[https://www.freebsd.org/cgi/man.cgi?xorg.conf|xorg.conf ]]:
 +
 +<code>
 +...
 +
 +Section "Device"
 +    Identifier  "Card0"
 +    Driver      "intel"
 +    BusID       "PCI:0:2:0"
 +EndSection
 +
 +#Section "Device"
 +#   Identifier  "Card1"
 +#   Driver      "nvidia"
 +#   BusID       "PCI:1:0:0"
 +#EndSection
 +
 +...
 +</code>
 +
 +Then add the following bits to [[https://www.freebsd.org/cgi/man.cgi?rc.conf|rc.conf(5) ]]:
 +
 +<code>
 +kld_list='i915kms'
 +</code>
 +
 +==== NTPD synchronize ====
 +
 +<code>
 +ntpdate_enable="YES"
 +ntpdate_hosts="in.pool.ntp.org"
 +</code>
 +
 +Or manually update time and date <WRAP center round important 60%> securelevel on 2 then you cannot set time only about second. </WRAP>
 +
 +<code>
 +ntpdate -b pool.ntp.org
 +sudo service ntpd start
 +</code>
 +
 +==== Disable Beep ====
 +
 +<code>
 +# sysctl hw.syscons.bell=0
 +</code>
 +
 +or if you use XFCE
 +
 +<code>
 +set bell-style none
 +</code>
 +
 +==== Change standard shell to fish ====
 +
 +You must add line in /etc/shells for example fish shell
 +
 +<code>
 +/usr/local/bin/fish
 +</code>
 +
 +Change shell and path your favorite shell
 +
 +<code>
 +chsh -s /usr/local/bin/fish
 +</code>
 +
 +=== Paths for shell ===
 +
 +If you need PATH for example compiler or some options
 +
 +<code>
 +# ASAN settings
 +set -x ASAN_SYMBOLIZER_PATH /usr/local/llvm50/bin/llvm-symbolizer
 +set -x ASAN_OPTIONS verbosity=1
 +set -x ASAN_OPTIONS symbolize=1
 +set -x ASAN_OPTIONS detect_stack_use_after_scope=1
 +
 +# UBSAN settings
 +set -x UBSAN_SYMBOLIZER_PATH /usr/local/llvm50/bin/llvm-symbolizer
 +set -x UBSAN_OPTIONS verbosity=2
 +
 +# MSAN
 +set -x MSAN_SYMBOLIZER_PATH /usr/local/llvm50/bin/llvm-symbolizer
 +set -x MSAN_OPTIONS fsanitize-memory-track-origins=2
 +set -x MSAN_OPTIONS verbosity=2
 +set -x MSAN_OPTIONS symbolize=1
 +</code>
 +
 +==== Nano tuning ====
 +
 +<code>
 +set constantshow
 +set smooth
 +set autoindent
 +set casesensitive
 +set historylog
 +set morespace
 +
 +syntax "comments" ".*"
 +color blue "^#.*"
 +
 +## nanorc files
 +include "/usr/local/share/nano/asm.nanorc"
 +include "/usr/local/share/nano/awk.nanorc"
 +include "/usr/local/share/nano/c.nanorc"
 +include "/usr/local/share/nano/cmake.nanorc"
 +include "/usr/local/share/nano/css.nanorc"
 +include "/usr/local/share/nano/debian.nanorc"
 +include "/usr/local/share/nano/fortran.nanorc"
 +include "/usr/local/share/nano/gentoo.nanorc"
 +include "/usr/local/share/nano/groff.nanorc"
 +include "/usr/local/share/nano/html.nanorc"
 +include "/usr/local/share/nano/java.nanorc"
 +include "/usr/local/share/nano/makefile.nanorc"
 +include "/usr/local/share/nano/man.nanorc"
 +include "/usr/local/share/nano/mgp.nanorc"
 +include "/usr/local/share/nano/mutt.nanorc"
 +include "/usr/local/share/nano/nanorc.nanorc"
 +include "/usr/local/share/nano/objc.nanorc"
 +include "/usr/local/share/nano/ocaml.nanorc"
 +include "/usr/local/share/nano/patch.nanorc"
 +include "/usr/local/share/nano/perl.nanorc"
 +include "/usr/local/share/nano/php.nanorc"
 +include "/usr/local/share/nano/pov.nanorc"
 +include "/usr/local/share/nano/python.nanorc"
 +include "/usr/local/share/nano/ruby.nanorc"
 +include "/usr/local/share/nano/sh.nanorc"
 +include "/usr/local/share/nano/tcl.nanorc"
 +include "/usr/local/share/nano/tex.nanorc"
 +include "/usr/local/share/nano/xml.nanorc"
 +</code>
 +
 +==== QT Creator - Debugging ====
 +
 +I cannot debug C/C++ programs because message "No symbol table is loaded. Use the \"file\" command"
 +
 +Best solution is install //devel/gdb// with path ///usr/local/bin/gdb//
 +
 +====== Touchpad ======
 +
 +===== Touchpad reference =====  
 +[[https://forums.freebsd.org/threads/how-to-use-synaptics-driver-for-better-touchpad-features.54872/]]
 +
 +[[http://freebsd.1045724.x6.nabble.com/Glidepoint-Scrolling-td4084250.html]]
 +
 +[[https://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/x.html#idp59892168]]
 +
 +[[https://forums.freebsd.org/threads/synaptics-touchpad-on-dell-inspiron-5150.19707/]]
 +
 +[[http://kenbsd.blogspot.com/2015/12/setting-up-horizontal-scroll-on-freebsd.html]]
 +
 +[[https://www.reddit.com/r/freebsd/comments/7o2v62/your_xorgconfd_touchpad_configuration/]]
 +
 +[[https://forums.freebsd.org/threads/synaptics-touchpad-right-key-on-r60.10125/]]
 +
 +[[https://forums.freebsd.org/threads/solved-mouse-pointer-wont-move-for-acer-laptop-touchpad.37329/]]
 +
 +[[https://lists.freebsd.org/pipermail/freebsd-x11/2009-July/008638.html]]
 +
 +[[https://forums.freebsd.org/threads/touchpad-not-recognized-generic-ps-2-mouse-instead.50318/#post-281745]]
 +
 +[[https://forums.freebsd.org/threads/synaptics-driver-not-loading-elantech-touchpad.59207/#post-339241]]
 +
 +[[https://forums.freebsd.org/threads/cannot-manage-display-mouse-from-xfce4-settings-menus.63988/#post-371562]]
 +
 +
 +====== Mount ======
 +
 +==== Mount msdosfs ====
 +
 +<code>
 +# ls /dev/da*
 +# mount_msdosfs /dev/da0 /media/usb
 +</code>
 +
 +==== ReMount /etc/fstab ====
 +
 +<code>
 +mount -av
 +</code>
 +==== Mount ext2/ext3/ext4 ====
 +
 +Fuse-ext2 mounts an ext2/ext3/ext4 partition or image file
 +
 +For control kernels fuse modules is command:
 +
 +<code>
 +kldstat
 +</code>
 +
 +If you don't have fuse.ko module in the kernel you use this command
 +
 +<code>
 +kldload fuse
 +</code>
 +
 +Then mount your partition
 +
 +<code>
 +fuse-ext2  /dev/your_partition /media/
 +</code>
 +
 +==== Mount NTFS ====
 +
 +For mounting ntfs file system you must kernel module loaded.
 +
 +For control kernels fuse modules is command:
 +
 +<code>
 +kldstat
 +</code>
 +
 +and load FUSE kernel module:
 +
 +<code>
 +kldload fuse
 +</code>
 +
 +and then you can mount ntfs filesystem.
 +
 +<code>
 +# ls /dev/da*
 +# ntfs-3g  /dev/your_partition  /mnt/
 +</code>
 +
 +==== Automounting Removable Media ====
 +
 +Uncomment in config file in /etc/auto_master
 +
 +<code>
 +/media        -media        -nosuid
 +</code>
 +
 +Add lines to /etc/devd.conf
 +
 +<code>
 +notify 100 {
 +    match "system" "GEOM";
 +    match "subsystem" "DEV";
 +    action "/usr/sbin/automount -c";
 +};
 +</code>
 +
 +Reload service
 +
 +<code>
 +service automount reload
 +service devd restart
 +</code>
 +
 +and added configuration /etc/rc.conf
 +
 +<code>
 +autofs_enable="YES"
 +</code>
 +
 +
 +====== Introduction ZFS ======
 +
 +[[http://tate.cx/improving-zfs-performance/]]
 +
 +===== Mount ZFS =====
 +
 +<code>
 +zpool import
 +</code>
 +
 +For control command mount.
 +
 +===== Mount ZFS from Live CD =====
 +
 +<code>
 +zpool import -fR /media zroot
 +</code>
 +
 +===== Tuning zfs on i386 =====
 +If you will have i386 OS you must set wm.kmem_size="512M" and vm.kmem_size_max="" is minimal value. 
 +
 +This is little tunables
 +more information on http://www.freebsd.cz/doc/handbook/zfs-advanced.html
 +<code>
 +vfs.zfs.prefetch_disable=0
 +vm.kmem_size="512M"
 +vm.kmem_size_max="768M"
 +vfs.zfs.arc_max="40M"
 +vfs.zfs.vdev.cache.size="5M"
 +</code>
 +
 +
 +===== Resize partition =====
 +
 +We added space for virtual disk (VirtualBox, or other)
 +but we have disk CORRUPT 
 +<code>
 +lol@ ~/> gpart show ada0
 +=>      40  41942960  ada0  GPT  (39G) [CORRUPT]
 +        40      1024      freebsd-boot  (512K)
 +      1064       984        - free -  (492K)
 +      2048   4194304      freebsd-swap  (2.0G)
 +   4196352  37744640      freebsd-zfs  (18G)
 +  41940992      2008        - free -  (1.0M)
 +</code>
 +
 +Fix is easy : 
 +<code>
 +gpart recover ada0
 +</code>
 +
 +Now we need resize partion 3.
 +<code>
 +lol@ ~/> gpart show 
 +=>      40  81919920  ada0  GPT  (39G)
 +        40      1024      freebsd-boot  (512K)
 +      1064       984        - free -  (492K)
 +      2048   4194304      freebsd-swap  (2.0G)
 +   4196352  37744640      freebsd-zfs  (18G)
 +  41940992  39978968        - free -  (19G)
 +</code>
 +
 +<code>
 +lol@ ~/> zpool list
 +NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
 +zroot  17.9G  17.3G   621M            76%    96%  1.00x  ONLINE  -
 +</code>
 +
 +For device is Busy , we have set this value:
 +<code>
 +lol@ ~/> sysctl kern.geom.debugflags=16
 +kern.geom.debugflags: 0 -> 16
 +</code>
 +
 +Now resize partition number 3 
 +<code>
 +lol@ ~/> gpart show 
 +=>      40  81919920  ada0  GPT  (39G)
 +        40      1024      freebsd-boot  (512K)
 +      1064       984        - free -  (492K)
 +      2048   4194304      freebsd-swap  (2.0G)
 +   4196352  37744640      freebsd-zfs  (18G)
 +  41940992  39978968        - free -  (19G)
 +
 +lol@ ~/> sudo gpart resize -i 3 ada0
 +
 +ada0p3 resized
 +
 +lol@ ~/> gpart show 
 +=>      40  81919920  ada0  GPT  (39G)
 +        40      1024      freebsd-boot  (512K)
 +      1064       984        - free -  (492K)
 +      2048   4194304      freebsd-swap  (2.0G)
 +   4196352  77723608      freebsd-zfs  (37G)
 +</code>
 +
 +Last step with zfs pool: 
 +<code>
 +lol@ ~/> sudo zpool set autoexpand=on zroot
 +lol@ ~/> sudo zpool online -e zroot ada0p3 ada0p3
 +</code>
 +
 +Control space in zpool.Size of zroot is right.
 +<code>
 +lol@ ~/> zpool list
 +NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
 +zroot    37G  17.3G  19.7G            36%    46%  1.00x  ONLINE  -
 +</code>
 +
 +<code>
 +lol@ ~/Desktop> sudo sysctl kern.geom.debugflags=0
 +kern.geom.debugflags: 16 -> 0
 +
 +</code>
 +
 +====== Virtualbox ====== 
 +===== Virtuabox in FreeBSD =====
 +
 +Added line with kernel module to /boot/loader.conf
 +
 +<code>
 +vboxdrv_load="YES"
 +</code>
 +
 +Added line for bridged or host-only networking to /etc/rc.conf
 +<code>
 +vboxnet_enable="YES"
 +</code>
 +
 +Added to group
 +<code>
 +pw groupmod vboxusers -m yourusername
 +chown root:vboxusers /dev/vboxnetctl
 +chmod 0660 /dev/vboxnetctl
 +</code>
 +
 +Permanent permisions added lines to /etc/devfs.conf
 +<code>
 +own     vboxnetctl root:vboxusers
 +perm    vboxnetctl 0660
 +</code>
 +
 +===== FreeBSD as guest Virtualbox =====
 +
 +Write to /etc/rc.conf
 +
 +<code>
 +vboxguest_enable="YES"
 +vboxservice_enable="YES"
 +</code>
 +
 +======  Wifi and FreeBSD  ====== 
 +
 +===== How to setup WIFI card =====
 +<code>
 +pciconf -l - look for if see wifi hardware
 +sudo ifconfig wlan0 create wlandev wpi0
 +sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
 +</code>
 +
 +===== How to setup USB WIFI =====
 +
 +Add kernel module to /boot/loader.conf
 +<code>
 +
 +# Kernel module for wifi 
 +if_ath_load="YES"
 +if_iw_load="YES"
 +
 +# Next wifi kernel modules
 +wlan_wep_load="YES"
 +wlan_ccmp_load="YES"
 +wlan_tkip_load="YES"
 +</code>
 +
 +
 +Add to configure /etc/rc.conf this lines.
 +Configure you wifi device.
 +<code>
 +wlans_run0="wlan0"
 +create_args_wlan0="wlanmode sta country CZ indoor"
 +</code>
 +
 +
 +Look to your hardware if you have drivers.
 +<code>
 +
 +# Look for if see wifi hardware (wpi, run0)
 +pciconf -l 
 +
 +# Create a device with name wlan0
 +sudo ifconfig wlan0 create wlandev wpi0
 +
 +# Create wpa_supplicant configure file with ssid network 
 +sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
 +
 +# Scan your wifi networks
 +ifconfig wlan0 up scan 
 +SSID/MESH ID    BSSID              CHAN RATE   S:    INT CAPS
 +lol        00:13:46:49:41:76   11   54M -90:96   100 EPS  WPA WME
 +trololo    00:11:95:c3:0d:ac    1   54M -83:96   100 EPS  WPA
 +
 +# IP address from DHCP server
 +sudo dhclient wlan0
 +</code>
 +
 +====== GELI ======
 +<code>
 +Install CD -> Partition -> Shell
 +
 +gpart create -s gpt vtbd0
 +gpart add -t freebsd-boot -s 512k -a 4k vtbd0
 +gpart add -t freebsd-ufs -a 1M vtbd0
 +gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 vtbd0
 +
 +geli init -b -g vtbd0p2
 +geli attach vtbd0p2
 +
 +newfs -j /dev/vtbd0p2.eli
 +mount /dev/vtbd0p2.eli /mnt
 +
 +- /tmp/bsdinstall_etc/fstab
 +/dev/vtbd0p2.eli / ufs rw,noatime 1 1
 +
 +- /tmp/bsdinstall_boot/loader.conf
 +geom_eli_load="YES"
 +
 +exit (installer will continue)
 +
 +Change  /dev/vtbd0p2.eli to gptid/rawuuid (gpart list):
 +/dev/gptid/015ceb9a-90a4-11e6-b8fc-1392a9ed1847 / ufs rw,noatime 1 1
 +</code>
 +
 +
 +====== FreeBSD Security ====== 
 +===== Security on FreeBSD =====
 +
 +To check the status of the securelevel on a running system: Add to /etc/sysctl.conf
 +
 +<code>
 +kern.securelevel=2
 +security.bsd.see_other_uids=0
 +security.bsd.stack_guard_page=1
 +net.inet.ip.random_id=1
 +</code>
 +
 +more : [[https://www.freebsd.org/doc/faq/security.html|https://www.freebsd.org/doc/faq/security.html]]
 +
 +===== Enabling and Utilizing Process Accounting =====
 +
 +Tracking information such as CPU statistics and executed commands. 
 +
 +<code>
 +touch /var/account/acct
 +chmod 600 /var/account/acct
 +accton /var/account/acct
 +echo 'accounting_enable="YES"' >> /etc/rc.conf
 +</code>
 +
 +
 +====== Troubleshooting with FreeBSD ======
 +
 +===== SSH =====
 +==== Too many authentication failures ====
 +If You are not able to authenticate via ssh and message "Too many authentication failures" is logged in /var/log/auth.log you probably have more than 2 keys loaded in your ssh agent that are failing to authenticate. To solve this unload keys you are not using from ssh agent (ssh-add -d path/ ssh-add -D), use ssh -i path_to_key or create an appropriate section in your ~/.ssh/config with IdentityFile.
 +
 +===== BOOT on FreeBSD =====
 + ==== Fatal double fault FreeBSD 10.3 - i386 , FreeBSD 11 - i386  ====
 +
 +The fatal double fault is a problem on FreeBSD - i386 with ZFS file system.
 +
 +As described in /usr/src/UPDATING entry 20121223, rebuilding the kernel with options KSTACK_PAGES=4 has been observed to resolve the boot-time crash. 
 +This, however, is not an ideal solution for inclusion in the GENERIC kernel configuration, as increasing KSTACK_PAGES 
 +implicitly decreases available usermode threads in an environment that is already resource-starved. 
 +
 +You must do this steps for new kernel:
 +<code>
 +# mkdir -p /usr/src
 +# svnlite co svn://svn.freebsd.org/base/releng/10.2 /usr/src
 +# make -C /usr/src kernel-toolchain
 +# printf "include GENERIC\noptions KSTACK_PAGES=4\n" > /usr/src/sys/i386/conf/ZFS
 +# make -C /usr/src buildkernel KERNCONF=ZFS
 +# make -C /usr/src installkernel KERNCONF=ZFS
 +</code>
 +
 +
 +For FreeBSD 10.3 - More information on page https://www.freebsd.org/releases/10.3R/errata.html
 +For FreeBSD 11.0 - More information on page https://www.freebsd.org/releases/11.0R/errata.html
 +
 +==== How to boot from live CD ====
 +
 +If is a problem with boot on FreeBSD and cannot run the system.
 +Back to FreeBSD menu and choose option 3. ( Escape to loader prompt )
 +For help in command line is command help or ? (list of commands )
 +help set are options for the command set 
 +
 +For boot from CD is commnad 
 +<code>
 +set boot_cdrom (for mount filesystem)
 +boot
 +</code>
 +
 +Look for a mounted filesystem with command mount.If you haven't zfs filesystem mounted you must run command and connect zpool :
 +<code>
 +zpool import -f zroot
 +</code>
 +
 +
 +==== How to mount disk with geli from live CD  ====
 +
 +Boot live system ...
 +
 +<code>
 +geli attach /dev/ada0p3
 +password: 
 +</code>
 +
 +The command mount only part of filesystem.
 +For example /usr; /tmp; /var; but not /boot
 +<code>
 +zpool import -f /mnt zroot
 +</code>
 +
 +The command mount /boot etc..
 +<code>
 +zfs mount zroot/ROOT/default
 +</code>