FreeBSD by default installs GNU tools with a ‘g’ prefix. In order not to break the built in tools use profile aliases
Category Archives: BSD
BSD GNU PACKS
pkg_add -r gtar
pkg_add -r p5-Convert-Recode
cd /usr/ports/devel/binutils/ && make install clean
pkg_add -r gettext
pkg_add -r gmake
pkg_add -r gawk
cd /usr/ports/lang/gcc44/ && make install clean
pkg_add -r findutils
pkg_add -r gnu-watch
pkg_add -r gnuls
postfix commands
To see mail queue, enter:
# mailq
To remove all mail from the queue, enter:
# postsuper -d ALL
To remove all mails in the deferred queue, enter:
# postsuper -d ALL deferred
Perl module
Located in Ports
Perl module Net::Server
/usr/ports/net/p5-Net-Server/ && make install clean
Step by step install Engine X (nginx) and php-fpm in FreeBSD
1. Install nginx
# cd /usr/ports/www/nginx # make install
choose :
HTTP_MODULE HTTP_REWRITE_MODULE HTTP_SSL_MODULE HTTP_STATUS_MODULE .....
2. Install php
# cd /usr/ports/lang/php5 # make install
choose :
CLI CGI SUHOSIN IPV6 FASTCGI PATHINFO .....
3. Install php-fpm freebsd ports
PHP mrcypt.so libltdl.so.4 error
Error after update
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/mcrypt.so’ – Shared object “libltdl.so.4″ not found, required by “mcrypt.so” in Unknown on line 0
/usr/local/lib/libltdl.so.7
/usr/local/lib/libltdl.so
make a sym link from libltdl.so.4 –> libltdl.so
libltdl.so is a link to libltdl.so.7
ln -s /usr/local/lib/libltdl.so /usr/local/lib/libltdl.so.4
Starting php_fpm.
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/wddx.so’ – /usr/local/lib/php/20060613/wddx.so: Undefined symbol "ps_globals" in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/sqlite.so’ – Cannot open "/usr/local/lib/php/20060613/sqlite.so" in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/mcrypt.so’ – Shared object "libltdl.so.4" not found, required by "mcrypt.so" in Unknown on line 0
The following line has been added to your /usr/local/etc/php/extensions.ini
configuration file to automatically load the installed extension:
extension=sqlite.so
php5-mcrypt-5.2.10
php5-wddx-5.2.10
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/mcrypt.so’ – Shared object "libltdl.so.4" not found, required by "mcrypt.so" in Unknown on line 0
/usr/local/lib/libltdl.so.7
/usr/local/lib/libltdl.so
Adding IP aliases in FreeBSD
Example:
Server’s primary IP: 192.168.1.5
Additional IP’s to add: 192.168.1.10, 192.168.1.15, and 192.168.1.20
Boot-time configuration:
Add it to /etc/rc.conf first (so you don’t forget). In this example, we have a Realtek card called rl0:
ifconfig_rl0=”inet 192.168.1.5 netmask 255.255.255.0″
ifconfig_rl0_alias0=”inet 192.168.1.10 netmask 255.255.255.0″
ifconfig_rl0_alias1=”inet 192.168.1.15 netmask 255.255.255.0″
ifconfig_rl0_alias2=”inet 192.168.1.20 netmask 255.255.255.0″
UBER-IMPORTANT NOTE: Start with the number 0 (zero) any time that you make IP alias configurations in /etc/rc.conf.
This is BAD form:
ifconfig_rl0=”inet 192.168.1.5 netmask 255.255.255.0″
ifconfig_rl0_alias1=”inet 192.168.1.10 netmask 255.255.255.0″
ifconfig_rl0_alias2=”inet 192.168.1.15 netmask 255.255.255.0″
ifconfig_rl0_alias3=”inet 192.168.1.20 netmask 255.255.255.0″
If you do it the wrong way (which means starting alias with anything but alias0), only the primary comes up. Keep that in mind.
Bringing up the new IP’s:
You can do things the extraordinarily dangerous way:
# /etc/rc.network restart
Or, you can follow the recommended steps:
# ifconfig rl0 alias 192.168.1.10 netmask 255.255.255.0
# ifconfig rl0 alias 192.168.1.15 netmask 255.255.255.0
# ifconfig rl0 alias 192.168.1.20 netmask 255.255.255.0
Test your work:
Any good system administrator knows to test things once their configured. Make sure to ping your new IP’s from a source on your network and outside your network (if possible/applicable).
Backing up system
Ok, this is defiantly worth writing… especially for new users
Here i will cover how to backup/restore (to file) FreeBSD using native utilities called dump and restore
note: dump and restore works only for UFS (aka FFS)
Backing up system
To backup system you need to use dump utility
backup:
$ dump -0Lauf /path/to/backups/ad0s1d.dump /dev/ad0s1d
Backup and compress on the fly
$ dump -0Lauf - /dev/ad0s1d | bzip2 > /path/to/backups/ad0s1d.dump
-0 – means to backup entire filesystem
-f name – output to file/device, or to stdout if you use -
-a – you need this if you output to file.
-L – needed if you backup mounted filesystem
Restoring system
to restore system restart in single user mode
format filesystem that you want to restore
in backup example, we backed up /dev/ad0s1d, so let’s format it now
$ newfs -U /dev/ad0s1d
now you need to mount it
$ mkdir /mnt/target $ mount /dev/ad0s1d /mnt/target
Let’s imagine you backed up files to usb stick (da0, in root directory)
we need to mount it
$ mount -t msdosfs /dev/da0 /mnt/usb
Important note: you need space in temp to be able to restore
if you run out of space in tmp, mount some filesystem somewhere and
create symbolic links from /tmp and /var/tmp to that mount point
now to restore from backup you need to cd to dir where you mounted partition that you want to restore
$ cd /mnt/target
to restore from uncompressed backup
$ restore -rf /mnt/usb/ad0s1d.dump
to restore from compressed backup
$ bzcat /mnt/usb/ad0s1d.dump.bz2 | restore -rf -
And that is it
now you can delete file dumpdates (or something like that, check for weird file in target directory, in our case /mnt/target)
now unmount filesystems and reboot
Some notes
you can do incremental backups – backup everything and then backup only files that have changed since (on current backup level) see manual for more info
you can use dump/restore to clone your system to other PC’s
you will probably need to copy Master Boot Record (MBR) as well
to backup MBR:
$ dd if=/dev/ad0 of=/path/to/mbr.img bs=512 count=1
to restore MBR:
$ dd if=/path/to/mbr.img of=/dev/ad0 bs=512 count=1
Tips
* I prefer to compress backup, you can guess why
* if you backup /usr you may delete content of ports directory
this will speed up backup process, and reduce size of backup…
It’s good thing because by the time you will restore /usr from backups
/usr/ports will be outdated, and you will need to update them anyway.
And portsnap works very well (fast) in fetching ports
* I prefer to do full backups, that way you can be 100% sure, there won’t
be any confusing situations
* if you want to do backups while using filesystem, make sure you haven’t
deleted .snap directory, on partition that you want to backup
* if you have backed up encrypted drive, you need to somehow encrypt backups
because if someone gets these files, he can restore them to his pc, and read your files at will. (I used this method in FreeBSD + Geli guide, to encrypt drive, but process can be reversed)
Resources
Update 1
Moving system
You can move system from disk to disk on fly with
$ newfs -U /dev/ad2s1a $ mount /dev/ad2s1a.... /target $ cd /target $ dump -0Lauf - /dev/ad1s1a | restore -rf -
you can do the same using sudo
$ sudo echo $ sudo dump -0Lauf - /dev/ad1s1a | sudo restore -rf -
Update 2
as OpenBSD suggests using gzip instead of bzip2 will seed up compression at cost of larger (very little) archives
so now i suggest using gzip to compress and zcat to uncompress on fly
I’ve tested it, and i was amazed.
No more Bzip2 for me
.bashrc
By default the shell for root is csh. Choose the configure option followed by the User Management, where you add users and groups. After creating users, it will ask for the shell for the users. Choose bash (easiest Shell in FreeBSD). Assuming that you have installed bash, now login as the unprivileged user (non-root) and create. bashrc and .bash_profile files in the home directory.
Edit these files to contain the following. In .bashrc put these statements.
# .bashrc – Bourne Again Shell configuration file # for interactive shells. # file permissions: rwxr-xr-x umask 022 BLOCKSIZE=K; export BLOCKSIZE EDITOR=pico; export EDITOR PAGER=/usr/bin/more; export PAGER
# some useful aliases alias h=’fc -l’ alias j=jobs alias m=$PAGER alias ll=’ls -laFo’ alias ls=’ls -la -G’ alias g=’egrep -i’ alias ll=’ls -laFo’ alias ls=’ls -la -G’ alias g=’egrep -i’
# set prompt PS1=”u@ w $> “
Now for .bash_profile put the following statements:
# .bash_profile – Bourne Again Shell configuration file # for login shells. PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/bin: # file permissions: rwxr-xr-x umask 022 BLOCKSIZE=K; export BLOCKSIZE EDITOR=pico; export EDITOR PAGER=/usr/bin/more; export PAGER
# set ENV to a file invoked each time bash is started # for interactive use. ENV=$HOME/.shrc; export ENV # some useful aliases alias h=’fc -l’ alias j=jobs alias m=$PAGER alias ll=’ls -laFo’ alias ls=’ls -la -G’ alias g=’egrep -i’
# set prompt PS1=”u@w $> “
The above line sets the prompt like this: addy@ ~ $> When you change directory to the following cd /usr/bin, it looks like: addy@ /usr/bin $>
You can also make changes in these files to alter the editor option, as people have their own favourite editors like vi, emacs, pico etc. Also add the following to your .login file in your home directory exec /bin/bash. Here my bash is symbolically linked to /usr/local/bin/bash. Login after that to get bash running .
Now whenever a user (non-root ) wants to use a system administrator command or perform tasks that can be done only by root, he has to `su to root’ using the `su’ command. In order to be a super user (root), the user must be member of group wheel. Normally this is done when you add a user or put the username at the end of the line containing wheel :*: 0: root in /etc/group.
For eg. if user addy is a member of the group wheel. wheel:*:0:root,addy So addy is able to `su to root’. Now is the time for accessing floppy disks.
.bashrc
# .bashrc – Bourne Again SHell configuration file for interactive shells.
# file permissions: rwxr-xr-x
umask 022
#BlockSize in K. Environment variable.
BLOCKSIZE=K; export BLOCKSIZE
#Default editor. In this case its VIM, but you don’t have it yet installed. EDITOR=/usr/local/bin/vim; export EDITOR
#The pager. Again environment variable
PAGER=/usr/bin/less; export PAGER
# some useful aliases
#User friendly alias for updatedb in Linux systems.
alias updatedb=’/usr/libexec/locate.updatedb’
#Shutdown alias.
alias down=’shutdown -h now’
#Alias to show the recent history commands.
alias h=’fc -l’
#Alias to show the jobs.
alias j=jobs
#Alias to pager.
alias m=$PAGER
#Egrep alias.
alias g=’egrep -i’
#renew alias which will read the .bashrc and executes it
alias renew=’source ~/.bashrc’
#Colorful ls alias. Procuses nice colors ![]()
alias ls=’/bin/ls -aFG’
#Ailas to disksize i.e df command.
alias disksize=’df -kh’
#Same for the current dir.
alias dirsize=’du -h -d 1 .’
#alias to free command in Linux
alias free=’top -d1 | head -5 | tail -2′
#Display the path variable.
alias showpath=’echo $PATH | tr -s ”:” ”\012”’
#Counts the files in the directory i.e ls -la | wc -l
alias llc=’echo Total number of files `ll | wc -l` in `pwd`’
#Alias to vim instead of the default vi.
alias vi=vim
# set prompt. A very nice colors ![]()
PS1=”[�33[1;30m][[�33[1;34m]u[�33[1;30m]@[�33[0;35m]h[�33[1;30m]] [�33[0;37m]W [�33[1;30m]$[�33[0m] ”
#Three functions to ease your admin tasks. Found them out in the internet. Credits – unknown.
function findfile() { find . -type f -iname ‘*’$*’*’ -ls ;}
function findtext() { find . -exec egrep $* {} /dev/null ; ; }
function finddir () { find . -type d -iname ‘*’$*’*’ -ls ; }

