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 UML hangs on boot after mounting devfs
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
Linux2.6.11源码
需积分: 0 81 浏览量
更新于2022-12-15
收藏 44.42MB GZ 举报
Linux 2.6.11源码是Linux操作系统的一个重要版本,它包含了构成这个内核的所有源代码。这个源码库对于理解Linux操作系统的工作原理、进行内核开发、定制内核或者进行系统优化来说,是不可或缺的资源。下面将详细讨论Linux 2.6.11版本中的关键知识点。
1. 内核架构:
Linux内核采用微内核设计,由多个子系统组成,包括进程管理、内存管理、文件系统、网络协议栈、设备驱动等。在2.6.11版本中,这些子系统都经过精心设计和优化,以提高系统的稳定性和效率。
2. 进程管理:
在这个版本中,Linux内核支持多任务并行执行,通过调度器来决定哪个进程应该获得CPU时间。2.6.11引入了O(1)调度器,这是一个改进的调度策略,可以快速地切换进程,降低了调度开销。
3. 内存管理:
Linux 2.6.11的内存管理包括页分配器、物理内存管理、虚拟内存和交换机制。它使用分页技术来映射和管理物理内存,同时支持内存分段以防止数据溢出。此外,还包含伙伴系统用于分配和回收内存块。
4. 文件系统:
Linux支持多种文件系统,如EXT2、EXT3、ReiserFS、XFS等。2.6.11版本可能对这些文件系统进行了优化,提高了读写性能和数据一致性。此外,还有VFS(虚拟文件系统)层,允许内核透明地处理不同类型的文件系统。
5. 网络协议栈:
Linux 2.6.11的网络部分实现了TCP/IP协议族,包括TCP、UDP、IP和其他较低层次的协议。这个版本可能包含了对IPv6的支持,以及对网络流量控制和拥塞避免的改进。
6. 设备驱动:
Linux内核的设备驱动程序接口允许与硬件设备通信。2.6.11版本涵盖了各种硬件设备,如显卡、声卡、网卡、硬盘控制器等。这些驱动程序使内核能够识别和操作硬件,提供了对硬件资源的抽象化访问。
7. 安全与权限:
Linux内核采用权限模型来控制进程的访问权限。2.6.11可能包括了SELinux(安全增强型Linux)支持,增强了系统的安全性,通过强制访问控制策略防止未授权的访问。
8. 并发与同步:
为了在多处理器系统上运行,Linux 2.6.11内核采用了锁和信号量等机制来保证并发访问资源的安全性。这些同步原语确保了多线程或多进程间的正确交互。
9. 虚拟化支持:
2.6.11内核可能开始引入初步的虚拟化技术,如KVM(Kernel-based Virtual Machine),允许在单一主机上运行多个独立的操作系统实例。
10. 编译与构建:
构建Linux内核通常涉及配置、编译和安装过程。用户可以使用make工具链,通过.config文件自定义内核配置,然后编译生成适合特定硬件平台的内核。
通过深入研究Linux 2.6.11源码,开发者可以学习到操作系统设计的核心原理,同时也为定制和优化内核提供了可能性。这对于任何对Linux操作系统有深入兴趣的人来说,都是一个宝贵的资源。

NasingaLuo
- 粉丝: 3
最新资源
- 【IOS应用源码】分类.zip
- 【IOS应用源码】分享到facebook的API.zip
- 【IOS应用源码】分享action sheet.zip
- 【IOS应用源码】分享最近给别人做的一个项目,供学习交流参考~.zip
- 【IOS应用源码】个人信息输入表(支持表单增删).zip
- 基于心电信号时空特征的QRS波检测算法matlab 2022a仿真:功能介绍及包含内容
- 【IOS应用源码】改进的simpleFTPSampleiphoneftp.orig.zip
- 【IOS应用源码】感恩---奉上大量samplecode(共7部分).zip
- 【IOS应用源码】各种效果的字体.zip
- 【IOS应用源码】给大家分享代码 如何自定义协议从自己的一个app打开另一个app iPhoneURLScheme_Reference.pdf.zip
- 【IOS应用源码】各种效果的字体2.zip
- 【IOS应用源码】共享一个自己做的,采用了cocos2d和chipmunk的DEMOCrayonBallDemo.zip
- 【IOS应用源码】宫格视图(支持横屏)LOGO.zip
- 【IOS应用源码】功能完整的瀑布墙视图效果.zip
- 【IOS应用源码】国家拾取器.zip
- 【IOS应用源码】股票的走势线.zip