⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usermodelinux-howto.txt

📁 linux 内核源代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
  User Mode Linux HOWTO  User Mode Linux Core Team  Mon Nov 18 14:16:16 EST 2002  This document describes the use and abuse of Jeff Dike's User Mode  Linux: a port of the Linux kernel as a normal Intel Linux process.  ______________________________________________________________________  Table of Contents  1. Introduction     1.1 How is User Mode Linux Different?     1.2 Why Would I Want User Mode Linux?  2. Compiling the kernel and modules     2.1 Compiling the kernel     2.2 Compiling and installing kernel modules     2.3 Compiling and installing uml_utilities  3. Running UML and logging in     3.1 Running UML     3.2 Logging in     3.3 Examples  4. UML on 2G/2G hosts     4.1 Introduction     4.2 The problem     4.3 The solution  5. Setting up serial lines and consoles     5.1 Specifying the device     5.2 Specifying the channel     5.3 Examples  6. Setting up the network     6.1 General setup     6.2 Userspace daemons     6.3 Specifying ethernet addresses     6.4 UML interface setup     6.5 Multicast     6.6 TUN/TAP with the uml_net helper     6.7 TUN/TAP with a preconfigured tap device     6.8 Ethertap     6.9 The switch daemon     6.10 Slip     6.11 Slirp     6.12 pcap     6.13 Setting up the host yourself  7. Sharing Filesystems between Virtual Machines     7.1 A warning     7.2 Using layered block devices     7.3 Note!     7.4 Another warning     7.5 uml_moo : Merging a COW file with its backing file  8. Creating filesystems     8.1 Create the filesystem file     8.2 Assign the file to a UML device     8.3 Creating and mounting the filesystem  9. Host file access     9.1 Using hostfs     9.2 hostfs as the root filesystem     9.3 Building hostfs  10. The Management Console     10.1 version     10.2 halt and reboot     10.3 config     10.4 remove     10.5 sysrq     10.6 help     10.7 cad     10.8 stop     10.9 go  11. Kernel debugging     11.1 Starting the kernel under gdb     11.2 Examining sleeping processes     11.3 Running ddd on UML     11.4 Debugging modules     11.5 Attaching gdb to the kernel     11.6 Using alternate debuggers  12. Kernel debugging examples     12.1 The case of the hung fsck     12.2 Episode 2: The case of the hung fsck  13. What to do when UML doesn't work     13.1 Strange compilation errors when you build from source     13.2 (obsolete)     13.3 A variety of panics and hangs with /tmp on a reiserfs  filesystem     13.4 The compile fails with errors about conflicting types for 'open', 'dup', and 'waitpid'     13.5 UML doesn't work when /tmp is an NFS filesystem     13.6 UML hangs on boot when compiled with gprof support     13.7 syslogd dies with a SIGTERM on startup     13.8 TUN/TAP networking doesn't work on a 2.4 host     13.9 You can network to the host but not to other machines on the net     13.10 I have no root and I want to scream     13.11 UML build conflict between ptrace.h and ucontext.h     13.12 The UML BogoMips is exactly half the host's BogoMips     13.13 When you run UML, it immediately segfaults     13.14 xterms appear, then immediately disappear     13.15 Any other panic, hang, or strange behavior  14. Diagnosing Problems     14.1 Case 1 : Normal kernel panics     14.2 Case 2 : Tracing thread panics     14.3 Case 3 : Tracing thread panics caused by other threads     14.4 Case 4 : Hangs  15. Thanks     15.1 Code and Documentation     15.2 Flushing out bugs     15.3 Buglets and clean-ups     15.4 Case Studies     15.5 Other contributions  ______________________________________________________________________  11..  IInnttrroodduuccttiioonn  Welcome to User Mode Linux.  It's going to be fun.  11..11..  HHooww iiss UUsseerr MMooddee LLiinnuuxx DDiiffffeerreenntt??  Normally, the Linux Kernel talks straight to your hardware (video  card, keyboard, hard drives, etc), and any programs which run ask the  kernel to operate the hardware, like so:         +-----------+-----------+----+         | Process 1 | Process 2 | ...|         +-----------+-----------+----+         |       Linux Kernel         |         +----------------------------+         |         Hardware           |         +----------------------------+  The User Mode Linux Kernel is different; instead of talking to the  hardware, it talks to a `real' Linux kernel (called the `host kernel'  from now on), like any other program.  Programs can then run inside  User-Mode Linux as if they were running under a normal kernel, like  so:                     +----------------+                     | Process 2 | ...|         +-----------+----------------+         | Process 1 | User-Mode Linux|         +----------------------------+         |       Linux Kernel         |         +----------------------------+         |         Hardware           |         +----------------------------+  11..22..  WWhhyy WWoouulldd II WWaanntt UUsseerr MMooddee LLiinnuuxx??  1. If User Mode Linux crashes, your host kernel is still fine.  2. You can run a usermode kernel as a non-root user.  3. You can debug the User Mode Linux like any normal process.  4. You can run gprof (profiling) and gcov (coverage testing).  5. You can play with your kernel without breaking things.  6. You can use it as a sandbox for testing new apps.  7. You can try new development kernels safely.  8. You can run different distributions simultaneously.  9. It's extremely fun.  22..  CCoommppiilliinngg tthhee kkeerrnneell aanndd mmoodduulleess  22..11..  CCoommppiilliinngg tthhee kkeerrnneell  Compiling the user mode kernel is just like compiling any other  kernel.  Let's go through the steps, using 2.4.0-prerelease (current  as of this writing) as an example:  1. Download the latest UML patch from     the download page <http://user-mode-linux.sourceforge.net/dl-     sf.html>     In this example, the file is uml-patch-2.4.0-prerelease.bz2.  2. Download the matching kernel from your favourite kernel mirror,     such as:     ftp://ftp.ca.kernel.org/pub/kernel/v2.4/linux-2.4.0-prerelease.tar.bz2     <ftp://ftp.ca.kernel.org/pub/kernel/v2.4/linux-2.4.0-prerelease.tar.bz2>     .  3. Make a directory and unpack the kernel into it.       host%       mkdir ~/uml       host%       cd ~/uml       host%       tar -xzvf linux-2.4.0-prerelease.tar.bz2  4. Apply the patch using       host%       cd ~/uml/linux       host%       bzcat uml-patch-2.4.0-prerelease.bz2 | patch -p1  5. Run your favorite config; `make xconfig ARCH=um' is the most     convenient.  `make config ARCH=um' and 'make menuconfig ARCH=um'     will work as well.  The defaults will give you a useful kernel.  If     you want to change something, go ahead, it probably won't hurt     anything.     Note:  If the host is configured with a 2G/2G address space split     rather than the usual 3G/1G split, then the packaged UML binaries     will not run.  They will immediately segfault.  See ``UML on 2G/2G     hosts''  for the scoop on running UML on your system.  6. Finish with `make linux ARCH=um': the result is a file called     `linux' in the top directory of your source tree.  Make sure that you don't build this kernel in /usr/src/linux.  On some  distributions, /usr/include/asm is a link into this pool.  The user-  mode build changes the other end of that link, and things that include  <asm/anything.h> stop compiling.  The sources are also available from cvs at the project's cvs page,  which has directions on getting the sources. You can also browse the  CVS pool from there.  If you get the CVS sources, you will have to check them out into an  empty directory. You will then have to copy each file into the  corresponding directory in the appropriate kernel pool.  If you don't have the latest kernel pool, you can get the  corresponding user-mode sources with       host% cvs co -r v_2_3_x linux  where 'x' is the version in your pool. Note that you will not get the  bug fixes and enhancements that have gone into subsequent releases.  22..22..  CCoommppiilliinngg aanndd iinnssttaalllliinngg kkeerrnneell mmoodduulleess  UML modules are built in the same way as the native kernel (with the  exception of the 'ARCH=um' that you always need for UML):       host% make modules ARCH=um  Any modules that you want to load into this kernel need to be built in  the user-mode pool.  Modules from the native kernel won't work.  You can install them by using ftp or something to copy them into the  virtual machine and dropping them into /lib/modules/`uname -r`.  You can also get the kernel build process to install them as follows:  1. with the kernel not booted, mount the root filesystem in the top     level of the kernel pool:       host% mount root_fs mnt -o loop  2. run       host%       make modules_install INSTALL_MOD_PATH=`pwd`/mnt ARCH=um  3. unmount the filesystem       host% umount mnt  4. boot the kernel on it  When the system is booted, you can use insmod as usual to get the  modules into the kernel.  A number of things have been loaded into UML  as modules, especially filesystems and network protocols and filters,  so most symbols which need to be exported probably already are.  However, if you do find symbols that need exporting, let  us  <http://user-mode-linux.sourceforge.net/contacts.html>  know, and  they'll be "taken care of".  22..33..  CCoommppiilliinngg aanndd iinnssttaalllliinngg uummll__uuttiilliittiieess  Many features of the UML kernel require a user-space helper program,  so a uml_utilities package is distributed separately from the kernel  patch which provides these helpers. Included within this is:  +o  port-helper - Used by consoles which connect to xterms or ports  +o  tunctl - Configuration tool to create and delete tap devices  +o  uml_net - Setuid binary for automatic tap device configuration  +o  uml_switch - User-space virtual switch required for daemon     transport     The uml_utilities tree is compiled with:       host#       make && make install  Note that UML kernel patches may require a specific version of the  uml_utilities distribution. If you don't keep up with the mailing  lists, ensure that you have the latest release of uml_utilities if you  are experiencing problems with your UML kernel, particularly when  dealing with consoles or command-line switches to the helper programs  33..  RRuunnnniinngg UUMMLL aanndd llooggggiinngg iinn  33..11..  RRuunnnniinngg UUMMLL  It runs on 2.2.15 or later, and all 2.4 kernels.  Booting UML is straightforward.  Simply run 'linux': it will try to  mount the file `root_fs' in the current directory.  You do not need to  run it as root.  If your root filesystem is not named `root_fs', then  you need to put a `ubd0=root_fs_whatever' switch on the linux command  line.  You will need a filesystem to boot UML from.  There are a number  available for download from  here  <http://user-mode-  linux.sourceforge.net/dl-sf.html> .  There are also  several tools  <http://user-mode-linux.sourceforge.net/fs_making.html>  which can be  used to generate UML-compatible filesystem images from media.  The kernel will boot up and present you with a login prompt.  Note:  If the host is configured with a 2G/2G address space split  rather than the usual 3G/1G split, then the packaged UML binaries will  not run.  They will immediately segfault.  See ``UML on 2G/2G hosts''  for the scoop on running UML on your system.  33..22..  LLooggggiinngg iinn  The prepackaged filesystems have a root account with password 'root'  and a user account with password 'user'.  The login banner will  generally tell you how to log in.  So, you log in and you will find

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -