Loading Linux modules
First add to /etc/rc.conf, to enable Linux/ELF binary emulation:
Then either edit /boot/loader.conf to include:
linprocfs_load="YES" linsysfs="YES" linux_load="YES" lindev_load="YES"
To load the module without rebooting type:
% kldload linux
Compiling modules directly into kernel
Alternatively, compile directly into the kernel by adding these options to your custom KERNCONF file in /usr/src/sys/*/conf/:
options COMPAT_LINUX32 # This is used for 64bit processors #options COMPAT_LINUX # This is used for 32bit processors; this option won't work on 64bit processors options LINPROCFS options LINSYSFS device lindev
If this is done, comment out linux related lines in both rc.conf or loader.conf as mentioned in the previous section.
Linux filesystems then need to be mounted via adding the following to /etc/fstab:
linproc /compat/linux/proc linprocfs rw 0 0 linsys /compat/linux/sys linsysfs rw 0 0
The mount command may also be used by reflecting what normally goes into fstab.
To mount ext2, reiserfs and xfs filesystems, some which can only be mounted as read only:
Kernel compilation options:
options REISERFS options EXT2FS #provides limited support for ext3 and ext4 options XFS
Quick load of module options:
% kldload ext2fs % kldload reiserfs
Mount options which can also be translated into fstab:
% mount -t reiserfs /dev/ada* /mnt* % mount -t ext2fs /dev/ada* /mnt* % mount -t xfs /dev/ada* /mnt*
Most of the below is according to messages after compiling ports, or is from the FreeBSD Handbook, these instructions may change over time:
link /tmp shm
compat.linux.osrelease=2.6.18 # This or a similar line is only required if the linux emulated kernel is incompatible or outdated
domainname mydomain.com # this is your network's domain-name without localhost ypserver localhost # my.yp.server
passwd: files nis shadow: files nis group: files nis hosts: files nis dns
/compat/linux/etc/host.conf should look similar to, with an adjustment for your network settings:
order hosts, bind multi on
If the sub-directories don't exist yet, use mkdir -p.
Use the command ldd to find libraries. brandelf is used to label programs as linux files.
% brandelf -t Linux myfile
Installing Linux Centos is a recommended way of adding to Linux compatibility :
% make distclean % cd /usr/ports/emulators/linux_base-c6 % make install distclean