home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP_2_98.iso / doc / HOWTO / mini / Linux+FreeBSD < prev    next >
Text File  |  1997-10-08  |  15KB  |  347 lines

  1.   The Linux+FreeBSD mini-HOWTO
  2.   Niels Kristian Bech Jensen, nkbj@image.dk
  3.   v1.1, 3 October 1997
  4.  
  5.   This document describes how to use Linux and FreeBSD on the same sys¡
  6.   tem. It introduces FreeBSD and discuss how the two operating systems
  7.   can interact, e.g.  by sharing swap space. You should probably have
  8.   some experience with Linux and hard drive partitioning (fdisk) before
  9.   you read this document. Do not hesitate to mail me if you have com¡
  10.   ments, questions or suggestions about this document. I would also like
  11.   to hear from people who have experience using Linux together with
  12.   NetBSD or OpenBSD.
  13.  
  14.   1.  What is FreeBSD?
  15.  
  16.   FreeBSD is a free Unix-like operating system much like Linux. The main
  17.   difference is that, while the Linux kernel has been written from
  18.   scratch, FreeBSD is based on the freely redistributable parts of
  19.   4.4BSD (Berkeley Software Distribution) known as 4.4BSD-lite. FreeBSD
  20.   runs only on the Intel PC platform (i386 and higher); a port to the
  21.   DEC Alpha platform is being discussed at the moment. Hardware
  22.   requirements for FreeBSD are much like those for Linux.
  23.  
  24.   The development of FreeBSD is more ``closed'' than the Linux
  25.   development. A core team of developers makes the key decisions
  26.   concerning the project. Big changes are discussed in advance on the
  27.   mailing lists. The FreeBSD project has two development trees (just
  28.   like Linux): ``-current'' and ``-stable''. ``-current'' is where the
  29.   development of new features is going on, while development of the
  30.   ``-stable'' releases mainly are bug fixes.
  31.  
  32.   FreeBSD can be used and (re-)distributed freely just as Linux. Most
  33.   parts of the system are released under the BSD copyright; the rest is
  34.   under the GNU GPL or the GNU LGPL.
  35.  
  36.   You can find more information about FreeBSD (and download the whole
  37.   system) at FreeBSD Inc. <http://www.freebsd.org/>. The newest
  38.   ``-stable'' releases and snapshots of the ``-current'' development
  39.   code are sold on CDROMs by Walnut Creek CDROM <http://www.cdrom.com/>
  40.   (their web- and ftp-servers are running FreeBSD.)
  41.  
  42.   2.  The FreeBSD way of labelling hard drives
  43.  
  44.   Linux and FreeBSD label hard drives and partitions after two
  45.   differents schemes. This section explains the main differences between
  46.   the two schemes.
  47.  
  48.   2.1.  FreeBSD ``slices'' and ``partitions''
  49.  
  50.   FreeBSD needs only one entry in the primary partition table on your
  51.   hard drive. This primary partition is called a ``slice'' in FreeBSD
  52.   terminology. It then uses the program disklabel to make several
  53.   logical partitions in this primary partition. These logical partitions
  54.   are called ``partitions'' in FreeBSD terminology. This concept is
  55.   similar to the way Linux (and DOS) handles logical partitions in an
  56.   extended partition. Note that the Linux fdisk program can't display
  57.   the partitions in a FreeBSD slice, the output is something like this
  58.   (/dev/hda4 is the FreeBSD slice):
  59.  
  60.   hafnium:~# fdisk /dev/hda
  61.  
  62.   Command (m for help): p
  63.  
  64.   Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders
  65.   Units = cylinders of 4032 * 512 bytes
  66.  
  67.      Device Boot   Begin    Start      End   Blocks   Id  System
  68.   /dev/hda1   *        1        1       27    54400+  83  Linux native
  69.   /dev/hda2           28       28      375   701568   83  Linux native
  70.   /dev/hda3          376      376      403    56448   83  Linux native
  71.   /dev/hda4          404      404      621   439488   a5  BSD/386
  72.  
  73.   Command (m for help): q
  74.   hafnium:~#
  75.  
  76.   2.2.  Drive and partition labelling in Linux and FreeBSD
  77.  
  78.   The hard drives are labelled in the following way in Linux and
  79.   FreeBSD:
  80.  
  81.                                Linux           FreeBSD
  82.        First IDE drive         /dev/hda        /dev/wd0
  83.        Second IDE drive        /dev/hdb        /dev/wd1
  84.        First SCSI drive        /dev/sda        /dev/sd0
  85.        Second SCSI drive       /dev/sdb        /dev/sd1
  86.  
  87.   The partitions (FreeBSD slices) on a drive are labelled in the
  88.   following way (/dev/hda is used as an example):
  89.  
  90.                                        Linux           FreeBSD
  91.        First primary partition         /dev/hda1       /dev/wd0s1
  92.        Second primary partition        /dev/hda2       /dev/wd0s2
  93.        Third primary partition         /dev/hda3       /dev/wd0s3
  94.        Fourth primary partition        /dev/hda4       /dev/wd0s4
  95.  
  96.   The partitions in a FreeBSD slice is labelled in the following way
  97.   (/dev/hda4 is the FreeBSD slice in the example):
  98.  
  99.        Linux label     FreeBSD label   Default FreeBSD mount point
  100.        /dev/hda5       /dev/wd0s4a     /
  101.        /dev/hda6       /dev/wd0s4b     swap
  102.        /dev/hda7       /dev/wd0s4e     /var
  103.        /dev/hda8       /dev/wd0s4f     /usr
  104.  
  105.   If you have installed FreeBSD in the /dev/sdb3 slice, and /dev/sdb2 is
  106.   a Linux extended partition containing two logical partitions
  107.   (/dev/sdb5 and /dev/sdb6), the previous example would look like this:
  108.  
  109.   Linux label     FreeBSD label   Default FreeBSD mount point
  110.   /dev/sdb7       /dev/sd1s3a     /
  111.   /dev/sdb8       /dev/sd1s3b     swap
  112.   /dev/sdb9       /dev/sd1s3e     /var
  113.   /dev/sdb10      /dev/sd1s3f     /usr
  114.  
  115.   3.  Sharing swap space between Linux and FreeBSD
  116.  
  117.   This section describes how I got Linux and FreeBSD to share a swap
  118.   partition.  There may be other ways to get the same result. This is
  119.   based on Red Hat Linux release 4.1 and 4.2 (Linux kernel 2.0.29 and
  120.   2.0.30) and FreeBSD 2.2.2. You can install FreeBSD before Linux if you
  121.   want to, just pay attention to the order of the partitions in the
  122.   FreeBSD slice.
  123.  
  124.   3.1.  Installing and preparing Linux
  125.  
  126.   The first step is to install Linux as normal. You have to leave space
  127.   for the FreeBSD slice at you hard drive. You don't have to make a
  128.   Linux swap partition, but if you want one, put it in the space you
  129.   want to allocate for FreeBSD. That way you can delete the Linux swap
  130.   partition later and use the space for FreeBSD.
  131.  
  132.   When you have installed Linux you have to build a new kernel. Read The
  133.   Linux Kernel HOWTO if this is new to you. You have to include UFS file
  134.   system support and BSD disklabel (FreeBSD partition tables) support.
  135.  
  136.        UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y
  137.        BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?]
  138.        (NEW) y
  139.  
  140.   Install the new kernel and reboot. Remove any line including the word
  141.   swap from your /etc/fstab file if you have made a Linux swap
  142.   partition.  Make sure you have a working Linux boot disk with the new
  143.   kernel. You are now ready to install FreeBSD.
  144.  
  145.   3.2.  Installing FreeBSD
  146.  
  147.   Install FreeBSD as described in the FreeBSD documentation. Remove the
  148.   Linux swap partition is you have made one (you can use the FreeBSD
  149.   fdisk program.) Pay attention to the order of the partitions in the
  150.   FreeBSD slice. If you use the default labelling the second partition
  151.   will be the swap partition. Complete the installation of FreeBSD and
  152.   reboot into Linux using the new Linux boot disk.
  153.  
  154.   3.3.  Setting up the FreeBSD swap partition in Linux
  155.  
  156.   Run dmesg when you have booted into Linux. In the output you should
  157.   see something like this:
  158.  
  159.   Partition check:
  160.    hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
  161.  
  162.   This means that /dev/hda4 is your FreeBSD slice, while /dev/hda5,
  163.   /dev/hda6, /dev/hda7 and /dev/hda8 are the FreeBSD partitions. If your
  164.   swap partition is the second partition in the slice, it will be
  165.   /dev/hda6.
  166.  
  167.   You have to put the following line into your /etc/fstab file to enable
  168.   the swap partition:
  169.  
  170.        /dev/hda6       none            swap            sw              0       0
  171.  
  172.   While FreeBSD can use any type of partition as swap space, Linux needs
  173.   a special signature in the swap partition. This signature is made by
  174.   mkswap.  FreeBSD ruins this signature when it uses the shared swap
  175.   partition, so you will have to run mkswap each time you boot into
  176.   Linux. To do this automagically you have to find the script that runs
  177.   swapon at boot time.  In Red Hat Linux it is /etc/rc.d/rc.sysinit. Put
  178.   the following line into that file just before swapon -a:
  179.  
  180.        awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
  181.  
  182.   This will run mkswap on any swap partitions in /etc/fstab every time
  183.   you boot except if they are commented out (having ``#'' as the first
  184.   character in the line.)
  185.  
  186.   Run free to check out the size of the swap space when you have
  187.   rebooted into Linux. You should also reboot into FreeBSD to make sure
  188.   everything works as expected. If it does not, you have probably used
  189.   the wrong partition as swap partition. The only solution to that
  190.   problem is to reinstall FreeBSD and try again. Experience is a great
  191.   teacher. :-)
  192.  
  193.   4.  Booting FreeBSD using LILO
  194.  
  195.   You can easily boot FreeBSD with LILO. Do not install the FreeBSD boot
  196.   loader (Booteasy) if you want to use LILO. Append the following lines
  197.   to your /etc/lilo.conf file and run lilo (the FreeBSD slice being
  198.   /dev/hda4):
  199.  
  200.        other=/dev/hda4
  201.                table=/dev/hda
  202.                label=FreeBSD
  203.  
  204.   If you have installed FreeBSD on the second SCSI drive, use something
  205.   like this (the FreeBSD slice being /dev/sdb2):
  206.        other=/dev/sdb2
  207.                table=/dev/sdb
  208.                loader=/boot/chain.b
  209.                label=FreeBSD
  210.  
  211.   5.  Mounting file systems
  212.  
  213.   5.1.  Mounting UFS file systems under Linux
  214.  
  215.   Unfortunately the UFS support in the Linux kernel is broken. When you
  216.   try to mount a UFS file system, you just get some error messages (the
  217.   file system actually gets mounted, but you cannot read anything from
  218.   it.)
  219.  
  220.   However, there is a new (ALPHA) version of the UFS file system support
  221.   for Linux 2.0.xx kernels on SunSite
  222.   <ftp://sunsite.unc.edu/pub/Linux/ALPHA/ufs/>. It is called U2FS and
  223.   the current version is u2fs-0.4.3.tar.gz. U2FS is installed in the
  224.   following way (assuming u2fs-0.4.3.tar.gz is stored in /usr/src):
  225.  
  226.        cd /usr/src
  227.        tar xvzf u2fs-0.4.3.tar.gz
  228.        patch -p0 -E < u2fs-0.4.3.patch
  229.  
  230.   Now you have to build a new kernel with support for the U2FS file
  231.   system and BSD disklabel. See section ``Installing and preparing
  232.   Linux'' for more information on this. You can leave out UFS file
  233.   system support from the kernel when you use U2FS.
  234.  
  235.   When you have installed the new kernel, you can mount your UFS file
  236.   systems (all the partitions in the FreeBSD slice except the swap
  237.   partition) with a command like this:
  238.  
  239.        mount -t u2fs /dev/hda8 /mnt
  240.  
  241.   The UFS support is read-only. That is; you can read from the UFS file
  242.   systems but you cannot write to them.
  243.  
  244.   5.2.  Mounting ext2fs file systems under FreeBSD
  245.  
  246.   To mount ext2fs file systems under FreeBSD, you first have to build a
  247.   new kernel with ext2fs support. Read the FreeBSD documentation to
  248.   learn how to do that. Put the line
  249.  
  250.        options         "EXT2FS"
  251.  
  252.   in your kernel configuration file for the new kernel.
  253.  
  254.   When you have booted with the new kernel, you can mount an ext2fs file
  255.   system by giving a command like:
  256.  
  257.        mount -t ext2fs /dev/wd0s3 /mnt
  258.  
  259.   Due to a bug in FreeBSD you will have to unmount all ext2fs file
  260.   systems before you shut down FreeBSD. If you shut down FreeBSD with an
  261.   ext2fs file system mounted, FreeBSD cannot sync the UFS file systems.
  262.   This results in fsck being run the next time FreeBSD is booted. This
  263.   bug is reported to have been fixed in the ``-current'' development
  264.   tree.
  265.  
  266.   6.  Running Linux binaries under FreeBSD
  267.  
  268.   FreeBSD has the ability to run Linux binaries, both in a.out and ELF
  269.   formats.  To do this you have to take the following three steps:
  270.  
  271.   1. You have to enable Linux compatibility. To do this (in FreeBSD
  272.      2.2.2 --- details may vary in other versions) you have to edit your
  273.      /etc/rc.conf file and change
  274.  
  275.        linux_enable="NO"
  276.  
  277.   to
  278.  
  279.        linux_enable="YES"
  280.  
  281.   2. You have to install the Linux shared libraries. They are included
  282.      in FreeBSD 2.2.2 as the package linux_lib-2.4.tgz (a newer version
  283.      might be out now.) Run the command
  284.  
  285.        pkg_add <path_to_package>/linux_lib-2.4.tgz
  286.  
  287.   to install the package. <path_to_package> is the directory where the
  288.   package is stored.
  289.  
  290.   3. Install the Linux program(s) you want to run. The program(s) can be
  291.      installed on either UFS or ext2fs file systems. See section
  292.      ``Mounting ext2fs file systems under FreeBSD'' for more information
  293.      about using ext2fs file systems under FreeBSD.
  294.  
  295.   I have successfully run the Linux versions of Applixware 4.3 and
  296.   Netscape 3.01 (both ELF format) under FreeBSD 2.2.2 using this method
  297.   (yes, I know there is a native FreeBSD version of Netscape 4.) Read
  298.   the FreeBSD documentation for more information on this topic.
  299.   7.  References and other documents of interest
  300.  
  301.   The newest version of this mini-HOWTO can be found at my homepage
  302.   <http://www.image.dk/~nkbj/> in several formats (including SGML and
  303.   PostScript.) The document has been translated into Japanese by Mr.
  304.   Teruyoshi Fujiwara as part of the JF project
  305.   <ftp://jf.linux.or.jp/pub/JF/other-formats/>.
  306.  
  307.   The FreeBSD Handbook and The FreeBSD FAQ are distributed with FreeBSD.
  308.   They can also be found at FreeBSD Inc. <http://www.freebsd.org/>.
  309.   This site has a lot of other information about FreeBSD too.
  310.  
  311.   The Linux Kernel HOWTO is released as part of The Linux Documentation
  312.   Project <http://sunsite.unc.edu/LDP/>.
  313.  
  314.   8.  Acknowledgments and Copyright
  315.  
  316.   Thanks to the members of the *BSD user group in Denmark
  317.   <http://hotel.prosa.dk/bsd-dk/> for answering the questions of a
  318.   FreeBSD newbie and to Mr. Takeshi Okazaki for bringing the existence
  319.   of U2FS to my attention.
  320.  
  321.   This document is copyrighted by Niels Kristian Bech Jensen,
  322.   nkbj@image.dk. It is distributed as part of The Linux Documentation
  323.   Project <http://sunsite.unc.edu/LDP/> under the terms described below.
  324.  
  325.   Linux (mini-)HOWTO documents may be reproduced and distributed in
  326.   whole or in part, in any medium physical or electronic, as long as
  327.   this copyright notice is retained on all copies. Commercial
  328.   redistribution and/or printing is allowed and encouraged; however, the
  329.   author would like to be notified of any such activities.
  330.  
  331.   All translations, derivative works, or aggregate works incorporating
  332.   any Linux (mini-)HOWTO documents must be covered under this copyright
  333.   notice. That is, you may not produce a derivative work from a
  334.   (mini-)HOWTO and impose additional restrictions on its distribution.
  335.   Exceptions to these rules may be granted under certain conditions;
  336.   please contact the Linux HOWTO coordinator at the address given below.
  337.  
  338.   If you have questions, please contact Greg Hankins, the Linux HOWTO
  339.   coordinator, at gregh@sunsite.unc.edu via email.
  340.  
  341.   8.1.  Disclaimer
  342.  
  343.   Although the information given in this document is believed to be
  344.   correct, the authors will accept no liability for the content of this
  345.   document. Use the tips and examples given herein at your own risk.
  346.  
  347.