Linux, configuration
Contents |
Loading Linux modules
Quick method
First add to /etc/rc.conf, to enable Linux/ELF binary emulation:
linux_enable="YES"
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
See: kldload, kldstat, and kldunload.
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 and loader.conf as mentioned in the previous section.
Linux filesystems
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
More etc/ configurations
Most of the below is according to messages after compiling ports, or is from the FreeBSD Handbook, these instructions may change over time:
/etc/devfs.conf :
link /tmp shm
/etc/sysctl.conf :
compat.linux.osrelease=2.6.18 # This or a similar line is only required if the linux emulated kernel is incompatible or outdated
/compat/linux/etc/yp.conf
domainname mydomain.com # this is your network's domain-name without localhost ypserver localhost # my.yp.server
/compat/linux/etc/nsswitch.conf
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".
Emulated files
Use the command ldd to find libraries. brandelf is used to label programs as linux files.
% brandelf -t Linux myfile
Ports
Installing Linux Centos is a recommended way of adding to Linux compatibility :
% make distclean % cd /usr/ports/emulators/linux_base-c6 % make install distclean
References
- Related manpages; and filesystem documentation
- FreeBSD Handbook: Linux® Binary Compatibility
- FreeBSD Handbook: Linux® File Systems