pavement

Linux, configuration

From FreeBSDwiki
Jump to: navigation, search

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 or 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*
% mount -t xfs /dev/ada* /mnt*

More 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/

/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/

/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

Personal tools