<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://linux-vserver.at/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://linux-vserver.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jze</id>
		<title>Linux-VServer - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://linux-vserver.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jze"/>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Special:Contributions/Jze"/>
		<updated>2026-04-09T14:53:29Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://linux-vserver.at/DRBD</id>
		<title>DRBD</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/DRBD"/>
				<updated>2009-04-08T11:07:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Vserver+DRBD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A Vserver guest mirrored by DRBD with heartbeat failover ==&lt;br /&gt;
&lt;br /&gt;
The idea is simple:&lt;br /&gt;
Install a vserver on a DRBD resource and let it failover to the other node of a cluster.&lt;br /&gt;
&lt;br /&gt;
This configuration uses vserver, DRBD and heartbeat. This page will not describe, how these packages are installed and configured. Only the important topics are mentioned.&lt;br /&gt;
&lt;br /&gt;
Steps of installation:&lt;br /&gt;
* compile a vserver kernel&lt;br /&gt;
* compile the DRBD module against this kernel&lt;br /&gt;
* install the kernel, the module and reboot&lt;br /&gt;
* install the user space utilities of DRBD, vserver and heartbeat&lt;br /&gt;
* install the same packages at the second node&lt;br /&gt;
* configure and activate a DRBD resource&lt;br /&gt;
* make the DRBD resource primary on one node&lt;br /&gt;
* create a journalled filesystem (ext3, xfs, reiser) on top of the DRBD device&lt;br /&gt;
* mount the DRBD device as /var/lib/vservers/&amp;lt;vserver-name&amp;gt;&lt;br /&gt;
* install a vserver&lt;br /&gt;
* finish configuration&lt;br /&gt;
* sync the configuration to the other node&lt;br /&gt;
&lt;br /&gt;
==In detail==&lt;br /&gt;
&lt;br /&gt;
===Install the necessary packages===&lt;br /&gt;
On Debian Sarge we can use ready packages. Your &amp;lt;tt&amp;gt;/etc/apt/sources.list&amp;lt;/tt&amp;gt; should have an entry pointing to unstable.&lt;br /&gt;
 apt-get update&lt;br /&gt;
&lt;br /&gt;
Maybe some additional packages are necessary:&lt;br /&gt;
 apt-get install libdb3-dev libncurses-dev docbook-utils &lt;br /&gt;
 apt-get install fakeroot dpatch&lt;br /&gt;
&lt;br /&gt;
Get the kernel source and unpack it:&lt;br /&gt;
 apt-get install linux-source-2.6.12&lt;br /&gt;
 cd /usr/src&lt;br /&gt;
 tar xjf /usr/src/linux-source-2.6.12.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Maybe you want to have your old .config&lt;br /&gt;
 cd linux-source-2.6.12&lt;br /&gt;
 cp /boot/config-2.6.12-1-386 .config&lt;br /&gt;
&lt;br /&gt;
Now it's time to install patches:&lt;br /&gt;
 apt-get install util-vserver -t unstable&lt;br /&gt;
 apt-get install kernel-patch-vserver -t unstable&lt;br /&gt;
&lt;br /&gt;
Compile the Kernel:&lt;br /&gt;
 make-kpkg --rootcmd fakeroot --revision custom01 --added-patches  vserver--append-to-version +vserver --initrd binary-arch&lt;br /&gt;
&lt;br /&gt;
Now you should find a .deb ready to install:&lt;br /&gt;
 cd ..&lt;br /&gt;
 dpkg -i kernel-image-2.6.12+vserver_custom01_i386.deb&lt;br /&gt;
&lt;br /&gt;
The configuration of GRUB should be updated now to boot the new kernel - try a reboot.&lt;br /&gt;
&lt;br /&gt;
Install the DRBD packages:&lt;br /&gt;
 apt-get install drbd0.7-module-source -t unstable&lt;br /&gt;
 apt-get install drbd0.7-utils -t unstable&lt;br /&gt;
&lt;br /&gt;
Unpack the module source:&lt;br /&gt;
 cd /usr/src/&lt;br /&gt;
 tar xzf drbd0.7.tar.gz&lt;br /&gt;
&lt;br /&gt;
Compile the DRBD module:&lt;br /&gt;
 cd linux-source-2.6.12&lt;br /&gt;
 make-kpkg --append-to-version +vserver modules_image&lt;br /&gt;
&lt;br /&gt;
Install the module:&lt;br /&gt;
 cd ..&lt;br /&gt;
 dpkg -i /usr/src/drbd0.7-module-2.6.12+vserver_0.7.11-1+custom01_i386.deb&lt;br /&gt;
 update-modules&lt;br /&gt;
 modprobe drbd&lt;br /&gt;
&lt;br /&gt;
===Prepare the disk space===&lt;br /&gt;
You will need some block device like &amp;lt;tt&amp;gt;/dev/hdaX&amp;lt;/tt&amp;gt;, or a better choice is to use LVM.&lt;br /&gt;
 lvcreate -L3000 -nlvvs03 vg0&lt;br /&gt;
&lt;br /&gt;
A recommended method is, to have DRBD metadata on an extra block device for each DRBD device.&lt;br /&gt;
&lt;br /&gt;
Prepare space for it:&lt;br /&gt;
 lvcreate -L132 -nlvvs03md vg0&lt;br /&gt;
&lt;br /&gt;
===Configure DRBD===&lt;br /&gt;
Create an entry in &amp;lt;tt&amp;gt;/etc/drbd.conf&amp;lt;/tt&amp;gt; using your favorite editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource vs03 {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  startup {&lt;br /&gt;
    wfc-timeout  100;&lt;br /&gt;
    degr-wfc-timeout 120;    # 2 minutes.&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error   pass_on;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  net {&lt;br /&gt;
    # sndbuf-size 512k;&lt;br /&gt;
    # timeout       60;    #  6 seconds  (unit = 0.1 seconds)&lt;br /&gt;
    # connect-int   10;    # 10 seconds  (unit = 1 second)&lt;br /&gt;
    # ping-int      10;    # 10 seconds  (unit = 1 second)&lt;br /&gt;
    # max-buffers     2048;&lt;br /&gt;
    # max-epoch-size  2048;&lt;br /&gt;
    # ko-count 4;&lt;br /&gt;
    # on-disconnect reconnect;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M;&lt;br /&gt;
    group 1;&lt;br /&gt;
    al-extents 257;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  on cel600 {&lt;br /&gt;
    device     /dev/drbd1;&lt;br /&gt;
    disk       /dev/vg0/lvvs03;&lt;br /&gt;
    address    192.168.0.22:7789;&lt;br /&gt;
    meta-disk  /dev/vg0/lvvs03md[0];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  on xp2400 {&lt;br /&gt;
    device    /dev/drbd1;&lt;br /&gt;
    disk      /dev/vg0/lvvs03;&lt;br /&gt;
    address   192.168.0.21:7789;&lt;br /&gt;
    meta-disk /dev/vg0/lvvs03md[0];&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start DRBD&lt;br /&gt;
 /etc/init.d/drbd start&lt;br /&gt;
&lt;br /&gt;
The DRBD resource is in an undefined state. It needs to be forced to be 'primary' on the current node.&lt;br /&gt;
 drbdsetup /dev/drbd1 primary --do-what-I-say&lt;br /&gt;
&lt;br /&gt;
Obviously a filesystem is needed on top of DRBD:&lt;br /&gt;
 mke2fs -j /dev/drbd1&lt;br /&gt;
&lt;br /&gt;
Also we need a mount point somewhere:&lt;br /&gt;
 mkdir /mnt/vs03&lt;br /&gt;
&lt;br /&gt;
As heartbeat is intended to manage the vserver, using the heartbeat script for mounting is a first test:&lt;br /&gt;
 /etc/ha.d/resource.d/Filesystem /dev/drbd1 /mnt/vs03 ext3 start&lt;br /&gt;
&lt;br /&gt;
=== Install the vserver guest===&lt;br /&gt;
There are many methods how to install a vserver. Here 'debootstrap' is used. The important option is '--rootdir' to force the installation to the DRBD device.&lt;br /&gt;
 vserver -v vs03 build --force --rootdir /mnt/vs03 \&lt;br /&gt;
 -m debootstrap --hostname vs03.nack.at \&lt;br /&gt;
 --netdev eth0 --interface 192.168.0.3/24 --context 3 -- \&lt;br /&gt;
 -d sarge -m http://ftp.at.debian.org/debian/&lt;br /&gt;
&lt;br /&gt;
We could start the vserver now. But first we try to make the configuration more pretty.&lt;br /&gt;
 cd /mnt/vs03/vs03/etc/rc0.d&lt;br /&gt;
 rm K20makedev K25hwclock.sh S30urandom S31umountnfs.sh  S35networking S36ifupdown S40umountfs S90halt K89klogd&lt;br /&gt;
 cd ../rc6.d&lt;br /&gt;
 rm K20makedev K25hwclock.sh S30urandom S31umountnfs.sh  S35networking S36ifupdown S40umountfs S90reboot K89klogd&lt;br /&gt;
 cd ../rcS.d&lt;br /&gt;
 rm S05keymap.sh S48console-screen.sh S50hwclock.sh S40networking  S45mountnfs.sh S10checkroot.sh S02mountvirtfs&lt;br /&gt;
 rm S30procps.sh S35mountall.sh S36mountvirtfs S39ifupdown S30checkfs.sh S18ifupdown-clean S18hwclockfirst.sh&lt;br /&gt;
 cd ../rc2.d&lt;br /&gt;
 rm S20makedev S11klogd&lt;br /&gt;
&lt;br /&gt;
If we want to have virtual IPs in the host context managed by heartbeat, there can be conflicts (and funny effects), if we do not 'name' the alias of the vserver IP.&lt;br /&gt;
 echo vs03 &amp;gt; /etc/vservers/vs03/interfaces/0/name&lt;br /&gt;
&lt;br /&gt;
sshd should only listen to the IPs of the host context:&lt;br /&gt;
 xp2400:/# cat /etc/ssh/sshd_config | grep ListenAddress&lt;br /&gt;
 ListenAddress 192.168.0.21:22&lt;br /&gt;
 ListenAddress 192.168.0.20:22&lt;br /&gt;
&lt;br /&gt;
We want to limit the vserver to 1 GB AS/VM (virtual address space) and 128 MB RSS (real memory). Note, that the units are pages.&lt;br /&gt;
 xp2400:/# mkdir /etc/vservers/vs03/rlimits&lt;br /&gt;
 xp2400:/usr/src# echo 250000 &amp;gt; /etc/vservers/vs03/rlimits/as&lt;br /&gt;
 xp2400:/# echo 32000 &amp;gt; /etc/vservers/vs03/rlimits/rss&lt;br /&gt;
&lt;br /&gt;
We want control CPU consumption:&lt;br /&gt;
 xp2400:/# echo sched_prio &amp;gt; /etc/vservers/vs03/flags&lt;br /&gt;
 xp2400:/# echo 6 &amp;gt; /etc/vservers/vs03/schedule&lt;br /&gt;
 xp2400:/# echo 30 &amp;gt;&amp;gt; /etc/vservers/vs03/schedule&lt;br /&gt;
 xp2400:/# echo 1000 &amp;gt;&amp;gt; /etc/vservers/vs03/schedule&lt;br /&gt;
 xp2400:/# echo 200 &amp;gt;&amp;gt; /etc/vservers/vs03/schedule&lt;br /&gt;
 xp2400:/# echo 3000 &amp;gt;&amp;gt; /etc/vservers/vs03/schedule&lt;br /&gt;
 xp2400:/# echo dummy &amp;gt;&amp;gt; /etc/vservers/vs03/schedule&lt;br /&gt;
 xp2400:/# cat /etc/vservers/vs03/schedule&lt;br /&gt;
 6&lt;br /&gt;
 30&lt;br /&gt;
 1000&lt;br /&gt;
 200&lt;br /&gt;
 3000&lt;br /&gt;
 dummy&lt;br /&gt;
&lt;br /&gt;
After these checks it's time to start the vserver:&lt;br /&gt;
 xp2400:/# vserver vs03 start&lt;br /&gt;
&lt;br /&gt;
Check if the interface is nicely named and shown with ifconfig:&lt;br /&gt;
 xp2400:/#  ip addr show&lt;br /&gt;
 [...]&lt;br /&gt;
 2: eth0: &amp;lt;BROADCAST,MULTICAST,UP&amp;gt; mtu 1500 qdisc pfifo_fast qlen 1000&lt;br /&gt;
     link/ether 00:30:bd:6b:d6:8f brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet 192.168.0.21/24 brd 192.168.0.255 scope global eth0&lt;br /&gt;
     inet 192.168.0.3/24 brd 192.168.0.255 scope global secondary eth0:vs03&lt;br /&gt;
     inet6 fe80::230:bdff:fe6b:d68f/64 scope link&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 &lt;br /&gt;
 xp2400:/# ifconfig&lt;br /&gt;
 eth0      Link encap:Ethernet  [...]&lt;br /&gt;
 &lt;br /&gt;
 eth1      [...]&lt;br /&gt;
 &lt;br /&gt;
 eth0:vs03 Link encap:Ethernet  HWaddr 00:30:BD:6B:D6:8F&lt;br /&gt;
           inet addr:192.168.0.3  Bcast:192.168.0.255  Mask:255.255.255.0&lt;br /&gt;
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           Interrupt:177 Base address:0xd000&lt;br /&gt;
&lt;br /&gt;
Enter the vserver:&lt;br /&gt;
 xp2400:/# vserver vs03 enter&lt;br /&gt;
&lt;br /&gt;
In the vserver we check the base configuration and install some packages.&lt;br /&gt;
 vs03:/# base-config&lt;br /&gt;
 vs03:/# apt-get update&lt;br /&gt;
 vs03:/# apt-get install locales&lt;br /&gt;
 vs03:/# apt-get install less&lt;br /&gt;
 vs03:/# nano /etc/resolv.conf&lt;br /&gt;
 vs03:/# ping www.linux-vserver.org&lt;br /&gt;
&lt;br /&gt;
We want to install at least one service, sshd. &lt;br /&gt;
 vs03:/# apt-get install ssh&lt;br /&gt;
 vs03:/# nano /etc/ssh/sshd_config&lt;br /&gt;
 vs03:/# cat /etc/ssh/sshd_config | grep ListenAddress&lt;br /&gt;
 ListenAddress 192.168.0.3:22&lt;br /&gt;
 vs03:/# /etc/init.d/ssh restart&lt;br /&gt;
 Restarting OpenBSD Secure Shell server: sshd.&lt;br /&gt;
 vs03:/# passwd&lt;br /&gt;
 Enter new UNIX password:&lt;br /&gt;
 Retype new UNIX password:&lt;br /&gt;
 passwd: password updated successfully&lt;br /&gt;
 vs03:/# exit&lt;br /&gt;
 logout&lt;br /&gt;
&lt;br /&gt;
Test the ssh login:&lt;br /&gt;
 xp2400:/# ssh root@192.168.0.3&lt;br /&gt;
 The authenticity of host '192.168.0.3 (192.168.0.3)' can't be established.&lt;br /&gt;
 RSA key fingerprint is e2:19:d1:8d:7f:ac:0a:ce:12:f5:06:b7:ae:41:96:59.&lt;br /&gt;
 Are you sure you want to continue connecting (yes/no)? yes&lt;br /&gt;
 Warning: Permanently added '192.168.0.3' (RSA) to the list of known hosts.&lt;br /&gt;
 Password: &amp;lt;secret&amp;gt;&lt;br /&gt;
 vs03:~#&lt;br /&gt;
&lt;br /&gt;
As another service Apache2 should be used:&lt;br /&gt;
 vs03:/# apt-get install apache2&lt;br /&gt;
 [...]&lt;br /&gt;
 Starting web server: Apache2(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80&lt;br /&gt;
 no listening sockets available, shutting down&lt;br /&gt;
 Unable to open logs&lt;br /&gt;
 invoke-rc.d: initscript apache2, action &amp;quot;start&amp;quot; failed.&lt;br /&gt;
 &lt;br /&gt;
 Setting up apache2 (2.0.54-4) ...&lt;br /&gt;
&lt;br /&gt;
To avoid the above error:&lt;br /&gt;
 vs03:/# nano /etc/apache2/ports.conf&lt;br /&gt;
 vs03:/# cat /etc/apache2/ports.conf&lt;br /&gt;
 Listen 192.168.0.3:80&lt;br /&gt;
 vs03:/# /etc/init.d/apache2 start&lt;br /&gt;
 Starting web server: Apache2(98)Address already in use: make_sock: could not bind to address 192.168.0.3:80&lt;br /&gt;
 no listening sockets available, shutting down&lt;br /&gt;
 Unable to open logs&lt;br /&gt;
&lt;br /&gt;
Do we have an Apache listening on the vserver IP in the host context?&lt;br /&gt;
 xp2400:/# cat /etc/apache2/ports.conf&lt;br /&gt;
 Listen 80&lt;br /&gt;
 xp2400:/# nano /etc/apache2/ports.conf&lt;br /&gt;
 xp2400:/# cat /etc/apache2/ports.conf&lt;br /&gt;
 Listen 192.168.0.21:80&lt;br /&gt;
 Listen 127.0.0.1:80&lt;br /&gt;
 xp2400:/# /etc/init.d/apache2 restart&lt;br /&gt;
 Forcing reload of web server: Apache2.&lt;br /&gt;
 &lt;br /&gt;
 vs03:/# /etc/init.d/apache2 start&lt;br /&gt;
 Starting web server: Apache2.&lt;br /&gt;
 &lt;br /&gt;
 xp2400:/# lynx http://192.168.0.3/&lt;br /&gt;
   Test Page for Apache Installation&lt;br /&gt;
 &lt;br /&gt;
   If you can see this, it means that the installation of the Apache web&lt;br /&gt;
   server software on this system was successful. You may now add content&lt;br /&gt;
   to this directory and replace this page.&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
The configuration on one node is ready.&lt;br /&gt;
&lt;br /&gt;
To be continued ...&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_migrated_pages</id>
		<title>List of migrated pages</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_migrated_pages"/>
				<updated>2009-04-03T08:03:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are already migrated to the new wiki.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of pages not migrated yet]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
| ArchVserver ||[[Installation on ArchLinux]]&lt;br /&gt;
|-&lt;br /&gt;
|Caps+and+Flags || [[Capabilities and Flags]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|Changelog26-Devel || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevel26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevelExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogStableExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|chroot-barrier || [[Secure chroot Barrier]]&lt;br /&gt;
|-&lt;br /&gt;
|Dates+and+Planning || [[News]]&lt;br /&gt;
|-&lt;br /&gt;
|Documentation || [[Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|Examples || [[Do I need Linux-VServer]]&lt;br /&gt;
|-&lt;br /&gt;
|FrequentlyAskedQuestions || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooGuestHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooHostHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Hacker+Page || [[Sandbox]]&lt;br /&gt;
|-&lt;br /&gt;
|Hall+of+Fame || [[Hall of Fame]]&lt;br /&gt;
|-&lt;br /&gt;
|HistoryList || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|HowTo+Read+ProcFS || [[HowTo_Read_ProcFS]]&lt;br /&gt;
|-&lt;br /&gt;
|HowTo+Read+ProcFS-French || [[HowTo_Read_ProcFS/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|HowtoSSHLogin || [[SSH login]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux VServer Howto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03-espaniol || [[Paper/es]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-self-definition || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer || [[Welcome to Linux-VServer.org]]&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki+GIT || [[Wiki Team]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces || [[Namespaces]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces-French || [[Namespaces/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|ProblematicPrograms || [[Problematic Programs]]&lt;br /&gt;
|-&lt;br /&gt;
|ProjectOverview || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|RecentChanges || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|Related+Projects || [[Related Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|Release+FAQ || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Resource+Limits || [[Resource Limits]]&lt;br /&gt;
|-&lt;br /&gt;
|short+presentation || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools+and+patches || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|VirtualServer || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConcept || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConfiguration || [[VServerConfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|VServer+Hosting || [[VServer Hosting]]&lt;br /&gt;
|-&lt;br /&gt;
|Vservers+and+X || [[Vservers and X]]&lt;br /&gt;
|-&lt;br /&gt;
|WikiStat || [[Special:Allpages]]&lt;br /&gt;
|-&lt;br /&gt;
|WorkingPrograms || [[Working programs]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-04-03T08:02:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
# http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
# http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
# http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
# http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
# http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
# http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
# http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
# http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
# http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
# http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
# http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
# http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
# http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel-French&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/HowTo_Read_ProcFS</id>
		<title>HowTo Read ProcFS</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/HowTo_Read_ProcFS"/>
				<updated>2009-04-03T08:02:04Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Information in /proc/virtual==&lt;br /&gt;
   /proc/virtual&lt;br /&gt;
     .../info&lt;br /&gt;
 &lt;br /&gt;
   /proc/virtual/&amp;lt;pid&amp;gt;&lt;br /&gt;
     .../info&lt;br /&gt;
     .../status&lt;br /&gt;
     .../sched&lt;br /&gt;
     .../cvirt&lt;br /&gt;
     .../cacct&lt;br /&gt;
     .../limit&lt;br /&gt;
&lt;br /&gt;
===/proc/virtual/info===&lt;br /&gt;
===/proc/virtual/&amp;lt;xid&amp;gt;===&lt;br /&gt;
This directory contains several files which can provide valuable information on the current context state and settings.&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/info  ====&lt;br /&gt;
 ID:     1001&lt;br /&gt;
 Info:   83c37000&lt;br /&gt;
 Init:   0&lt;br /&gt;
&lt;br /&gt;
this shows the context id, vx_info location and init pid&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/status ====&lt;br /&gt;
 UseCnt: 38&lt;br /&gt;
 Tasks:  16&lt;br /&gt;
 Flags:  0000000000000000&lt;br /&gt;
 BCaps:  00000000d46c04ff&lt;br /&gt;
 CCaps:  0000000000000000&lt;br /&gt;
 Ticks:  0&lt;br /&gt;
&lt;br /&gt;
this contains the usage count (references) and task count, as well as the context flags, capability boundary and context capabilities&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/sched ====&lt;br /&gt;
 Token:                 0&lt;br /&gt;
 FillRate:              1&lt;br /&gt;
 Interval:              4&lt;br /&gt;
 TokensMin:             6&lt;br /&gt;
 TokensMax:            50&lt;br /&gt;
 PrioBias:              0&lt;br /&gt;
 VaVaVoom:              0&lt;br /&gt;
 cpu 0: 0 0 0&lt;br /&gt;
shows the current amount of tokens, scheduler parameters (fill rate, interval, min/max), the priority bias and the calculated vavavoom (priority bonus)&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/cacct  ====&lt;br /&gt;
 UNSPEC:            0/0                             0/0                             0/0           &lt;br /&gt;
 UNIX:             35/2375                         35/2375                          0/0           &lt;br /&gt;
 INET:             12/531                          56/1937                         57/1705        &lt;br /&gt;
 INET6:             0/0                             0/0                             0/0           &lt;br /&gt;
 OTHER:             0/0                             0/0                             0/0           &lt;br /&gt;
 forks:  0&lt;br /&gt;
&lt;br /&gt;
this accounts socket messages for the listed protocols, as incoming messages/bytes and outgoing messages/bytes&lt;br /&gt;
&lt;br /&gt;
====/proc/virtual/&amp;lt;xid&amp;gt;/cvirt ====&lt;br /&gt;
 BiasUptime:     49.73&lt;br /&gt;
 SysName:        Linux&lt;br /&gt;
 NodeName:       XXXX.test.org&lt;br /&gt;
 Release:        2.6.11-rc5&lt;br /&gt;
 Version:        #12 Sun Feb 27 01:07:29 CET 2005&lt;br /&gt;
 Machine:        i686&lt;br /&gt;
 DomainName:     &lt;br /&gt;
 nr_threads:     16&lt;br /&gt;
 nr_running:     0&lt;br /&gt;
 nr_unintr:      0&lt;br /&gt;
 nr_onhold:      0&lt;br /&gt;
 load_updates:   14585&lt;br /&gt;
 loadavg:        0.00 0.00 0.00&lt;br /&gt;
 total_forks:    272&lt;br /&gt;
&lt;br /&gt;
this contains the uptime bias, utsname settings (sys, node, rel, vers, machine, domain), the number of threads, thread stats (running, uninterruptible, on hold), the number of load updates, the load averages (1,5,15) and the number of forks&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/limit  ====&lt;br /&gt;
 PROC:           16              17              -1           0&lt;br /&gt;
 VM:          14440           15331              -1           0&lt;br /&gt;
 VML:             0               0              -1           0&lt;br /&gt;
 RSS:          5478            5847              -1           0&lt;br /&gt;
 ANON:         1516            1516              -1           0&lt;br /&gt;
 FILES:         140             155              -1           0&lt;br /&gt;
 OFD:           122             122              -1           0&lt;br /&gt;
 LOCKS:           1               3              -1           0&lt;br /&gt;
 SOCK:            9               9              -1           0&lt;br /&gt;
 MSGQ:            0               0              -1           0&lt;br /&gt;
 SHM:             0               0              -1           0&lt;br /&gt;
&lt;br /&gt;
limit columns are: &lt;br /&gt;
# current &lt;br /&gt;
# max observed &lt;br /&gt;
# limit &lt;br /&gt;
# number of hits &lt;br /&gt;
&lt;br /&gt;
limit rows are: &lt;br /&gt;
*processes, &lt;br /&gt;
*virtual memory, &lt;br /&gt;
*locked memory, &lt;br /&gt;
*resident set size, &lt;br /&gt;
*anonymous memory, &lt;br /&gt;
*number of files, &lt;br /&gt;
*filedescriptors, &lt;br /&gt;
*locks, &lt;br /&gt;
*sockets, &lt;br /&gt;
*message queues, &lt;br /&gt;
*shared memory&lt;br /&gt;
&lt;br /&gt;
==Debug settings in /proc/sys/vserver==&lt;br /&gt;
   /proc/sys/vserver&lt;br /&gt;
     .../debug_switch&lt;br /&gt;
     .../debug_xid&lt;br /&gt;
     .../debug_cvirt&lt;br /&gt;
     .../debug_limit&lt;br /&gt;
     .../debug_dlim&lt;br /&gt;
     .../debug_nid&lt;br /&gt;
     .../debug_net&lt;br /&gt;
&lt;br /&gt;
===/proc/sys/vserver/debug_switch===&lt;br /&gt;
===/proc/sys/vserver/debug_xid===&lt;br /&gt;
===/proc/sys/vserver/debug_cvirt===&lt;br /&gt;
===/proc/sys/vserver/debug_limit===&lt;br /&gt;
===/proc/sys/vserver/debug_dlim===&lt;br /&gt;
===/proc/sys/vserver/debug_nid===&lt;br /&gt;
===/proc/sys/vserver/debug_net===&lt;br /&gt;
&lt;br /&gt;
[[Category:ProcFS]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/HowTo_Read_ProcFS/fr</id>
		<title>HowTo Read ProcFS/fr</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/HowTo_Read_ProcFS/fr"/>
				<updated>2009-04-03T08:01:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki HowTo+Read+ProcFS-French&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Information in /proc/virtual==&lt;br /&gt;
   /proc/virtual&lt;br /&gt;
     .../info&lt;br /&gt;
 &lt;br /&gt;
   /proc/virtual/&amp;lt;pid&amp;gt;&lt;br /&gt;
     .../info&lt;br /&gt;
     .../status&lt;br /&gt;
     .../sched&lt;br /&gt;
     .../cvirt&lt;br /&gt;
     .../cacct&lt;br /&gt;
     .../limit&lt;br /&gt;
&lt;br /&gt;
===/proc/virtual/info===&lt;br /&gt;
===/proc/virtual/&amp;lt;xid&amp;gt;===&lt;br /&gt;
Ce répertoire contient plusieurs fichiers qui donnent des informations importantes sur l'état du contexte courant et ses paramètres de fonctionnement.&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/info  ====&lt;br /&gt;
 ID:     1001&lt;br /&gt;
 Info:   83c37000&lt;br /&gt;
 Init:   0&lt;br /&gt;
&lt;br /&gt;
Nous avons ici le context id, l'emplacement du vx_info ainsi que le pid d'init&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/status ====&lt;br /&gt;
 UseCnt: 38&lt;br /&gt;
 Tasks:  16&lt;br /&gt;
 Flags:  0000000000000000&lt;br /&gt;
 BCaps:  00000000d46c04ff&lt;br /&gt;
 CCaps:  0000000000000000&lt;br /&gt;
 Ticks:  0&lt;br /&gt;
&lt;br /&gt;
this contains the usage count (references) and task count, as well as the context flags, capability boundary and context capabilities&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/sched ====&lt;br /&gt;
 Token:                 0&lt;br /&gt;
 FillRate:              1&lt;br /&gt;
 Interval:              4&lt;br /&gt;
 TokensMin:             6&lt;br /&gt;
 TokensMax:            50&lt;br /&gt;
 PrioBias:              0&lt;br /&gt;
 VaVaVoom:              0&lt;br /&gt;
 cpu 0: 0 0 0&lt;br /&gt;
&lt;br /&gt;
Nombre de token en cours, parametres de l'ordonanceur (fill rate, interval, min/max), la &amp;quot;priority bias&amp;quot; ainsi que le vavavoom (bonus calcule)&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/cacct  ====&lt;br /&gt;
 UNSPEC:            0/0                             0/0                             0/0           &lt;br /&gt;
 UNIX:             35/2375                         35/2375                          0/0           &lt;br /&gt;
 INET:             12/531                          56/1937                         57/1705        &lt;br /&gt;
 INET6:             0/0                             0/0                             0/0           &lt;br /&gt;
 OTHER:             0/0                             0/0                             0/0           &lt;br /&gt;
 forks:  0&lt;br /&gt;
&lt;br /&gt;
this accounts socket messages for the listed protocols, as incoming messages/bytes and outgoing messages/bytes&lt;br /&gt;
&lt;br /&gt;
====/proc/virtual/&amp;lt;xid&amp;gt;/cvirt ====&lt;br /&gt;
 BiasUptime:     49.73&lt;br /&gt;
 SysName:        Linux&lt;br /&gt;
 NodeName:       XXXX.test.org&lt;br /&gt;
 Release:        2.6.11-rc5&lt;br /&gt;
 Version:        #12 Sun Feb 27 01:07:29 CET 2005&lt;br /&gt;
 Machine:        i686&lt;br /&gt;
 DomainName:     &lt;br /&gt;
 nr_threads:     16&lt;br /&gt;
 nr_running:     0&lt;br /&gt;
 nr_unintr:      0&lt;br /&gt;
 nr_onhold:      0&lt;br /&gt;
 load_updates:   14585&lt;br /&gt;
 loadavg:        0.00 0.00 0.00&lt;br /&gt;
 total_forks:    272&lt;br /&gt;
&lt;br /&gt;
this contains the uptime bias, utsname settings (sys, node, rel, vers, machine, domain), the number of threads, thread stats (running, uninterruptible, on hold), the number of load updates, the load averages (1,5,15) and the number of forks&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/limit  ====&lt;br /&gt;
 PROC:           16              17              -1           0&lt;br /&gt;
 VM:          14440           15331              -1           0&lt;br /&gt;
 VML:             0               0              -1           0&lt;br /&gt;
 RSS:          5478            5847              -1           0&lt;br /&gt;
 ANON:         1516            1516              -1           0&lt;br /&gt;
 FILES:         140             155              -1           0&lt;br /&gt;
 OFD:           122             122              -1           0&lt;br /&gt;
 LOCKS:           1               3              -1           0&lt;br /&gt;
 SOCK:            9               9              -1           0&lt;br /&gt;
 MSGQ:            0               0              -1           0&lt;br /&gt;
 SHM:             0               0              -1           0&lt;br /&gt;
&lt;br /&gt;
limit columns are: &lt;br /&gt;
# current &lt;br /&gt;
# max observed &lt;br /&gt;
# limit &lt;br /&gt;
# number of hits &lt;br /&gt;
&lt;br /&gt;
limit rows are: &lt;br /&gt;
*processes, &lt;br /&gt;
*virtual memory, &lt;br /&gt;
*locked memory, &lt;br /&gt;
*resident set size, &lt;br /&gt;
*anonymous memory, &lt;br /&gt;
*number of files, &lt;br /&gt;
*filedescriptors, &lt;br /&gt;
*locks, &lt;br /&gt;
*sockets, &lt;br /&gt;
*message queues, &lt;br /&gt;
*shared memory&lt;br /&gt;
&lt;br /&gt;
==Debug settings in /proc/sys/vserver==&lt;br /&gt;
   /proc/sys/vserver&lt;br /&gt;
     .../debug_switch&lt;br /&gt;
     .../debug_xid&lt;br /&gt;
     .../debug_cvirt&lt;br /&gt;
     .../debug_limit&lt;br /&gt;
     .../debug_dlim&lt;br /&gt;
     .../debug_nid&lt;br /&gt;
     .../debug_net&lt;br /&gt;
&lt;br /&gt;
===/proc/sys/vserver/debug_switch===&lt;br /&gt;
===/proc/sys/vserver/debug_xid===&lt;br /&gt;
===/proc/sys/vserver/debug_cvirt===&lt;br /&gt;
===/proc/sys/vserver/debug_limit===&lt;br /&gt;
===/proc/sys/vserver/debug_dlim===&lt;br /&gt;
===/proc/sys/vserver/debug_nid===&lt;br /&gt;
===/proc/sys/vserver/debug_net===&lt;br /&gt;
&lt;br /&gt;
[[Category:ProcFS]]&lt;br /&gt;
[[Category:French]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/HowTo_Read_ProcFS</id>
		<title>HowTo Read ProcFS</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/HowTo_Read_ProcFS"/>
				<updated>2009-04-03T08:00:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki HowTo+Read+ProcFS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Information in /proc/virtual==&lt;br /&gt;
   /proc/virtual&lt;br /&gt;
     .../info&lt;br /&gt;
 &lt;br /&gt;
   /proc/virtual/&amp;lt;pid&amp;gt;&lt;br /&gt;
     .../info&lt;br /&gt;
     .../status&lt;br /&gt;
     .../sched&lt;br /&gt;
     .../cvirt&lt;br /&gt;
     .../cacct&lt;br /&gt;
     .../limit&lt;br /&gt;
&lt;br /&gt;
===/proc/virtual/info===&lt;br /&gt;
===/proc/virtual/&amp;lt;xid&amp;gt;===&lt;br /&gt;
This directory contains several files which can provide valuable information on the current context state and settings.&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/info  ====&lt;br /&gt;
 ID:     1001&lt;br /&gt;
 Info:   83c37000&lt;br /&gt;
 Init:   0&lt;br /&gt;
&lt;br /&gt;
this shows the context id, vx_info location and init pid&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/status ====&lt;br /&gt;
 UseCnt: 38&lt;br /&gt;
 Tasks:  16&lt;br /&gt;
 Flags:  0000000000000000&lt;br /&gt;
 BCaps:  00000000d46c04ff&lt;br /&gt;
 CCaps:  0000000000000000&lt;br /&gt;
 Ticks:  0&lt;br /&gt;
&lt;br /&gt;
this contains the usage count (references) and task count, as well as the context flags, capability boundary and context capabilities&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/sched ====&lt;br /&gt;
 Token:                 0&lt;br /&gt;
 FillRate:              1&lt;br /&gt;
 Interval:              4&lt;br /&gt;
 TokensMin:             6&lt;br /&gt;
 TokensMax:            50&lt;br /&gt;
 PrioBias:              0&lt;br /&gt;
 VaVaVoom:              0&lt;br /&gt;
 cpu 0: 0 0 0&lt;br /&gt;
shows the current amount of tokens, scheduler parameters (fill rate, interval, min/max), the priority bias and the calculated vavavoom (priority bonus)&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/cacct  ====&lt;br /&gt;
 UNSPEC:            0/0                             0/0                             0/0           &lt;br /&gt;
 UNIX:             35/2375                         35/2375                          0/0           &lt;br /&gt;
 INET:             12/531                          56/1937                         57/1705        &lt;br /&gt;
 INET6:             0/0                             0/0                             0/0           &lt;br /&gt;
 OTHER:             0/0                             0/0                             0/0           &lt;br /&gt;
 forks:  0&lt;br /&gt;
&lt;br /&gt;
this accounts socket messages for the listed protocols, as incoming messages/bytes and outgoing messages/bytes&lt;br /&gt;
&lt;br /&gt;
====/proc/virtual/&amp;lt;xid&amp;gt;/cvirt ====&lt;br /&gt;
 BiasUptime:     49.73&lt;br /&gt;
 SysName:        Linux&lt;br /&gt;
 NodeName:       XXXX.test.org&lt;br /&gt;
 Release:        2.6.11-rc5&lt;br /&gt;
 Version:        #12 Sun Feb 27 01:07:29 CET 2005&lt;br /&gt;
 Machine:        i686&lt;br /&gt;
 DomainName:     &lt;br /&gt;
 nr_threads:     16&lt;br /&gt;
 nr_running:     0&lt;br /&gt;
 nr_unintr:      0&lt;br /&gt;
 nr_onhold:      0&lt;br /&gt;
 load_updates:   14585&lt;br /&gt;
 loadavg:        0.00 0.00 0.00&lt;br /&gt;
 total_forks:    272&lt;br /&gt;
&lt;br /&gt;
this contains the uptime bias, utsname settings (sys, node, rel, vers, machine, domain), the number of threads, thread stats (running, uninterruptible, on hold), the number of load updates, the load averages (1,5,15) and the number of forks&lt;br /&gt;
&lt;br /&gt;
==== /proc/virtual/&amp;lt;xid&amp;gt;/limit  ====&lt;br /&gt;
 PROC:           16              17              -1           0&lt;br /&gt;
 VM:          14440           15331              -1           0&lt;br /&gt;
 VML:             0               0              -1           0&lt;br /&gt;
 RSS:          5478            5847              -1           0&lt;br /&gt;
 ANON:         1516            1516              -1           0&lt;br /&gt;
 FILES:         140             155              -1           0&lt;br /&gt;
 OFD:           122             122              -1           0&lt;br /&gt;
 LOCKS:           1               3              -1           0&lt;br /&gt;
 SOCK:            9               9              -1           0&lt;br /&gt;
 MSGQ:            0               0              -1           0&lt;br /&gt;
 SHM:             0               0              -1           0&lt;br /&gt;
&lt;br /&gt;
limit columns are: &lt;br /&gt;
# current &lt;br /&gt;
# max observed &lt;br /&gt;
# limit &lt;br /&gt;
# number of hits &lt;br /&gt;
&lt;br /&gt;
limit rows are: &lt;br /&gt;
*processes, &lt;br /&gt;
*virtual memory, &lt;br /&gt;
*locked memory, &lt;br /&gt;
*resident set size, &lt;br /&gt;
*anonymous memory, &lt;br /&gt;
*number of files, &lt;br /&gt;
*filedescriptors, &lt;br /&gt;
*locks, &lt;br /&gt;
*sockets, &lt;br /&gt;
*message queues, &lt;br /&gt;
*shared memory&lt;br /&gt;
&lt;br /&gt;
==Debug settings in /proc/sys/vserver==&lt;br /&gt;
   /proc/sys/vserver&lt;br /&gt;
     .../debug_switch&lt;br /&gt;
     .../debug_xid&lt;br /&gt;
     .../debug_cvirt&lt;br /&gt;
     .../debug_limit&lt;br /&gt;
     .../debug_dlim&lt;br /&gt;
     .../debug_nid&lt;br /&gt;
     .../debug_net&lt;br /&gt;
&lt;br /&gt;
===/proc/sys/vserver/debug_switch===&lt;br /&gt;
===/proc/sys/vserver/debug_xid===&lt;br /&gt;
===/proc/sys/vserver/debug_cvirt===&lt;br /&gt;
===/proc/sys/vserver/debug_limit===&lt;br /&gt;
===/proc/sys/vserver/debug_dlim===&lt;br /&gt;
===/proc/sys/vserver/debug_nid===&lt;br /&gt;
===/proc/sys/vserver/debug_net===&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-04-01T07:39:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
# http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
# http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
# http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
# http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
# http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
# http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
# http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
# http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
# http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
# http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
# http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
# http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
# http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel-French&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Openwall</id>
		<title>Openwall</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Openwall"/>
				<updated>2009-04-01T07:39:07Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Openwall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Patches are available at [http://www.openwall.com/linux/ Openwall]. &lt;br /&gt;
&lt;br /&gt;
The nice thing of the Openwall security patches are that they apply very cleanly together with the vserver patches. No rediffing or manually applying is necesaary, making them more reliable in my eyes. Since I don't use the ACLs of grsec this works just as fine in my opinion.&lt;br /&gt;
&lt;br /&gt;
I've been using them together for a few months now without any issues.&lt;br /&gt;
&lt;br /&gt;
The procedure is very simple. Before you apply the vserver (ctx) patch, you apply the openwall patch. An example would be like this:&lt;br /&gt;
 tar jxf linux-2.4.24.tar.bz2 &lt;br /&gt;
 cd linux-2.4.24 &lt;br /&gt;
 cat ../linux-2.4.24-ow1/linux-2.4.24-ow1.diff &amp;gt; patch -p1 &lt;br /&gt;
 bzcat ../patch-2.4.24-vs1.24.diff.bz2 | patch -p1 &lt;br /&gt;
 make menuconfig &lt;br /&gt;
&lt;br /&gt;
I enabled all security options:&lt;br /&gt;
 CONFIG_HARDEN_STACK=y&lt;br /&gt;
 CONFIG_HARDEN_STACK_SMART=y&lt;br /&gt;
 CONFIG_HARDEN_LINK=y&lt;br /&gt;
 CONFIG_HARDEN_FIFO=y&lt;br /&gt;
 CONFIG_HARDEN_PROC=y&lt;br /&gt;
 CONFIG_HARDEN_RLIMIT_NPROC=y&lt;br /&gt;
 CONFIG_HARDEN_SHM=y&lt;br /&gt;
&lt;br /&gt;
And this hasn't given me any issues yet. After this, finish off with:&lt;br /&gt;
 make dep &amp;amp;&amp;amp; make bzImage &amp;amp;&amp;amp; make modules &amp;amp;&amp;amp; make modules_install &lt;br /&gt;
or &lt;br /&gt;
 make-kpg --revision=131 kernel_image &lt;br /&gt;
or whatever you like. :)&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/OpenVPN</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/OpenVPN"/>
				<updated>2009-04-01T07:38:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki OpenVPN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to run OpenVPN inside the current version of vserver patch (tested on 2.0.2 an some earlier versions)&lt;br /&gt;
&lt;br /&gt;
Note : I don't think it's The Good Way (tm) in the long term, but it works just fine.&lt;br /&gt;
&lt;br /&gt;
Tested with tun mode openvpn, not in tap mode.&lt;br /&gt;
&lt;br /&gt;
# Configure OpenVPN on the host computer (give it a key, config file,...)&lt;br /&gt;
# Configure the vservers so that they get access to bindings of the openvpn tun interface with a unique IP, i.e. : IPROOT=&amp;quot;tunX:a.b.c.d&amp;quot; (among other interfaces if wanted)&lt;br /&gt;
# Configure the OpenVPN server to use a ccd (see client-config-dir)&lt;br /&gt;
# Add a configuration named after the key common name of the vserver host&lt;br /&gt;
# Add &amp;quot;iroute&amp;quot; entries to that file so the OpenVPN server knows where the IP resides.&lt;br /&gt;
&lt;br /&gt;
Here you are. You should be able to access the VPN from inside the vserver, and access the vserver from the VPN.&lt;br /&gt;
&lt;br /&gt;
Now a more tricky part : giving internet access to a vserver having only a vpn IP (SNAT)&lt;br /&gt;
&lt;br /&gt;
The problem is that the routing table is shared among the host and the vserver, so you can't replace the 0.0.0.0 route by something using the OpenVPN server VPN address.&lt;br /&gt;
&lt;br /&gt;
The solution is to add a second routing table with special application scope :&lt;br /&gt;
 ip rule add from 10.0.0.112/28 lookup 2&lt;br /&gt;
&lt;br /&gt;
This will make all routing for the 10.0.0.112 .. 10.0.0.127 ip range (adapt it to match the vserver vpn address, this examples can route 14 consecutives VPN address on the same host). Why do I use table 2 ? Just a random choice :). Just make sure the table numbers matches the other in the rule and that you don't use something already used. I have no ide if there is any convention in that area.&lt;br /&gt;
&lt;br /&gt;
Then add the default gateway rule:&lt;br /&gt;
 ip route add default via 10.0.0.110 dev tun0 table 2&lt;br /&gt;
10.0.0.110 being the IP of the host. Here is something quite strange - for me - : the packets are rerouted to the openvpn server even if the vserver host IP is given... So it's the one we will configure as a gateway (shorewall configuration extracts) :&lt;br /&gt;
 /etc/shorewall/mask&lt;br /&gt;
 eth0 10.0.0.0/24&lt;br /&gt;
 /etc/shorewall/policy&lt;br /&gt;
 vpn net ACCEPT&lt;br /&gt;
Last step is to configure the resolv.conf inside the vserver (but is it worth mentioning ? :) ).&lt;br /&gt;
&lt;br /&gt;
Make the services reload their configurations and voila.&lt;br /&gt;
&lt;br /&gt;
I think something likewise should be possible to allow DNAT (port forwarding), but I hadn't any need for that so I didn't try.&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Installation_on_Debian</id>
		<title>Installation on Debian</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Installation_on_Debian"/>
				<updated>2009-03-30T10:38:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is written against Debian Etch (4.0). This release includes kernel '''linux-image-vserver-686''', so no manual patching is needed. Hence, Installation on Debian Etch is pretty easy and straightforward.&lt;br /&gt;
&lt;br /&gt;
If you need to compile your own kernel, you need to apply the vserver-version.patch. [http://www.kwu.hu/blog.php Details at 2007/Apr/25]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages installation ==&lt;br /&gt;
The packages required by Linux-VServer are:&lt;br /&gt;
* '''linux-image-vserver-686''' - This is the current kernel&lt;br /&gt;
* '''util-vserver''' - These are the utilities used to administer the guests&lt;br /&gt;
* '''ssh''' - This is probably already installed, but just in case it isn't&lt;br /&gt;
&lt;br /&gt;
All the packages you need can be obtained via&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install linux-image-vserver-686 util-vserver ssh&amp;lt;/pre&amp;gt;&lt;br /&gt;
so run this as ''root'' and reboot.&lt;br /&gt;
To check out wherever everything went fine you may run&lt;br /&gt;
&amp;lt;pre&amp;gt;uname -r&amp;lt;/pre&amp;gt;&lt;br /&gt;
and check that kernel version is something like '''2.6.18-4-vserver-686'''. That's it.&lt;br /&gt;
&lt;br /&gt;
Now that the host system is ready, you can proceed with [[Building Guest Systems|building guests]].&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
Debian already contains vservers kernels, so no manual patching and compiling is needed. &lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
!Debian release &lt;br /&gt;
!Kernel version&lt;br /&gt;
!VServer version&lt;br /&gt;
|-&lt;br /&gt;
| Etch&lt;br /&gt;
| 2.6.18+6&lt;br /&gt;
| 2.0.2.2-rc9&lt;br /&gt;
|-&lt;br /&gt;
| Lenny&lt;br /&gt;
| 2.6.26+17&lt;br /&gt;
| 2.3.0.35&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Linux-VServer HOWTO by Daniel15: http://howtoforge.com/linux_vserver_debian_etch&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-03-30T10:31:09Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
# http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
# http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
# http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
# http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
# http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
# http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
# http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
# http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenVPN&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenwallHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
# http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
# http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
# http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
# http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel-French&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_migrated_pages</id>
		<title>List of migrated pages</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_migrated_pages"/>
				<updated>2009-03-30T10:31:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are already migrated to the new wiki.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of pages not migrated yet]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
| ArchVserver ||[[Installation on ArchLinux]]&lt;br /&gt;
|-&lt;br /&gt;
|Caps+and+Flags || [[Capabilities and Flags]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|Changelog26-Devel || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevel26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevelExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogStableExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|chroot-barrier || [[Secure chroot Barrier]]&lt;br /&gt;
|-&lt;br /&gt;
|Dates+and+Planning || [[News]]&lt;br /&gt;
|-&lt;br /&gt;
|Documentation || [[Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|Examples || [[Do I need Linux-VServer]]&lt;br /&gt;
|-&lt;br /&gt;
|FrequentlyAskedQuestions || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooGuestHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooHostHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Hacker+Page || [[Sandbox]]&lt;br /&gt;
|-&lt;br /&gt;
|Hall+of+Fame || [[Hall of Fame]]&lt;br /&gt;
|-&lt;br /&gt;
|HistoryList || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|HowtoSSHLogin || [[SSH login]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux VServer Howto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03-espaniol || [[Paper/es]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-self-definition || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer || [[Welcome to Linux-VServer.org]]&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki+GIT || [[Wiki Team]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces || [[Namespaces]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces-French || [[Namespaces/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|ProblematicPrograms || [[Problematic Programs]]&lt;br /&gt;
|-&lt;br /&gt;
|ProjectOverview || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|RecentChanges || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|Related+Projects || [[Related Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|Release+FAQ || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Resource+Limits || [[Resource Limits]]&lt;br /&gt;
|-&lt;br /&gt;
|short+presentation || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools+and+patches || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|VirtualServer || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConcept || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConfiguration || [[VServerConfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|VServer+Hosting || [[VServer Hosting]]&lt;br /&gt;
|-&lt;br /&gt;
|Vservers+and+X || [[Vservers and X]]&lt;br /&gt;
|-&lt;br /&gt;
|WikiStat || [[Special:Allpages]]&lt;br /&gt;
|-&lt;br /&gt;
|WorkingPrograms || [[Working programs]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Working_programs</id>
		<title>Working programs</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Working_programs"/>
				<updated>2009-03-30T10:30:50Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki WorkingPrograms&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of known working programs (mostly daemons), if any of those need a special configuration or setup it will contain a link with details. It is important is to document which versions worked together (kernel + vserver + program version).&lt;br /&gt;
&lt;br /&gt;
''(If you add entries, please keep this in alphabetical order.)''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
!Program&lt;br /&gt;
!Kernel&lt;br /&gt;
!V-Server &lt;br /&gt;
|-&lt;br /&gt;
|Amavisd-new (20030616p10)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Apache (1.3.26)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Apache (2.0.55)&lt;br /&gt;
|2.4.27&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|Asterisk (1.0.3)]]&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Bind (8.3.3)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Courier (0.37.3)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Courier IMAP (1.4.3)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Cupsys (1.1.20)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|Cups (1.1.21-0.rc1.7mdk)]]&lt;br /&gt;
|2.6.9&lt;br /&gt;
|1.9.3 &lt;br /&gt;
|-&lt;br /&gt;
|CVS (1.11.1p1)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|CVS (1.11.17)&lt;br /&gt;
|2.6.9&lt;br /&gt;
|1.9.3 &lt;br /&gt;
|-&lt;br /&gt;
|Cyrus IMAPd&lt;br /&gt;
|2.1.17&lt;br /&gt;
|1.9.3 &lt;br /&gt;
|-&lt;br /&gt;
|Cyrus IMAPd 2.3.1&lt;br /&gt;
|2.6.14&lt;br /&gt;
|2.0.1 &lt;br /&gt;
|-&lt;br /&gt;
|djbdns 1.0.5&lt;br /&gt;
|2.4.17ctx-5&lt;br /&gt;
|0.9-1 &lt;br /&gt;
|-&lt;br /&gt;
|F-Secure Policy Manager Server (5.60.4111)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|Hylafax (4.1.8)]]&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Mailman (2.1.5)&lt;br /&gt;
|2.6.9&lt;br /&gt;
|1.9.3 &lt;br /&gt;
|-&lt;br /&gt;
|MIT Kerberos (kadmind+krb5kdc v1.3.5)&lt;br /&gt;
|2.6.9&lt;br /&gt;
|1.9.3 &lt;br /&gt;
|-&lt;br /&gt;
|MySQL? (3.23.49)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|OpenGroupware (1.0)]]&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|OpenLDAP (2.1.30)]]&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|OpenLDAP (2.1.30)]]&lt;br /&gt;
|2.6.9&lt;br /&gt;
|1.9.3 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|OpenSwan (2.2.0)]]&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29+patch &lt;br /&gt;
|-&lt;br /&gt;
|Postfix (2.1.4)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|PostgreSQL? (7.4.6)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|qmail 1.03&lt;br /&gt;
|2.6.9&lt;br /&gt;
|1.9.3 &lt;br /&gt;
|-&lt;br /&gt;
|SNMPd (5.1.2)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Samba (3.0.10)&lt;br /&gt;
|2.6.10&lt;br /&gt;
|1.9.3.16 &lt;br /&gt;
|-&lt;br /&gt;
|[[Problematic Programs|Samba print and file server with Cups]]&lt;br /&gt;
|2.6.9&lt;br /&gt;
|1.9.3&lt;br /&gt;
|-&lt;br /&gt;
|Squid (2.4.6)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29 &lt;br /&gt;
|-&lt;br /&gt;
|Subversion (1.0.9)&lt;br /&gt;
|2.4.28&lt;br /&gt;
|1.29&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Scheduler</id>
		<title>Scheduler</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Scheduler"/>
				<updated>2009-03-30T10:24:28Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Scheduler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Scheduler in the 2.6 kernel is radically different from the 2.4.x series. It is an O(1) scheduler. This means that the job of scheduling does not get more and more complex as the number of running or inactive processes on the machine increases. This is important for SMP scalablity, and the case where there are lots of processes running. In addition, the newer scheduler has better real-time and interactive performance.&lt;br /&gt;
&lt;br /&gt;
Basically, the way it works is this (based on my analysis of the code, read a kernel book and it might say something different :-): each CPU has two linked list run-queues, which hold a list of runnable processes (those waiting for CPU time). Slices are taken from the front of one of the queues, and when the process has finished its cycle, it is either inserted back on the one actively being processed, or moved to the second one - depending on factors such as the priority of the process, and how long it actually ran. What this means is that processes that have not been using much CPU time (ie, interactive processes) get an increased priority, because they are inserted on the end of the running list. When the first process on the second list start to become &amp;quot;starved&amp;quot; of CPU time, this action is canceled so that the first list can deplete. Once it is depleted, the lists are swapped around and the waiting list becomes the running list.&lt;br /&gt;
&lt;br /&gt;
There have been two implementations of implementing the optional per-s_context scheduling for the O(1) scheduler. The approach taken by SamV is to use a &amp;quot;token bucket&amp;quot; for each s_context that assigns a number (N) of CPU &amp;quot;tokens&amp;quot; to each vserver every M cycles. If the process is caught running when the timer tick (which happens 100 times a second on the i386 port) happens, then a token is taken from the bucket. The process is then given a priority penalty or advantage based on the number of tokens left in the bucket. The penalty seems to work best when it is roughly quadratic - ie, giving more (3-4 times) of a maximum penalty for exceeding your quota of tokens than a boost for using nothing. This gives the following characteristics:&lt;br /&gt;
* s_contexts that have been hogging the CPU get a very low priority - but still, they are not starved of CPU time, and if there are no other running processes on the system the only disadvantage is more frequent context switches.&lt;br /&gt;
* s_contexts that do not use their quota up get very good interactive and general performance&lt;br /&gt;
* It is still possible for a vserver assigned to a context to use more tokens than they should, if they start a very large number of processes - as each process is always assigned at least one CPU slice.&lt;br /&gt;
However, it is perfectly suitable for most use cases.&lt;br /&gt;
&lt;br /&gt;
The approach taken by Alex Lyashkov when I last looked took a more thorough, but not O(1) approach, but I won't comment on its exact workings as I haven't analysed it thoroughly.&lt;br /&gt;
&lt;br /&gt;
Another approach that would work and still be O(1) would be to assign each s_context its own pair of run-queues, and schedule the entire s_context as if it were a single process to the outside server. This would satisfy &amp;quot;hard&amp;quot; scheduling requirements, while increasing the complexity of the code marginally.&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-03-30T10:11:54Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
# http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
# http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
# http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
# http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
# http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
# http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
# http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
# http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenVPN&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenwallHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler+Parameters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
# http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
# http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
# http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
# http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VisualAids&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/WorkingPrograms&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_migrated_pages</id>
		<title>List of migrated pages</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_migrated_pages"/>
				<updated>2009-03-30T10:11:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: Linux-VServer-Paper-03-espaniol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are already migrated to the new wiki.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of pages not migrated yet]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
| ArchVserver ||[[Installation on ArchLinux]]&lt;br /&gt;
|-&lt;br /&gt;
|Caps+and+Flags || [[Capabilities and Flags]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|Changelog26-Devel || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevel26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevelExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogStableExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|chroot-barrier || [[Secure chroot Barrier]]&lt;br /&gt;
|-&lt;br /&gt;
|Dates+and+Planning || [[News]]&lt;br /&gt;
|-&lt;br /&gt;
|Documentation || [[Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|Examples || [[Do I need Linux-VServer]]&lt;br /&gt;
|-&lt;br /&gt;
|FrequentlyAskedQuestions || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooGuestHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooHostHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Hacker+Page || [[Sandbox]]&lt;br /&gt;
|-&lt;br /&gt;
|Hall+of+Fame || [[Hall of Fame]]&lt;br /&gt;
|-&lt;br /&gt;
|HistoryList || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|HowtoSSHLogin || [[SSH login]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux VServer Howto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03-espaniol || [[Paper/es]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-self-definition || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer || [[Welcome to Linux-VServer.org]]&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki+GIT || [[Wiki Team]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces || [[Namespaces]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces-French || [[Namespaces/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|ProblematicPrograms || [[Problematic Programs]]&lt;br /&gt;
|-&lt;br /&gt;
|ProjectOverview || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|RecentChanges || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|Related+Projects || [[Related Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|Release+FAQ || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Resource+Limits || [[Resource Limits]]&lt;br /&gt;
|-&lt;br /&gt;
|short+presentation || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools+and+patches || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|VirtualServer || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConcept || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConfiguration || [[VServerConfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|VServer+Hosting || [[VServer Hosting]]&lt;br /&gt;
|-&lt;br /&gt;
|Vservers+and+X || [[Vservers and X]]&lt;br /&gt;
|-&lt;br /&gt;
|WikiStat || [[Special:Allpages]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Paper/es</id>
		<title>Paper/es</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Paper/es"/>
				<updated>2009-03-30T10:11:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Linux-VServer-Paper-03-espaniol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infraestructura Existente==&lt;br /&gt;
Los recientes núcleos de Linux ya proveen muchas prestaciones de seguridad que son utilizadas por Linux-Vserver para hacer su trabajo. Especialmente características tales como el Sistema de Capacidades de Linux, Límite de Recursos, Atributos de archivos y el Cambio del Entorno Raíz. Las siguientes secciones darán una breve reseña acerca de cada una de estas.&lt;br /&gt;
&lt;br /&gt;
=== Sistema de Capacidades de Linux===&lt;br /&gt;
En ciencias de la computación, una capacidad es un signo usado por un proceso para probar que tiene permitido realizar una operación sobre un objeto. El Sistema de Capacidades de Linux se basa en las &amp;quot;Capacidades Posix&amp;quot;, un concepto ligeramente, diseñado para fraccionar el privilegio todo poderoso de root en un conjunto de de distintos privilegios.&lt;br /&gt;
&lt;br /&gt;
==== Capacidades de Linux ====&lt;br /&gt;
Un proceso tiene tres conjuntos de mapas de bits llamadas capacidades hereditarios(I), permitidos(P), y efectivos(E). Cada capacidad se implementa como un bit de estos mapas de bits que están activado o desactivados.&lt;br /&gt;
&lt;br /&gt;
Cuando un proceso intenta hacer una operación privilegiada, el sistema operativo comprobará el bit apropiado en el conjunto efectivo de los procesos (en lugar de comprobar si el uid efectivo del proceso es 0 como se hace normalmente).&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, cuando un proceso intenta configurar el reloj, el núcleo Linux comprobará que el proceso tiene el bit CAP_SYS_TIME (que es actualmente el bit 25) habilitado en su conjunto efectivo.&lt;br /&gt;
&lt;br /&gt;
El conjunto pemitido de los procesos indica las capacidades que el proceso puede usar. El proceso puede tener capacidades habilitadas en el conjunto permitido que no están en el conjunto efectivo.&lt;br /&gt;
&lt;br /&gt;
Esto indica que el proceso tiene temporalmente deshabilitado esta capacidad. Un proceso tiene permitido habilitar un bit en su conjunto permitido solamente si está disponible en el conjunto permitido. La distinción entre efectivo y permitido existe de manera que el proceso puede agrupar operaciones que necesitan privilegios.&lt;br /&gt;
&lt;br /&gt;
La implementación de en Linux detenida a este punto, mientras que las Capacidades de POSIX requier la adición de conjuntos de capacidades para archivos también para reemplazar la marca SUID (al menos para ejecutables)&lt;br /&gt;
&lt;br /&gt;
=== Capability Overview ===&lt;br /&gt;
Las lista de Capacidades de POSIX que se usan es larga, y se usan casi todos de los 32 bits disponibles. Si bien la lista detalla da de todas las capacidades se puede encontrar en &amp;lt;tt&amp;gt;/usr/include/linux/capability.h&amp;lt;/tt&amp;gt; en la matoría de los sistemas Linux, se da aquí un resumen general de las capacidades importantes que se pueden encontrar.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
|0 ||  CAP_CHOWN||  cambia el dueño y grupo del archivo.&lt;br /&gt;
|-&lt;br /&gt;
|5 ||  CAP_KILL||  envía una señal a un proceso con un identificador de usuario diferente existente o efectivo&lt;br /&gt;
|-&lt;br /&gt;
|6 ||  CAP_SETGID||  permite setgid(2), setgroups(2), y falsos gids en pase de credenciales de socket &lt;br /&gt;
|-&lt;br /&gt;
|7 ||  CAP_SETUID||  permite set*uid(2), y falsos uids en pase de credenciales&lt;br /&gt;
|-&lt;br /&gt;
|8 ||  CAP_SETPCAP||  transfiere/elimina cualquier capacidad en el conjunto permitido hacia/desde cualquier pid&lt;br /&gt;
|-&lt;br /&gt;
|9 ||  CAP_LINUX_IMMUTABLE||  permite la modificación de los atributos de archivo S_IMMUTABLE y S_APPEND &lt;br /&gt;
|-&lt;br /&gt;
|11 ||  CAP_NET_BROADCAST||  permite hacer broadcast y escuchar a múltiples direcciones&lt;br /&gt;
|-&lt;br /&gt;
|12 ||  CAP_NET_ADMIN||  permite la configuración de una interfaz, firewall de IP, enmascaramiento, cuantificación, depuración de socket, tablas de ruteo, conexión a cualquier dirección, entrar en modo promiscuo, multicasting,...&lt;br /&gt;
|-&lt;br /&gt;
|13 ||  CAP_NET_RAW||  permite el uso de sockets crudos y de paquetes&lt;br /&gt;
|-&lt;br /&gt;
|16 ||  CAP_SYS_MODULE||  inserta y saca módulos del kernel&lt;br /&gt;
|-&lt;br /&gt;
|18 ||  CAP_SYS_CHROOT||  permite chroot(2)&lt;br /&gt;
|-&lt;br /&gt;
|19 ||  CAP_SYS_PTRACE||  permite ptrace() de cualquier proceso&lt;br /&gt;
|-&lt;br /&gt;
|21 ||  CAP_SYS_ADMIN|| esta lista sería demasiado larga, basicamente permite hacer cualquier otra cosa, no mencionada en otra capacidad.&lt;br /&gt;
|-&lt;br /&gt;
|22 ||  CAP_SYS_BOOT||  permite reboot(2)&lt;br /&gt;
|-&lt;br /&gt;
|23 ||  CAP_SYS_NICE||  permite aumentar la prioridad&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Paper/fr</id>
		<title>Paper/fr</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Paper/fr"/>
				<updated>2009-03-30T10:10:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Abstract ==&lt;br /&gt;
Concept logiciel basé sur les ''Security Contextes'' permet la création d'une multitude de serveurs virtuels Privés (VPS) tournant simultanément sur un même serveur physique à pleine vitesse, en partageant efficacement les ressources matérielles.&lt;br /&gt;
Un VPS offre un environnement quasiment identique à celui d'un serveur Linux conventionnel. Tous les services, comme ssh, mail, Web, bases de données, peuvent être lancés dans un tel VPS, sans aucune modification (ou, dans certains cas, des modifications mineures), exactement comme avec n'importe quel autre serveur réel.&lt;br /&gt;
&lt;br /&gt;
Chaque serveur virtuel possède sa propre base utilisateurs et son mot de passe root. Il est isolé de tous les autres serveurs virtuels, sauf en ce qui concerne les ressources matérielles, qui sont partagées par tous les serveurs virtuels.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Au fur et à mesure des années, les micro ordinateurs sont devenus suffisemment puissant pour utiliser la virtualisation comme méthode pour donner l'illusion d'avoir une multitude de petites machines virtuelles, chacune d'elle tournant avec une instance différente de n'importe quel système d'exploitation.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs types de Machines Virtuelles (VMs) dont les fonctionnalités sont similaires, mais qui diffèrent dans le degré d'abstraction et les méthodes utilisées pour la virtualisation.&lt;br /&gt;
&lt;br /&gt;
La plupart d'entre elles &amp;quot;émulent&amp;quot; une ressource matérielle réelle ou fictive, qui, à son tour, fait usage de &amp;quot;vraies&amp;quot; ressources du système Hote (la machine qui fait tourner les VMs). Cette approche, utilisée par la plupart des émulations système (comme QEMU[U1], Bochs[U2], ... permet à l'émulateur d'éxécuter n'importe quel système d'exploitation, même pour une architecture différente (CPU et matérielle). Pas besoin de modifier le système d'exploitation Invité, puisqu'il n'est pas conscient de s'éxécuter sur autre chose qu'un vrai matériel.&lt;br /&gt;
&lt;br /&gt;
Quelques émulations systèmes ont besoin d'un petit nombre de modifications ou de pilotes de périphériques spécifiques sur le système Hote ou le système Invité pour améliorer les performances, et minimiser le grignotage superflu de ressources système qui passe dans les systèmes de cache et de médiation entre le système Hote et le système Invité. Bien que cela améliore sensiblement l'efficacité de ces solutions, les ressources perdues sont toujours notables (par exemple dans UML[U3] et Xen[U4]).&lt;br /&gt;
&lt;br /&gt;
Supposez par contre que les systèmes d'exploitation à lancer ne sont pas différents ... La plupart des applications qui tournent sur un serveur n'ont pas besoin d'acceder au matériel ou à du code au niveau noyau, et pourraient donc partager une machine avec les autres, si l'on pouvait les séparer et les isoler ...&lt;br /&gt;
&lt;br /&gt;
== Le Concept ==&lt;br /&gt;
A la base, un serveur Linux est constitué de trois blocs constitutifs: Le matériel, le Noyau, et les Applications. Le Matériel dépend habituellement du fournisseur ou de l'administrateur système, et, bien qu'ayant une grande influence sur les performances globales, ne peut pas être changé facilement, et diffère sensiblement d'une configuration à l'autre.&lt;br /&gt;
&lt;br /&gt;
Un role de base du noyau consiste à créer une couche d'abstraction au dessus du matériel pour permettre aux processus (Applications) de travailler avec des ressources (Données) sans connaitre les détails du matériel qui se trouve en dessous. Idéalement, ces processus sont complètement agnostiques vis-à-vis du matériel, écrit dans un langage interprété, et ne nécessitant par conséquent aucun savoir faire spécifique au matériel.&lt;br /&gt;
&lt;br /&gt;
Puisqu'un système possède assez de ressources pour faire tourner environ dix fois plus d'applications que nécessaire sur un serveur Linux traditionnel, pourquoi ne pas placer sur celui-ci une dizaine de serveurs, qui vont partager les ressources d'une manière efficace ?&lt;br /&gt;
&lt;br /&gt;
La plupart des serveurs d'application (par exemple httpd) considère qu'il est la seule application à fournir un service particulier, et d'habitude, va donc supposer une organisation particulière au niveau du système de fichiers, et de l'environnement. Cela implique que deux services identiques tournant sur un même serveur physique, mais différent simplement au niveau de leur adresse IP, par exemple, doivent être coordonnées. Cela demande typiquement pas mal de boulot pour l'administrateur système, et cela peut conduire à un stabilité réduite du système et de la sécurité.&lt;br /&gt;
&lt;br /&gt;
Le concept de base de la solution Linux-VServer est de séparer l'environnement en user space (espace utilisateur) en trois unités distinctes (appellées parfois VPS, ou Virtual Private Server), de telle manière que chaque VPS ressemblera à un vrai serveur vis-à-vis des processus qu'il contient.&lt;br /&gt;
&lt;br /&gt;
Bien que différentes Distributions Linux utilisent des noyaux modifiées (parfois lourdement) pour assurer le support de telle ou telle fonctionnalité, ou matériel, la plupart des distributions Linux ne sont pas liées irrévocablement à un noyau linux particulier.&lt;br /&gt;
&lt;br /&gt;
Linux-VServer utilise cela pour donner à plusieurs distributions, la possibilité de se lancer au dessus d'un seul noyau, partagé, sans accès direct au matériel, et partager les ressources d'une manière très efficace.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure Existante ==&lt;br /&gt;
Les noyaux Linux récents fournissent déjà de nombreuses fonctions de sécurité qui sont utilisées par Linux-Vserver pour fonctionner, telles que le Système de Privileges Linux, les limites de ressource, les attributs de fichier et l'environnement chroot. Les sections suivantes vous donneront un court aperçu de chacune d'entre elles. &lt;br /&gt;
=== Le système de Privileges (Capabilities) Linux  ===&lt;br /&gt;
En science informatique, un privilege est un jeton utilisé par un processus pour prouver qu'il est autorisé à faire une opération sur un objet. Le Système de privileges Linux est basé sur les &amp;quot;Privileges POSIX&amp;quot;, un concept légèrement similaire, conçu pour diviser les privilèges root puissants en un ensemble de privilèges distincts.&lt;br /&gt;
&lt;br /&gt;
==== Privileges POSIX ====&lt;br /&gt;
Un processus possède trois champs de bits appelés les privileges héritables (I - &amp;quot;Inheritable&amp;quot;), permises (P), et effectives (E). Chaque privilege est implémenté dans un bit de chacun de ces champs, bit qui est soit défini soit non-défini.&lt;br /&gt;
&lt;br /&gt;
Quand un processus essaie de faire une opération privilégiée, le système d'exploitation va vérifier les bits appropriés dans l'ensemble effectif des processus (au lieu de vérifier si l'uid respectif du processus est 0 comme il le fait habituellement).&lt;br /&gt;
&lt;br /&gt;
Par exemple, quand un processus essaie de modifier l'horloge, le noyau Linux va vérifier que ce processus a le bit CAP_SYS_TIME (actuellement le bit 25) parmi ses privileges effectives.&lt;br /&gt;
&lt;br /&gt;
L'ensemble permis d'un processus indique les privileges que celui-ci peut utiliser. Le processus peut avoir des privileges définies dans l'ensemble permis qui ne sont pas dans l'ensemble effectif.&lt;br /&gt;
&lt;br /&gt;
Ceci indique que le processus a temporairement désactivé ce privilege. Un processus n'est autorisé à définir un bit dans son ensemble effectif que si ce bit est disponible dans son ensemble permis.&lt;br /&gt;
&lt;br /&gt;
La distinction entre privileges effectif et permis existe pour que les processus puissent réaliser des opérations qui nécessitent des privilèges.&lt;br /&gt;
&lt;br /&gt;
Les privileges héritables sont les privileges du processus courant qui peuvent être hérités par un programme exécuté par ce dernier. L'ensemble permis d'un processus est masqué contre l'ensemble héritable pendant exec().&lt;br /&gt;
&lt;br /&gt;
Rien de spécial ne se produit durant fork() ou clone().&lt;br /&gt;
&lt;br /&gt;
Les processus fils ou les threads obtiennent une copie exacte des privileges du processus parent.&lt;br /&gt;
&lt;br /&gt;
L'implémentation dans Linux s'arrête là, alors que les privileges POSIX[U5] requièrent l'ajout d'un ensemble de privileges aux fichiers, pour remplacer le flag SUID (au moins pour les exécutables).&lt;br /&gt;
&lt;br /&gt;
==== Vue d'ensemble des privileges ====&lt;br /&gt;
La liste des privileges POSIX utilisées avec Linux est longue, et les 32 bits disponibles sont presques tous utilisés. Bien que la liste détaillée de ces privileges puisse être trouvée dans /usr/include/linux/capability.h sur la plupart des systèmes Linux, une vue d'ensemble des privileges importantes est donnée ici.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| CAP_CHOWN || change le propriétaire et le groupe du fichier&lt;br /&gt;
|-&lt;br /&gt;
| 5|| CAP_KILL|| envoie un signal au processus avec un ID utilisateur différent, réel ou effectif&lt;br /&gt;
|-&lt;br /&gt;
| 6|| CAP_SETGID|| permet le passage de setgid(2), setgroups(2), et de gids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 7|| CAP_SETUID|| permet le passage de set*uid(2) et d'uids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 8|| CAP_SETPCAP|| transfert/déplace tout privilege de l'ensemble permis vers/depuis n'importe quel pid&lt;br /&gt;
|-&lt;br /&gt;
| 9|| CAP_LINUX_IMMUTABLE|| permet la modification des attributs de fichier S_IMMUTABLE et S_APPEND&lt;br /&gt;
|-&lt;br /&gt;
| 11|| CAP_NET_BROADCAST|| permet la diffusion et l'écoute en multicast&lt;br /&gt;
|-&lt;br /&gt;
| 12|| CAP_NET_ADMIN|| permet la configuration de l'interface, le pare-feux IP, le masquerading, l'accounting, le débugage de sockets, les tables de routage, la liaison sur n'importe quelle adresse, l'entrée dans le mode de promiscuité, le multicasting...&lt;br /&gt;
|-&lt;br /&gt;
| 13|| CAP_NET_RAW|| permet l'utilisation des sockets RAW et PACKET&lt;br /&gt;
|-&lt;br /&gt;
| 16|| CAP_SYS_MODULE|| ajoute et retire des modules noyau&lt;br /&gt;
|-&lt;br /&gt;
| 18|| CAP_SYS_CHROOT|| permet chroot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 19|| CAP_SYS_PTRACE|| permet ptrace() sur n'importe quel processus&lt;br /&gt;
|-&lt;br /&gt;
| 21|| CAP_SYS_ADMIN|| la liste serait trop longue, ceci permet en gros de faire tout ce qui n'est pas mentionné dans les autres privileges&lt;br /&gt;
|-&lt;br /&gt;
| 22|| CAP_SYS_BOOT|| permet reboot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 23|| CAP_SYS_NICE|| permet l'élévation des privilèges et la modification de la priorité des autres processus, en modifiant l'ordonnanceur&lt;br /&gt;
|-&lt;br /&gt;
| 24|| CAP_SYS_RESOURCE|| passe outre les limites de ressource, de quota, l'espace réservé sur un système de fichier...&lt;br /&gt;
|-&lt;br /&gt;
| 27|| CAP_MKNOD|| permet les aspects privilégiés de mknod(2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir également les Exemples [E01],[E02], et [E03].&lt;br /&gt;
&lt;br /&gt;
=== Limite des Ressources  ===&lt;br /&gt;
Vous pouvez limiter les ressources de chaque processus en spécifiant une limite pour chaque ressource. A la manière des privileges Linux, il existe deux types de limites, l'une Douce, l'autre Dure.&lt;br /&gt;
&lt;br /&gt;
La limite Douce est la valeur que le noyau imposera pour cette ressource à un processus. Un utilisateur non privilégié pourra régler la limite Douce n'importe où en dessous de la valeur Dure. Seul l'utilisateur root pourra re-hausser la limite Dure.&lt;br /&gt;
&lt;br /&gt;
==== Apercu des Ressources Limit-ables ====&lt;br /&gt;
La liste des ressources qui peuvent être limitées se trouve dans le fichier /usr/include/asm/resource.h sur la plupart des systèmes Linux.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| RLIMIT_CPU || Temps CPU en secondes. un signal SIGXCPU est envoyé au processus qui a atteind la limite Douce, et un SIGKILL pour la limite Dure.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| RLIMIT_CORE || Taille maximale d'un fichier core.&lt;br /&gt;
|-&lt;br /&gt;
| 5|| RLIMIT_RSS || Nombre de pages maximum qu'un processus peut utiliser (en RAM)&lt;br /&gt;
|-&lt;br /&gt;
| 6|| RLIMIT_NPROC || Nombre maximum de processus autorisés à l'utilisateur réel du processus appelant.&lt;br /&gt;
|-&lt;br /&gt;
| 7|| RLIMIT_NOFILE || Spécifie la valeur +1 pour le nombre maximum de descripteurs de fichiers ouvert par un processus.&lt;br /&gt;
|-&lt;br /&gt;
| 8|| RLIMIT_MEMLOCK || Nombre maximum de pages mémoire virtuelle autorisées à être vérouillées en RAM à l'aide des appels mlock() ou mlockall().&lt;br /&gt;
|-&lt;br /&gt;
| 9|| RLIMIT_AS || Nombre maximum de pages de mémoire virtuelle disponible pour un processus.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Limite de l'espace d'adressage) &lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E11], et [E12].&lt;br /&gt;
&lt;br /&gt;
=== Attributs de Fichiers  ===&lt;br /&gt;
Auparavant, cette fonctionnalité n'était disponible qu'avec ext2, mais maintenant tous les systèmes de fichiers majeurs implémentent un ensemble d'Attributs de fichiers de base, qui permettent le paramétrage de certaines propriétés. Voici de nouveau un bref aperçu des possibilités des attributs, et leur signification.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| s SECRM ||  Lorsqu'un fichier avec cet attribut est détruit, les blocs qui le composent sont mis à zéro et re-écrit sur le disque.&lt;br /&gt;
|-&lt;br /&gt;
| u UNRM ||  Lorsqu'un fichier avec cet attribut est détruit, son contenu est sauvegardé.&lt;br /&gt;
|-&lt;br /&gt;
| c COMPR ||  Un fichier marqué avec cet attribut est automatiquement compressé à l'écriture et décompressé à la lecture. (pas encore implémenté)&lt;br /&gt;
|-&lt;br /&gt;
| i IMMUTABLE ||  Un fichier avec cet attribut ne pourra pas être modifié: Impossible de le renommer ou de le détruire, impossible de créer un lien vers ce fichier, ni d'écrire une donnée de plus vers ce fichier. &lt;br /&gt;
|-&lt;br /&gt;
| a APPEND ||  Un fichier avec cet attribut ne pourra être ouvert qu'en mode ajout.&lt;br /&gt;
|-&lt;br /&gt;
| d NODUMP ||  Si cet attribut de fichier est mis, le fichier n'est pas candidat à un backup via l'utilitaire &amp;quot;dump&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| S SYNC ||  Les mises à jour vers ce fichier se feront de manière synchrone.&lt;br /&gt;
|-&lt;br /&gt;
| A NOATIME ||  Empêche la mise à jour de l'enregistrement atime lors d'un accès ou d'une modification de fichier.&lt;br /&gt;
|-&lt;br /&gt;
| t NOTAIL ||  Un fichier avec l'attribut t n'aura pas de fragment bloc en fin de fichier fusionné avec un autre fichier.&lt;br /&gt;
|-&lt;br /&gt;
| D DIRSYNC ||  Les modifications apportés à ce répertoire seront écrites de manière synchrones. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E13] et [E14].&lt;br /&gt;
&lt;br /&gt;
=== La Commande chroot(1)  ===&lt;br /&gt;
chroot permet de lancer une commande en changeant le répertoire racine dans lequel il va s'éxécuter. Cela signifie que tout parcours du système de fichiers à partir de la racine '/' se fera à partir de la racine substituée et non pas à partir de la racine originelle.&lt;br /&gt;
&lt;br /&gt;
Bien que le chroot Linux n'est pas très sécurisé, son utilisation augmente l'isolation des processus par rapport au système de fichier, et, à condition de l'utiliser correctement, peut être utilisé pour &amp;quot;emprisonner&amp;quot; un processus, un utilisateur unique, ou un démon (service).&lt;br /&gt;
&lt;br /&gt;
Voir l'Exemple [E15]&lt;br /&gt;
&lt;br /&gt;
== Modifications Requises ==&lt;br /&gt;
Ce chapitre décrit les modifications à apporter au noyau pour implémenter un mécanisme comme Linux-VServer.&lt;br /&gt;
&lt;br /&gt;
=== Séparation de Contextes ===&lt;br /&gt;
La séparation telle que décrite dans la partie 'Concepts' nécessite quelques modifications au noyau pour permettre la notion de Contexte.&lt;br /&gt;
&lt;br /&gt;
Le but d'un tel &amp;quot;Contexte&amp;quot; est de cacher à un processus tout ce qui ne doit pas etre à sa portée, et empécher les interractions indésirables entre un processus appartenant à un contexte et un processus appartenant à un autre contexte.&lt;br /&gt;
&lt;br /&gt;
Cette séparation nécessite l'extension d'un certain nombre de structures de données pour qu'elles prennent en compte les contextes et fassent la différentiation entre deux uids identiques mais utilisés dans deux serveurs virtuels différents.&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons besoin d'un contexte par defaut qui sera utilisé par le serveur hôte au démarrage, et pour éviter les problèmes liés à des suppositions érronées de certains outils en espace utilisateur (comme pstree) par exemple, l'idée comme quoi init existe toujours et a toujours l'uid 1.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'administration, le Contexte de l'Hôte n'est pas traité différemment d'un autre contexte, en tout cas du point de vue de l'isolation des processus.&lt;br /&gt;
&lt;br /&gt;
Pour avoir un apercu global de tous les processus, un Spectateur spécial a été mis en place, qui est capable de capturer tous les processus d'un coup.&lt;br /&gt;
Voir les Examples [E21],[E22] et [E23]&lt;br /&gt;
&lt;br /&gt;
=== Séparation Réseau  ===&lt;br /&gt;
Bien que les Contextes soient suffisant pour isoler un groupe de processus, un autre type d'isolation, ou plutot une limitation, est nécessaire pour confiner les processus dans un sous ensemble d'adresses réseau disponibles.&lt;br /&gt;
&lt;br /&gt;
Plusieurs problèmes doivent être pris en compte dans ce sens: par exemple, les appels système bind sur IPADDR_ANY doivent être traités d'une manière bien particulière.&lt;br /&gt;
&lt;br /&gt;
Actuellement, Linux-Vserver n'utilise pas les interfaces virtuelles (et ne les utilisera peut-être jamais), pour minimiser le cout supplémentaire qu'elles engendrent. De ce fait, l'attachement d'une socket et la transmission des packets ont été adaptés.&lt;br /&gt;
&lt;br /&gt;
Voir Example [E24]&lt;br /&gt;
&lt;br /&gt;
=== La Barrière Chroot  ===&lt;br /&gt;
Un problème majeur avec le chroot() de Linux aujourd'hui tient au fait que cette information est volatile, et changera au prochain appel système de chroot().&lt;br /&gt;
&lt;br /&gt;
Voici une façon simple pour sortir d'un environnement chrooté Créez tout d'abord un fichier, et retenez son descripteur. Puis chrootez dans un répertoire au même niveau ou un niveau au dessous de celui-ci. Cela a pour effet de faire descendre la racine' dans le système de fichiers. Ensuite, faites un appel à fchdir() sur le descripteur de fichiers pour sortir de cette nouvelle racine. Vous sortirez en même temps de l'ancienne racine, qui a été perdue suite au dernier appel système chroot().&lt;br /&gt;
&lt;br /&gt;
Alors que des méthodes exotiques étaient utilisées dans les anciennes versions de Linux-Vserver pour fixer ce problème, les versions récentes utilisent un marquage spécial, connu sous le nom de Barrière Chroot, placé sur le parent de tous les VPS pour prévenir toute modification non autorisée et sortie du confinement.&lt;br /&gt;
&lt;br /&gt;
=== Un plafond pour les Privileges  ===&lt;br /&gt;
L'implémentation actuelle des privileges Linux ne prend pas en compte les privileges POSIX sur les systèmes de fichiers. Si cela était le cas, les executables setuid et setgid seraient sécurisés. Pour conserver donc une bonne sécurité malgré cette contrainte, nous avons défini un plafond pour tous les processus d'un même contexte, et un masque de privileges additionnel pour chaque contexte a été aussi ajouté pour limiter à ce seul masque les processus qui appartiennent à ce contexte.&lt;br /&gt;
&lt;br /&gt;
La signification des privileges individuels (bits) pour ce masque est exactement identique à celui que permet l'ensemble des privileges.=== Isolation de Ressources  ===&lt;br /&gt;
&lt;br /&gt;
=== Isolation de Ressources ===&lt;br /&gt;
La plupart des ressources sont d'une certaine manière partagées à travers les différents contextes; certaines requièrent une isolation plus importante que les autres, soit pour éviter les problèmes de sécurité, ou pour permettre une meilleure comptabilité de l'usage des ressources;&lt;br /&gt;
&lt;br /&gt;
Ces ressources sont:&lt;br /&gt;
* mémoire partagée, IPC&lt;br /&gt;
* PID et User ID&lt;br /&gt;
* Drapeau xid sur les fichiers&lt;br /&gt;
* ptys Unix&lt;br /&gt;
* sockets&lt;br /&gt;
&lt;br /&gt;
=== Drapeau XID pour les Filesystem XID ===&lt;br /&gt;
Bien qu'elle puisse être totalement desactivée, cette modification est requise pour une meilleure robustesse au niveau du système de fichiers, et pour isoler les contextes. Le drapeau XID est aussi totalement indispensable pour implémenter le support pour les Limites Disques par Contexte et les Quotas par Contexte sur une partition partagée.&lt;br /&gt;
&lt;br /&gt;
Ce concept d'ajouter un identifiant de contexte (xid) à chaque fichier pour créer une notion d'appartenance d'un fichier à un contexte parait simple ... Il n'en est rien, car l'implémentation actuelle n'est pas triviale. Elle nécessite soit une modification des représentations du système de fichier, soit des astuces au niveau applicatif.&lt;br /&gt;
&lt;br /&gt;
Une approche non intrusive pour éviter toute modification du système de fichiers sous-jacent est d'utiliser les bits de poids forts de champs existants, comme ceux des UID ou GID pour stocker le XID additionnel.&lt;br /&gt;
&lt;br /&gt;
Une fois que les informations de contexte sont disponibles au niveau de chaque inode, l'étape logique suivante est d'étendre la vérification d'accès au contexte en plus du reste.&lt;br /&gt;
&lt;br /&gt;
Actuellement, tous les acces aux inodes sont vérifiés par rapport à leur contexte ID, à l'exception des contextes &amp;quot;Hôte&amp;quot; et &amp;quot;Spectateur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les fichiers non étiquettés dans le contexte hôte sont simplement traités comme appartenant au contexte courant, et cela est requis pour que l'Unification soit possible. Si un tel fichier est modifié à l'intérieur d'un contexte, elle changera en silence vers son noveau contexte, en changeant son XID.&lt;br /&gt;
&lt;br /&gt;
Les méthodes suivantes de marquage sont utilisées:&lt;br /&gt;
&lt;br /&gt;
;UID32/GID32 or EXTERNAL:  Ce format utilise l'espace inutilisé dans l'inode disque pour stocker les informations de contexte. Pour l'instant, c'est uniquement défini pour ext3/ext3, mais sera dans le futur aussi défini pour xfs, reiserfs, et jfs, dès que possible.&lt;br /&gt;
&lt;br /&gt;
Avantage: Valeurs 32bit uid/gid complètes.&lt;br /&gt;
&lt;br /&gt;
;UID32/GID16:  Ce format utilise la moitié haute du GID pour stocker les informations de contexte. Cela est fait de manière transparente, sauf si le format est changé sans conversion préalable.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne avec tout système de fichiers équipé de UID / GID 32bits&lt;br /&gt;
&lt;br /&gt;
Désavantage: le GID est réduit a 16 bits.&lt;br /&gt;
&lt;br /&gt;
;UID24/GID24:  Ce format utilise le premier quart haut de l'UID et du GID pour stocker les informations de contexte, une fois encore, d'une manière transparente. Cela permet 16 millions de groupes et utilisateurs, ce qui devrait suffire pour la majorité des applications.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne sur tout système de fichiers avec des UID/GID 32bits&lt;br /&gt;
&lt;br /&gt;
Desavantage: les UID et GID sont réduits a 24 bits.&lt;br /&gt;
&lt;br /&gt;
Voir Examples [E31] et [E32]&lt;br /&gt;
&lt;br /&gt;
== Modifications Supplémentaires ==&lt;br /&gt;
En plus du strict minimum, voici un certain nombre de modifications, non indispensables, mais qui se sont révélées très utiles au fil du temps.&lt;br /&gt;
&lt;br /&gt;
=== Drapeaux par Contexte  ===&lt;br /&gt;
Très tôt, le besoin d'activer ou désactiver une fonctionnalité séparement pour l'un ou l'autre des Vserver est apparue. Un champ de bits a donc été ajouté (taille=word).&lt;br /&gt;
&lt;br /&gt;
Ce champ de bits comprend un bon nombre de drapeaux, un champ masque, qui indique les drapeaux disponibles, et un mécanisme de déclanchement spécial, pour activer un drapeau au démarrage, puis le désactiver en causant un évennement ou une action associée.&lt;br /&gt;
&lt;br /&gt;
Voici la liste des drapeaux prévus et pour la plupart déjà implémentés. Ils sont disponibles dans la branche de développement de Linux-VServer:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| VXF_INFO_LOCK (historique, obsolète)&lt;br /&gt;
|-&lt;br /&gt;
| 1|| VXF_INFO_SCHED (historique, obsolète)|| schedule all processes in a context as if they where one.&lt;br /&gt;
|-&lt;br /&gt;
| 2|| VXF_INFO_NPROC (historique, obsolète)|| limite le nombre de processus autorisés dans un contexte à la valeur NPROC.&lt;br /&gt;
|-&lt;br /&gt;
| 3|| VXF_INFO_PRIVATE (historique)|| interdiction d'entrer dans ce contexte depuis l'extérieur.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| VXF_INFO_INIT  (historique) || show the init process with pid '1'&lt;br /&gt;
|-&lt;br /&gt;
| 5|| VXF_INFO_HIDE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 6|| VXF_INFO_ULIMIT (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 7|| VXF_INFO_NSPACE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 8|| VXF_SCHED_HARD || activer l'ordonnancement &amp;quot;Hard CPU&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 9|| VXF_SCHED_PRIO || calculer les priorités de chaque processus à l'aide du &amp;quot;contexte token bucket&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| 10|| VXF_SCHED_PAUSE || mettre tous les processus de ce contexte dans la file &amp;quot;hold&amp;quot;, les empéchant d'être ordonnancés à nouveau.&lt;br /&gt;
|-&lt;br /&gt;
| 16|| VXF_VIRT_MEM || virtualize the memory information so that the VM and RSS limits are used for meminfo and friends&lt;br /&gt;
|-&lt;br /&gt;
| 17|| VXF_VIRT_UPTIME || virtualiser l'uptime, en commançant à la date de création du contexte.&lt;br /&gt;
|-&lt;br /&gt;
| 18|| VXF_VIRT_CPU || &lt;br /&gt;
|-&lt;br /&gt;
| 24|| VXF_HIDE_MOUNT ||  afficher les /proc/{pid}/mounts comme vides.&lt;br /&gt;
|-&lt;br /&gt;
| 25|| VXF_HIDE_NETIF ||  cache les interfaces réseau et addresses non autorisées dans ce contexte.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Privileges par Contexte  ===&lt;br /&gt;
Lorsque nous sommes arrivé au nombre maximum de privileges envisageables sans trop modifier le noyau, l'étape suivante a été, naturellement, d'ajouter un système de privileges par contexte.&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des privileges par contexte implémenté dans Linux-VServer permet un réglage fin des privileges Linux. Ils ne sont pas visibles aux processus d'un contexte donné, puisque de toute facon le processus n'aurait pas le droit de les vérifier ou de les modifier.&lt;br /&gt;
&lt;br /&gt;
Généralement, il y a deux facons d'utiliser ces privileges : * Require one or a number of context capabilities to be set in addition to a given Linux capability, each one controlling a distinct part of the functionality. For example the CAP_NET_ADMIN could be split into RAW and PACKET sockets, so you could take away each of them separately by not providing the required context capability.&lt;br /&gt;
&lt;br /&gt;
Consider the context capability sufficient for a specified functionality, even if the Linux Capability says something different. For example mount() requires CAP_SYS_ADMIN which adds a dozen other things we do not want, so we define a CCAP_MOUNT to allow mounts for certain contexts.&lt;br /&gt;
&lt;br /&gt;
The difference between the Context Flags and the Context Caps is more an abstract logical separation than a functional one, because they are handled very similar.&lt;br /&gt;
Again, a list of the Context Capabilities and their purpose:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
|0|| VXC_SET_UTSNAME||  autoriser le contexte à changer le nom de serveur et le nom de domaine en utilisant l'appel système noyau approprié&lt;br /&gt;
|-&lt;br /&gt;
|1|| VXC_SET_RLIMIT||  allow the context to modify the resource limits (within the vserver limits).&lt;br /&gt;
|-&lt;br /&gt;
|8|| VXC_RAW_ICMP||  allow raw icmp packets in a secure way (this makes ping work from inside)&lt;br /&gt;
|-&lt;br /&gt;
|16|| VXC_SECURE_MOUNT|| permit secure mounts, which at the moment means that the nodev mount option is added.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Comptabilité par Contexte  ===&lt;br /&gt;
Plusieurs propriétés des contextes sont très utiles pour l'administrateur système, que ce soit pour garder un oeil sur les ressources, pour avoir une idée de ce que peut supporter le serveur, ou pour pouvoir facturer d'une manière ou d'une autre au client.&lt;br /&gt;
&lt;br /&gt;
Deux types de propriétés peuvent être comptabilisées, celles dont la valeur courante représente l'état du système (par analogie, prenez la vitesse d'un véhicule), et celles dont la valeur augmente régulièrement avec le temps (comme le kilométrage).&lt;br /&gt;
&lt;br /&gt;
La plupart des valeurs d'état sont limitables, et sont donc traitées d'une façon spécifique, comme cela est décrit dans la section qui suit.&lt;br /&gt;
&lt;br /&gt;
Good candidates for Context Accounting are:&lt;br /&gt;
* Temps CPU utilisé&lt;br /&gt;
* Nombre de fork() effectués&lt;br /&gt;
* Nombre de messages Socket par Type&lt;br /&gt;
* Nombre de paquets Transmis et Recus&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E41]&lt;br /&gt;
&lt;br /&gt;
=== Limites par Contexte  ===&lt;br /&gt;
La plupart des ressources système, que ce soit la consommation mémoire, le nombre de processus utilisés, le nombre de descripteurs de fichiers, la bande passante réseau, doivent pouvoir être limitées.&lt;br /&gt;
&lt;br /&gt;
Les limites par contexte permettent, pour chaque valeur limitable, de définir trois types de limites: minimum, soft, et hard(maximum).&lt;br /&gt;
&lt;br /&gt;
A l'heure actuelle, seule les limites hard sont supportées, et seulement une partie d'entre elles sont réellement activées. Voici une liste des limites par contexte actuelles et prévues:&lt;br /&gt;
* limites sur les processus&lt;br /&gt;
* limites sur l'ordonnanceur&lt;br /&gt;
* limites mémoire&lt;br /&gt;
* limites disques par contexte&lt;br /&gt;
* quotas user/groupe par contexte&lt;br /&gt;
&lt;br /&gt;
De plus, les limites par contexte gardent trace des valeur maxima atteintes et du nombre de fois ou la limite a été atteinte (hit), pour donner un feedback utile a l'administrateur.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E42]&lt;br /&gt;
&lt;br /&gt;
=== Virtualisation  ===&lt;br /&gt;
One major difference between the Linux-VServer approach and Virtual Machines is that you do not have the virtualization part as a side-effect, so you have to do that by hand where it makes sense.&lt;br /&gt;
&lt;br /&gt;
For example, a Virtual Machine does not need to think about uptime, because naturally the running OS was started somewhere in the past and will not have any problem to tell the time it thinks it began running.&lt;br /&gt;
&lt;br /&gt;
A context can also store the time when it was created, but that will be different from the systems uptime, so in addition, there has to be some function, which adjusts the values passed from kernel to user-space depending on the context the process belongs to.&lt;br /&gt;
&lt;br /&gt;
This is what for Linux-VServer is known as Virtualization (actually it's more faking some values passed to and from the kernel to make the processes think that they are on a different machine).&lt;br /&gt;
&lt;br /&gt;
Currently modified for the purpose of Virtualization are:&lt;br /&gt;
* System Uptime&lt;br /&gt;
* Host and Domain Name&lt;br /&gt;
* Machine Type and Kernel Version&lt;br /&gt;
* Context Memory Availability&lt;br /&gt;
* Context Disk Space&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E43]&lt;br /&gt;
&lt;br /&gt;
=== Sécurité Renforcée  ===&lt;br /&gt;
Le mécanisme de sécurité Proc-FS protège les entrées dynamiques du système de fichiers proc, de façon à ce que toutes les entrées ne soient pas vues dans tous les contextes.&lt;br /&gt;
&lt;br /&gt;
Le système est constitué de trois drapeaux pour chaque entrée du Proc-FS: Admin, Watch, et Hide.&lt;br /&gt;
&lt;br /&gt;
Le Drapeau Hide active ou désactive entierement une fonctionnalité, donc toute combinaison associée avec un drapeau Hide à 0 aura donc la signification visible.&lt;br /&gt;
&lt;br /&gt;
Les drapeaux Admin et Watch déterminent ou l'entrée hidden (cachée) reste visible; par exemple, si les drapeaux Admin et Hidden sont mis, seul le Host Contexte (0) sera en mesure de voir cette entrée spécifique.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E44] et Voir Exemple [E45]&lt;br /&gt;
&lt;br /&gt;
=== Kernel Helper  ===&lt;br /&gt;
Dans certains cas, il peut être nécessaire de mettre en place un outil en espace utilisateur qui va agir en lieu et place du noyau, lorsque par exemple un processus demande une fonctionnalité disponible sur un serveur réel, mais non disponible dans un contexte.&lt;br /&gt;
&lt;br /&gt;
Le meilleur exemple d'un tel cas est le &amp;quot;Reboot Helper&amp;quot;, qui implémente l'appel système reboot(), invoqué depuis l'intérieur d'un contexte en lieu et place du noyau. L'appel sera éxécuté depuis le contexte hôte, qui lancera l'action adéquate, reboot ou un simple halt du contexte en question.&lt;br /&gt;
&lt;br /&gt;
Bien que ce &amp;quot;helper&amp;quot; soit concu pour être flexible et gérer un certain nombre de choses de la même facon, il n'est pas utilisé pour l'instant à autre chose, et pourrait être remplacé dans le futur par une interface par evènement.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités et documentation additionnelle ==&lt;br /&gt;
=== Unification  ===&lt;br /&gt;
L'un des objectifs centraux de Linux-VServer est de réduire l'utilisation des ressources partout ou cela est possible. Une excellente idée a donc germé, celle de partager des fichiers à travers les différents contextes sans interférer avec les taches administratives classiques ou diminuer le niveau de sécurité.&lt;br /&gt;
&lt;br /&gt;
Les fichiers communs à plusieurs contextes, peu sujet à être modifiés, comme les bibliothèques ou les binaires, peuvent être soudés via un lien dur sur un système de fichier partagé, réduisant d'autant le besoin en espace disque, cache d'inodes, et surtout, l'occupation mémoire, via l'utilisation des bibliothèques partagées.&lt;br /&gt;
&lt;br /&gt;
Seul inconvénient, si nous ne prenons pas quelques mesures supplémentaires, un contexte malicieux sera en mesure, par accident ou volontairement, de détruire ou modifier un tel fichier partagé, ce qui aurait des conséquences directes sur les autres contextes.&lt;br /&gt;
La première étape consiste à placer sur les fichiers partagés un drapeau Immutable (et enlever la caps qui permet de modifier un tel fichier). Il faut toutefois ajouter un attribut supplémentaire à ces fichiers partagés, pour permettre leur suppréssion, lors, par exemple, d'une mise à jour des bibliothèques dans un l'un des contextes.&lt;br /&gt;
&lt;br /&gt;
Ces fichiers liés, immutables, que l'ont peut toutefois détruire, et appartenant à plus d'un contexte sont appelés unifiés, et l'action qui consiste à les rechercher et les préparer s'appelle Unification.&lt;br /&gt;
&lt;br /&gt;
Choississez l'unification si vous souhaitez réduire votre usage de ressources. L'inconvénient évident est une administration moins facile. Un Serveur Linux s'installe typiquement sur 500Mo de disque, et 10 serveurs unifiés en consommeront donc seulement 700Mo, et moins de mémoire pour les caches.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Espaces de nom privés  ===&lt;br /&gt;
Ajoutés récemment dans Linux-VServer, les espaces de noms privés utilisent la couche VFS du noyau linux et offrent une vue différente du système de fichier pour chaque contexte.&lt;br /&gt;
Par rapport au schéma traditionnel, l'avantage principal apparait lorsqu'on modifie quelquechose dans un espace de nommage (par exemple, les points de montage); à cet instant, les autres contextes resteront intact, y compris biensur le contexte Hôte.&lt;br /&gt;
Désavantage évident d'une telle approche; entrer dans un tel espace de noms privé n'est pas aussi simple que d'entrer dans un chroot. Toutefois, les choses pourraient changer dans les noyaux futurs, si cette fonctionnalité est par exemple intégrée directement à la fonction chroot().&lt;br /&gt;
&lt;br /&gt;
=== Le système de fichier Proc-FS de Linux-VServer ===&lt;br /&gt;
A structured, dynamically generated subtree of the well-known Proc-FS - actually two of them - has been created to allow for inspecting the different values of Security and Network Contexts.&lt;br /&gt;
   /proc/virtual&lt;br /&gt;
     .../info&lt;br /&gt;
&lt;br /&gt;
   /proc/virtual/&amp;lt;pid&amp;gt;&lt;br /&gt;
     .../info&lt;br /&gt;
     .../status&lt;br /&gt;
     .../sched&lt;br /&gt;
     .../cvirt&lt;br /&gt;
     .../cacct&lt;br /&gt;
     .../limit&lt;br /&gt;
&lt;br /&gt;
=== Extensions Token Bucket  ===&lt;br /&gt;
While the basic idea of Linux-VServer is a peaceful coexistence of all contexts, sharing the common resources in a respectful way, it is sometimes useful to control the resource distribution for resource hungry processes.&lt;br /&gt;
&lt;br /&gt;
The basic principle of a Token Bucket is not very new. It is given here as an example for the Hard CPU Limit. The same principle also applies to scheduler priorities, network bandwidth limitation and resource control in general.&lt;br /&gt;
&lt;br /&gt;
The Hard CPU Limit uses this mechanism in the following way: consider a bucket of a certain size S which is filled with a specified amount of tokens R every interval T, until the bucket is &amp;quot;full&amp;quot; - excess tokens are spilled. At each timer tick, a running process consumes exactly one token from the bucket, unless the bucket is empty, in which case the process is put on a hold queue until the bucket has been refilled with a minimum M of tokens. The process is then rescheduled.&lt;br /&gt;
&lt;br /&gt;
A major advantage of a Token Bucket is that a certain amount of tokens can be accumulated in times of quiescence, which later can be used to burst when resources are required.&lt;br /&gt;
&lt;br /&gt;
Where a per-process Token Bucket would allow for a CPU resource limitation of a single process, a Context Token Bucket allows to control the CPU usage of all confined processes.&lt;br /&gt;
&lt;br /&gt;
Another approach, which is also implemented, is to use the current fill level of the bucket to adjust the process priority, thus reducing the priority of processes belonging to excessive contexts.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Limites Disque par Contexte  ===&lt;br /&gt;
Pour faire usage de cette fonctionnalité, le support pour les fichiers étiquetés XID doit être présent. Grace aux limites par contexte, vous pouvez alors régler une limite différente pour chaque contexte d'une partition partagée.&lt;br /&gt;
&lt;br /&gt;
Chaque block et inode d'un système de fichier est comptabilisé, dès lors qu'un hachage XID a été ajouté à ce système de fichier dans ce contexte donné.&lt;br /&gt;
Those values, including current usage, maximum and reserved space, will be shown for filesystem queries, creating the illusion that the shared filesystem has a different usage and size, for each context.&lt;br /&gt;
&lt;br /&gt;
=== Quota par Contexte ===&lt;br /&gt;
Similar to the Context Disk Limits, Per-Context Quota uses separate quota hashes for different Contexts on a shared filesystem. This is not required to allow for Linux-VServer quota on separate partitions.&lt;br /&gt;
&lt;br /&gt;
=== Le périphérique &amp;quot;proxy&amp;quot; VRoot  ===&lt;br /&gt;
Les opérations sur les Quotas (ioctls) nécessitent un accès aux périphériques de bloc. Ils ne sont donc pas disponible dans un VPS.&lt;br /&gt;
&lt;br /&gt;
=== Stealth  ===&lt;br /&gt;
Pour certaines applications, par exemple la préparation d'un &amp;quot;pot de miel&amp;quot; (honey-pot), ou d'une imitation particulièrement réaliste d'un vrai serveur à des fins éducatives, vous aurez peut-être besoin de confondre le contexte du serveur hôte (réel) et celui de votre pot de miel. &lt;br /&gt;
Toutefois, certaines alternatives libres comme QEMU ou UML vous permettent de faire la même chose beaucoup mieux et avec moins d'efforts. Ce n'est donc pas une question centrale dans le développement de Linux-VServer.&lt;br /&gt;
&lt;br /&gt;
== Sécurité Linux-VServer ==&lt;br /&gt;
Nous savons maintenant que Linux-VServer implémente quelques principes de sécurité, et comment ils fonctionnent. Il faut tout de même dire quelques mots la dessus, puisqu'il ne suffit pas, bien évidemment, de considérer que Linux-VServer étant une architecture sécurisée, votre système sera sur automatiquement. Comme d'habitude, mieux vaut savoir *exactement* ce que vous faites.&lt;br /&gt;
&lt;br /&gt;
=== Privileges Sécurisées ===&lt;br /&gt;
Actuellement, seules les privileges Linux suivantes sont considérés d'un usage sans risque dans un VPS. Si d'autres privileges sont nécessaires, ils ouvrent probablement des trous de sécurité.&lt;br /&gt;
* CAP_CHOWN&lt;br /&gt;
* CAP_DAC_OVERRIDE&lt;br /&gt;
* CAP_DAC_READ_SEARCH&lt;br /&gt;
* CAP_FOWNER&lt;br /&gt;
* CAP_FSETID&lt;br /&gt;
* CAP_KILL&lt;br /&gt;
* CAP_SETGID&lt;br /&gt;
* CAP_SETUID&lt;br /&gt;
* CAP_NET_BIND_SERVICE&lt;br /&gt;
* CAP_SYS_CHROOT&lt;br /&gt;
* CAP_SYS_PTRACE&lt;br /&gt;
* CAP_SYS_BOOT&lt;br /&gt;
* CAP_SYS_TTY_CONFIG&lt;br /&gt;
* CAP_LEASE&lt;br /&gt;
CAP_NET_RAW par exemple n'est pas considéré comme sur. Bien qu'il soit souvent utilisé pour donner le droit à la commande &amp;quot;ping&amp;quot; (dont le fonctionnement est cassé), il existe de bien meilleures alternatives comme la commande ping &amp;quot;poink[U7]&amp;quot;, ou la cap VXC_RAW_ICMP.&lt;br /&gt;
&lt;br /&gt;
=== La Barrière Chroot  ===&lt;br /&gt;
Il faut vous assurer que le drapeau barrière est bien mis sur tout répertoire parent de chacun de vos VPS. Cela est indispensable pour prévenir quiconque de sortir du chroot et aller se balader dans le système de fichier de votre vserver hôte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichiers de périphériques Sécurisés  ===&lt;br /&gt;
Le répertoire /dev d'un VPS ne doit pas contenir plus de fichiers qu'indiqué ci-dessous, plus le répertoire pour les pts unix.&lt;br /&gt;
* c 1 7 full&lt;br /&gt;
* c 1 3 null&lt;br /&gt;
* c 5 2 ptmx&lt;br /&gt;
* c 1 8 random&lt;br /&gt;
* c 5 0 tty&lt;br /&gt;
* c 1 9 urandom&lt;br /&gt;
* c 1 5 zero&lt;br /&gt;
* d pts&lt;br /&gt;
Bien entendu, d'autres périphériques comme console, mem, kmem, et même des périphériques en mode block et/ou caractère peuvent être ajoutés, mais une certaine expertise sera nécessaire pour s'assurer que cela n'entraine aucun trou de sécurité.&lt;br /&gt;
&lt;br /&gt;
=== Entrées Proc-FS Sécurisées  ===&lt;br /&gt;
Aucun test n'a été fait sur la fiabilité et la sécurité des entrées dans le système de fichiers proc, mais quelques incidents ont été notés lorsqu'on utilise par exemple des entrées proc avec permission d'écriture, et non protégées par une CAP linux.&lt;br /&gt;
Par exemple, &amp;lt;tt&amp;gt;/proc/sysrq-trigger&amp;lt;/tt&amp;gt; est un fichier qui ne doit en aucun cas être accessible dans un VPS sans une excellente raison.&lt;br /&gt;
&lt;br /&gt;
== Champ d'Applications ==&lt;br /&gt;
Le but premier de ce projet est de permettre la création de serveurs virtuels partageant les ressources d'une même machine physique. Un Serveur Virtuel fonctionne comme un serveur Linux normal, et peut lancer des services traditionnels comme telnet, service de mail, service web, service SQL.&lt;br /&gt;
&lt;br /&gt;
=== Séparation Administrative ===&lt;br /&gt;
Un provider intelligent peut donc vendre un serveur virtuel, qui, en utilisant moins de ressources que d'autres techniques de virtualisation, permet de lancer plus d'instances sur une même machine.&lt;br /&gt;
&lt;br /&gt;
La liste des providers qui fournissent un tel service est assez longue, et on peut donc considérer que c'est l'application principale de vserver.&lt;br /&gt;
&lt;br /&gt;
=== Séparation de Services  ===&lt;br /&gt;
Pour séparer plusieurs services identiques ou de nature différente, qui auraient autrement des interférences entre eux, est une chose facile à mettre en oeuvre avec Vserver. Plusieurs raisons peuvent vous pousser à faire cela; un service mal écrit, ou simplement deux services qui ne savent pas co-exister pour de multiples raisons.&lt;br /&gt;
&lt;br /&gt;
Même sur une machine à l'ancienne mode, placer un service très exposé ou non sécurisé car inconnu ou propriétaire dans une prison chroot peut améliorer grandement la sécurité et la maintenabilité.&lt;br /&gt;
&lt;br /&gt;
=== Améliorer la Sécurité  ===&lt;br /&gt;
Bien que l'idée de lancer plusieurs serveurs sur une seule machine soit en elle même très interessante, d'autres concepts sont encore plus interessants. Imaginez un serveur physique sur lequel tourne un seul vserver. Le but est d'isoler l'environnement principal de n'importe quel service, n'importe quel réseau. Vous démarrerez dans l'environnement principal, lancez très très peu de services, puis continuez dans le serveur virtuel.&lt;br /&gt;
&lt;br /&gt;
Le service de l'environnement principal sera:&lt;br /&gt;
* Injoignable depuis le reseau.&lt;br /&gt;
* En mesure de logger tous les messages du virtual serveur, d'une manière sécurisée. Rien dans le serveur virtuel ne permet d'effacer les logs, ou de les modifier. Même un serveur virtuel cracké ne permet pas de changer les logs.&lt;br /&gt;
* En mesure de faire tourner un système de détection d'intrusion, qui espionnera l'état du serveur virtuel sans être accessible ou même détecté. Par exemple, vous pouvez installer et faire tourner tripwire depuis l'environnement principal, et impossible de modifier son fonctionnement ou de le tromper.&lt;br /&gt;
Une autre option consiste à mettre le firewall dans un serveur virtuel, puis étirer la DMZ sur un ensemble de VPS séparés. Moyennant une configuration bien faite, ce genre d'installation peut réduire substantiellement le nombre de machines requises, sans pour autant impacter les performances.&lt;br /&gt;
&lt;br /&gt;
=== Maintenance Facilitée  ===&lt;br /&gt;
Une fonctionnalité clef d'un serveur virtuel est son indépendance vis à vis du matériel. La plupart des problèmes matériels sont inconnus au fonctionnement d'un serveur virtuel.&lt;br /&gt;
&lt;br /&gt;
Le serveur principal agit comme un système hôte, et s'occupe de tous les détails. Le serveur virtuel est simplement un client, et ignore tous les détails. De cette manière, le client peut être déplacé vers un autre serveur physique avec très peu de manipulations.&lt;br /&gt;
&lt;br /&gt;
Par exemple, pour déplacer un serveur virtuel depuis un ordinateur physique vers un autre, il suffit de procéder aux étapes suivantes:&lt;br /&gt;
* stopper le serveur virtuel&lt;br /&gt;
* le copier sur l'autre machine&lt;br /&gt;
* copier sa configuration&lt;br /&gt;
* lancer le serveur virtuel sur la nouvelle machine&lt;br /&gt;
Pas de mise à jour des utilisateurs, pas de configuration matérielle, tant que les machines sont compatibles au niveau de leurs binaires.&lt;br /&gt;
&lt;br /&gt;
=== Scenarios de Fail-Over ===&lt;br /&gt;
En repoussant les limites un peu plus loin, on peut utiliser des technologies de réplication pour conserver une copie identique à la minute près du système de fichier d'un serveur virtuel en fonctionnement. Cela peut servir à un basculement très rapide si le serveur en fonction tombe pour n'importe quelle raison.&lt;br /&gt;
&lt;br /&gt;
Toutes les methodes connues sont utilisables dans ce but, en commancant par la réplication réseau comme rsync, ou drdb, en passant par NBD (les Network Devices), les disques partagés, ou un système de fichier distribué. Toutes ces méthodes sont utilisables pour réduire le temps d'indisponibilité d'un système et améliorer l'efficacité globale.&lt;br /&gt;
&lt;br /&gt;
=== Pour test  ===&lt;br /&gt;
Vous avez besoin de construire un logiciel pour plusieurs versions d'une distribution particulière. (Mandrake 8.2, 9.0, 9.1, 9.2, 10.0), ou bien même pour plusieurs distributions différentes.&lt;br /&gt;
&lt;br /&gt;
Ce problème est résolu d'une manière très simple par Vserver. Avec pas mal d'espace disque, ces différentes distributions peuvent être installées et lancées en parallèle, simplifiant la tache de passer de l'une à l'autre.&lt;br /&gt;
&lt;br /&gt;
Biensur, vous pouvez faire cela simplement avec chroot() et rien d'autre, mais Vserver offre une simulation bien plus réaliste.&lt;br /&gt;
&lt;br /&gt;
== Performance et Stabilité ==&lt;br /&gt;
=== Impact de Linux-VServer sur l'hôte  ===&lt;br /&gt;
=== Overhead dans un Contexte  ===&lt;br /&gt;
=== Taille du patch noyau  ===&lt;br /&gt;
&lt;br /&gt;
== Matériels Non Intel i386 ==&lt;br /&gt;
Linux-VServer est concu pour être indépendant de l'architecture au maximum du coup, seule une toute petite partie, la définition de l'appel système lui-même est spécifique à une architecture. Malgré cela, quelques architectures renfermen des copies de certains codes 'architecture independant', pour une raison ou pou une autre, et nécessitent par conséquent de légères modifications.&lt;br /&gt;
&lt;br /&gt;
Les architectures suivantes sont supportées, et certaines d'entre elles ont même été testées:&lt;br /&gt;
* alpha&lt;br /&gt;
* ia32 / ia64 / xbox&lt;br /&gt;
* x86_64 (AMD64)&lt;br /&gt;
* mips / mips64&lt;br /&gt;
* hppa / hppa64&lt;br /&gt;
* ppc / ppc64&lt;br /&gt;
* sparc / sparc64&lt;br /&gt;
* s390&lt;br /&gt;
* uml&lt;br /&gt;
L'ajout d'une nouvelle architecture est relativement simple, même si de tests extensifs sont nécessaires pour valider le bon fonctionnement d toutes les fonctionnalités telle qu'attendu. (et biensur, du matériel ;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Intro Noyau Linux ==&lt;br /&gt;
Bien que les fonctionnalités décrites plus haut sont codées dans le noyau, quelques outils sont nécessaires en espace utilisateur (userspace) pour les activer et les controler.&lt;br /&gt;
&lt;br /&gt;
Ces outils en userspace communiquent généralement avec le noyau via des appels système (syscalls).&lt;br /&gt;
&lt;br /&gt;
Le chapitre qui suit décrit les liens entre espace kernel et espace utilisateur, comment les appels système, méthode simple pour communiquer entre les processus et le noyau, fonctionnent.&lt;br /&gt;
&lt;br /&gt;
=== Espace Noyau et Espace Utilisateur  ===&lt;br /&gt;
Sous Linux et les systèmes d'exploitation similaires, l'espace noyau et l'espace utilisateur sont séparés, et l'espace d'adressage est divisé en deux parties. Dans L'espace noyau réside le code noyau, alors que les programmes utilisateur vivent dans l'espace utilisateur. Bien entendu, un programme ne peut écrire dans la mémoire noyau, ni dans la mémoire d'un autre processus.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, c'est aussi le cas pour le code du noyau. Le code kernel n'a pas le droit d'écrire dans l'espace utilisateur. Qu'est-ce que cela signifie ? Lorsqu'un driver de périphérique a besoin d'écrire ses octets destinés à un programme dans l'espace utilisateur, il ne peut pas le faire directement, mais doit passer par des fonctions noyau spécifiques à la place. De même, lorsque des paramètres sont passés au noyau par référence à une fonction kernel, la fonction kernel ne peut pas lire les paramètres directement. Elle doit utiliser d'autres fonctions noyau pour lire chaque octet des paramètres.&lt;br /&gt;
&lt;br /&gt;
Bien entendu, il existe des fonctions écrites tout spécialement pour les transfer depuis et vers l'espace utilisateur.&lt;br /&gt;
  copy_to_user(void *to, const void *from, long n);&lt;br /&gt;
  copy_from_user(void *to, const void *from, long n);&lt;br /&gt;
&lt;br /&gt;
get_user() and put_user() Prendre ou placer l'octet, le mot, ou l'entier long depuis l'espace utilisateur ou vers celui-ci. C'est une macro, et elle se fie au type de ses arguments pour évaluer le nombre d'octets à transférer.&lt;br /&gt;
&lt;br /&gt;
=== Appels système Linux  ===&lt;br /&gt;
La plupart des appels libc s'appuient sur les appels système, la plus petite forme de fonction qu'un programme peut appeler.&lt;br /&gt;
&lt;br /&gt;
Ces appels système sont implémentés dans le noyau lui-même, ou dans des modules, parties de code noyau chargeables dynamiquement.&lt;br /&gt;
&lt;br /&gt;
Ils sont implémentés via un multiplexeur appelé avec un masque d'interruption précis. Sous Linux, ce masque d'interruption est int 0x80. Lorsque l'instruction 'int 0x80' est exécutée, le contrôle est donné au noyau (ou, plus précisément, à la fonction _system_call() ), et le démultipléxage proprement dit prend place.&lt;br /&gt;
&lt;br /&gt;
Comment fonctionne la fonction _system_call() ?&lt;br /&gt;
&lt;br /&gt;
Tout d'abord, tous les registres sont sauvegardés, et le contenu du registre %eax est comparé à la table des appels systèmes, qui recense tous les appels systèmes et leur adresse respective.&lt;br /&gt;
&lt;br /&gt;
On peut acceder à cette table via la variable extern void *sys_call_table[] Il existe un nombre et une adresse mémoire données dans cette table pour chacun des appels système.&lt;br /&gt;
&lt;br /&gt;
Ceux-ci sont référencés dans le fichier /usr/include/sys/syscall.h.&lt;br /&gt;
&lt;br /&gt;
Ils sont de la forme SYS_nomappelsysteme. si l'appel système n'est pas implémenté, la cellule correspondante dans la table sys_call_table est à 0, et une erreur est retournée.&lt;br /&gt;
&lt;br /&gt;
Sinon, l'appel système sort, et l'entrée correspondante dans la table donne l'adresse du code ou se trouve l'appel système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implémentation ==&lt;br /&gt;
Ce chapitre est plus particulierement reserve aux developpeurs noyau. Toutefois, les curieux trouveront avantage a tirer le rideau pour decouvrir les entrailles du systeme.&lt;br /&gt;
&lt;br /&gt;
=== Appel systeme===&lt;br /&gt;
Pendant un certain temps, Linux-VServer a utilise different appels systeme pour accomplir les differents aspects de son travail. Tres vite, le nombre des commandes necessaires est devenu important, nous avons donc commence a donner des valeurs magiques aux appels pour choisir le comportement desire.&lt;br /&gt;
&lt;br /&gt;
Enfin, il y a peu de temps, nous avons obtenu un numero reserve pour les appels systemes Linux-VServer, et malgre l'opinion de certains developpeurs, c'est globalement une bonne decision de garder un seul appel systeme.&lt;br /&gt;
&lt;br /&gt;
Avoir plusieurs appels systeme peut faciliter les choses pour travailler avec les appels systemes sur plusieurs architectures; toutefois, cela n'a pas constitue un probleme majeur jusqu'ici, les donnees transitant depuis et vers le noyau etant, conformement au standard C99, fortement typees.&lt;br /&gt;
&lt;br /&gt;
Quoi qu'il en soit, la mise en place d'un appel systeme passe par la creation d'un multiplexeur, qui va decider quelle commande doit etre executee, et quels arguments lui passer. A elle par la suite d'executer effectivement le travail demande.&lt;br /&gt;
 extern asmlinkage long&lt;br /&gt;
 sys_vserver(uint32_t cmd, uint32_t id, void __user *data)&lt;br /&gt;
L'appel systeme Linux-VServer prend trois arguments dans tous les cas: la commande (cmd), un nombre (id), et une structure de donnee en espace utilisateur d'une taille encore inconnue.&lt;br /&gt;
&lt;br /&gt;
Pour faciliter le deboggage et la tenue a jour des informations de versionning, la chaine cmd est decomposee en trois parties: les 12 bits de poids faible contiennent le numero de version, puis 4 bits sont reserves. Les 16 bits de poids fort sont divises en 8 bits de commande et 6 pour la categorie, puis les 2 bits restant, reserves pour usage ulterieur.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc 64 Categories avec chacune 256 commandes, et 4096 revisions possible pour chaque commande, ce qui surpasse largement nos besoins presents et futurs.&lt;br /&gt;
&lt;br /&gt;
Voici un apercu des categories deja definies, et leur valeur numerique associee:&lt;br /&gt;
&lt;br /&gt;
 Matrice des appels systeme V2.6&lt;br /&gt;
&lt;br /&gt;
        |VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL|&lt;br /&gt;
        |STATS  |DESTROY|ALTER  |CHANGE |LIMIT  |TEST   | |       |       |&lt;br /&gt;
        |INFO   |SETUP  |       |MOVE   |       |       | |       |       |&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 SYSTEM |VERSION|VSETUP |VHOST  |       |       |       | |DEVICES|       |&lt;br /&gt;
 HOST   |     00|     01|     02|     03|     04|     05| |     06|     07|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 CPU    |       |VPROC  |PROCALT|PROCMIG|PROCTRL|       | |SCHED. |       |&lt;br /&gt;
 PROCESS|     08|     09|     10|     11|     12|     13| |     14|     15|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 MEMORY |       |       |       |       |       |       | |SWAP   |       |&lt;br /&gt;
        |     16|     17|     18|     19|     20|     21| |     22|     23|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 NETWORK|       |VNET   |NETALT |NETMIG |NETCTL |       | |SERIAL |       |&lt;br /&gt;
        |     24|     25|     26|     27|     28|     29| |     30|     31|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 DISK   |       |       |       |       |       |       | |INODE  |       |&lt;br /&gt;
 VFS    |     32|     33|     34|     35|     36|     37| |     38|     39|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 OTHER  |       |       |       |       |       |       | |VINFO  |       |&lt;br /&gt;
        |     40|     41|     42|     43|     44|     45| |     46|     47|&lt;br /&gt;
 =======+=======+=======+=======+=======+=======+=======+ +=======+=======+&lt;br /&gt;
 SPECIAL|       |       |       |       |FLAGS  |       | |       |       |&lt;br /&gt;
        |     48|     49|     50|     51|     52|     53| |     54|     55|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 SPECIAL|       |       |       |       |RLIMIT |SYSCALL| |       |COMPAT |&lt;br /&gt;
        |     56|     57|     58|     59|     60|TEST 61| |     62|     63|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
&lt;br /&gt;
La definition de ces commandes est simplifiee grace a certaines macros, comme par exemple interroger un drapeau ou lui attribuer une valeur:&lt;br /&gt;
 #define VCMD_get_cflags         VC_CMD(FLAGS, 1, 0)&lt;br /&gt;
 #define VCMD_set_cflags         VC_CMD(FLAGS, 2, 0)&lt;br /&gt;
 &lt;br /&gt;
 extern int vc_get_cflags(uint32_t, void __user *);&lt;br /&gt;
 extern int vc_set_cflags(uint32_t, void __user *);&lt;br /&gt;
&lt;br /&gt;
Notez bien, ce n'est pas la commande elle meme qui est passee en parametre, mais un id et un pointeur vers une structure de donnee en espace utilisateur.&lt;br /&gt;
&lt;br /&gt;
=== Structures de Donnees Utilisees===&lt;br /&gt;
Plusieurs types de structures sont utilisees par les differentes parties de l'implementation; seuls quelques exemples sont donnes ici, l'ensemble complet des structures utilisees se trouve dans le source.&lt;br /&gt;
==== La Structure Data Context====&lt;br /&gt;
La structure Data Context permet de gerer les contextes, leur destruction, ainsi que les futurs contextes hierarchiques.&lt;br /&gt;
&lt;br /&gt;
Les sections reservees pour l'ordonanceur ou les limites sont definies dans des structures separees, comme le veut la logique, puis incorporees dans la structure principale.&lt;br /&gt;
 struct vx_info {&lt;br /&gt;
         struct list_head vx_list;         /* linked list of contexts */&lt;br /&gt;
         xid_t vx_id;                      /* context id */&lt;br /&gt;
         atomic_t vx_refcount;             /* refcount */&lt;br /&gt;
         struct vx_info *vx_parent;        /* parent context */&lt;br /&gt;
 &lt;br /&gt;
         struct namespace *vx_namespace;   /* private namespace */&lt;br /&gt;
         struct fs_struct *vx_fs;          /* private namespace fs */&lt;br /&gt;
         uint64_t vx_flags;                /* context flags */&lt;br /&gt;
         uint64_t vx_bcaps;                /* bounding caps (system) */&lt;br /&gt;
         uint64_t vx_ccaps;                /* context caps (vserver) */&lt;br /&gt;
 &lt;br /&gt;
         pid_t vx_initpid;                 /* PID of fake init process */&lt;br /&gt;
 &lt;br /&gt;
         struct _vx_limit limit;           /* vserver limits */&lt;br /&gt;
         struct _vx_sched sched;           /* vserver scheduler */&lt;br /&gt;
         struct _vx_cvirt cvirt;           /* virtual/bias stuff */&lt;br /&gt;
         struct _vx_cacct cacct;           /* context accounting */&lt;br /&gt;
 &lt;br /&gt;
         char vx_name[65];                 /* vserver name */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de la sous-structure Ordonanceur:&lt;br /&gt;
 struct _vx_sched {&lt;br /&gt;
         spinlock_t tokens_lock; /* lock for this structure */&lt;br /&gt;
 &lt;br /&gt;
         int fill_rate;          /* Fill rate:      add X tokens ... */&lt;br /&gt;
         int interval;           /* Divisor:      ... each Y jiffies */&lt;br /&gt;
         atomic_t tokens;        /*         current number of tokens */&lt;br /&gt;
         int tokens_min;         /* Limit:        minimum for unhold */&lt;br /&gt;
         int tokens_max;         /* Limit:     no more than N tokens */&lt;br /&gt;
         uint32_t jiffies;       /* bias:     integral multiple of Y */&lt;br /&gt;
 &lt;br /&gt;
         uint64_t ticks;         /* token tick events */&lt;br /&gt;
         cpumask_t cpus_allowed; /* cpu mask for context */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
L'idee principale derriere ces sous-structures est de faciliter leur maintenabilite, a l'aide, pour chacune d'elles, d'une fonction init et cleanup, d'ou une lecture facilitee et une maintenabilite accrue.&lt;br /&gt;
&lt;br /&gt;
==== The Scheduler Command Data====&lt;br /&gt;
As an example for the data structure used to control a specific part of the context from user-space, here is a scheduler command and the utilized data structure to set the properties:&lt;br /&gt;
 #define VCMD_set_sched          VC_CMD(SCHED, 1, 2)&lt;br /&gt;
&lt;br /&gt;
 struct  vcmd_set_sched_v2 {&lt;br /&gt;
         int32_t fill_rate;      /* Fill rate:      add X tokens ... */&lt;br /&gt;
         int32_t interval;       /* Divisor:      ... each Y jiffies */&lt;br /&gt;
         int32_t tokens;         /*         current number of tokens */&lt;br /&gt;
         int32_t tokens_min;     /* Limit:        minimum for unhold */&lt;br /&gt;
         int32_t tokens_max;     /* Limit:     no more than N tokens */&lt;br /&gt;
         uint64_t cpu_mask;      /* Mask:               allowed cpus */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Example Accounting: Sockets====&lt;br /&gt;
Basically all the accounting and limit stuff are defined as macros or inline functions capable of handling the different resources, hiding the underlying implementation wherever possible.&lt;br /&gt;
 #define vx_acc_sock(v,f,p,s) \&lt;br /&gt;
         __vx_acc_sock((v), (f), (p), (s), __FILE__, __LINE__)&lt;br /&gt;
&lt;br /&gt;
 static inline void __vx_acc_sock(struct vx_info *vxi,&lt;br /&gt;
         int family, int pos, int size, char *file, int line)&lt;br /&gt;
 {&lt;br /&gt;
         if (vxi) {&lt;br /&gt;
                 int type = vx_sock_type(family);&lt;br /&gt;
&lt;br /&gt;
                 atomic_inc(&amp;amp;vxi-&amp;gt;cacct.sock[type][pos].count);&lt;br /&gt;
                 atomic_add(size, &amp;amp;vxi-&amp;gt;cacct.sock[type][pos].total);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #define vx_sock_recv(sk,s) \&lt;br /&gt;
         vx_acc_sock((sk)-&amp;gt;sk_vx_info, (sk)-&amp;gt;sk_family, 0, (s))&lt;br /&gt;
 #define vx_sock_send(sk,s) \&lt;br /&gt;
         vx_acc_sock((sk)-&amp;gt;sk_vx_info, (sk)-&amp;gt;sk_family, 1, (s))&lt;br /&gt;
 #define vx_sock_fail(sk,s) \&lt;br /&gt;
         vx_acc_sock((sk)-&amp;gt;sk_vx_info, (sk)-&amp;gt;sk_family, 2, (s))&lt;br /&gt;
&lt;br /&gt;
And this general definition is then used where appropriate, for example in the __sock_sendmsg() function like this:&lt;br /&gt;
&lt;br /&gt;
         len = sock-&amp;gt;ops-&amp;gt;sendmsg(iocb, sock, msg, size);&lt;br /&gt;
         if (sock-&amp;gt;sk) {&lt;br /&gt;
                 if (len == size)&lt;br /&gt;
                         vx_sock_send(sock-&amp;gt;sk, size);&lt;br /&gt;
                 else&lt;br /&gt;
                         vx_sock_fail(sock-&amp;gt;sk, size);&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
==== Example Limits: Virtual Memory====&lt;br /&gt;
 #define vx_pages_avail(m, p, r) \&lt;br /&gt;
         __vx_pages_avail((m)-&amp;gt;mm_vx_info, (r), (p), __FILE__, __LINE__)&lt;br /&gt;
 &lt;br /&gt;
 static inline int __vx_pages_avail(struct vx_info *vxi,&lt;br /&gt;
                 int res, int pages, char *file, int line)&lt;br /&gt;
 {&lt;br /&gt;
         if (!vxi)&lt;br /&gt;
                 return 1;&lt;br /&gt;
         if (vxi-&amp;gt;limit.rlim[res] == RLIM_INFINITY)&lt;br /&gt;
                 return 1;&lt;br /&gt;
         if (atomic_read(&amp;amp;vxi-&amp;gt;limit.res[res]) +&lt;br /&gt;
                 pages &amp;lt; vxi-&amp;gt;limit.rlim[res])&lt;br /&gt;
                 return 1;&lt;br /&gt;
         return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #define vx_vmpages_avail(m,p)  vx_pages_avail(m, p, RLIMIT_AS)&lt;br /&gt;
 #define vx_vmlocked_avail(m,p) vx_pages_avail(m, p, RLIMIT_MEMLOCK)&lt;br /&gt;
 #define vx_rsspages_avail(m,p) vx_pages_avail(m, p, RLIMIT_RSS)&lt;br /&gt;
&lt;br /&gt;
And again the test against those limits at certain places, for example here in copy_process()&lt;br /&gt;
         /* check vserver memory */&lt;br /&gt;
         if (p-&amp;gt;mm &amp;amp;&amp;amp; !(clone_flags &amp;amp; CLONE_VM)) {&lt;br /&gt;
                 if (vx_vmpages_avail(p-&amp;gt;mm, p-&amp;gt;mm-&amp;gt;total_vm))&lt;br /&gt;
                         vx_pages_add(p-&amp;gt;mm-&amp;gt;mm_vx_info,&lt;br /&gt;
                                 RLIMIT_AS, p-&amp;gt;mm-&amp;gt;total_vm);&lt;br /&gt;
                 else&lt;br /&gt;
                         goto bad_fork_free;&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
==== Example Virtualization: Uptime====&lt;br /&gt;
 void vx_vsi_uptime(struct timespec *uptime)&lt;br /&gt;
 {&lt;br /&gt;
         struct vx_info *vxi = current-&amp;gt;vx_info;&lt;br /&gt;
 &lt;br /&gt;
         set_normalized_timespec(uptime,&lt;br /&gt;
                 uptime-&amp;gt;tv_sec - vxi-&amp;gt;cvirt.bias_tp.tv_sec,&lt;br /&gt;
                 uptime-&amp;gt;tv_nsec - vxi-&amp;gt;cvirt.bias_tp.tv_nsec);&lt;br /&gt;
         return;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
         if (vx_flags(VXF_VIRT_UPTIME, 0))&lt;br /&gt;
                 vx_vsi_uptime(&amp;amp;uptime, &amp;amp;idle);&lt;br /&gt;
&lt;br /&gt;
[[Category:French]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_migrated_pages</id>
		<title>List of migrated pages</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_migrated_pages"/>
				<updated>2009-03-30T10:07:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: Linux-VServer-Paper-French&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are already migrated to the new wiki.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of pages not migrated yet]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
| ArchVserver ||[[Installation on ArchLinux]]&lt;br /&gt;
|-&lt;br /&gt;
|Caps+and+Flags || [[Capabilities and Flags]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|Changelog26-Devel || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevel26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevelExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogStableExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|chroot-barrier || [[Secure chroot Barrier]]&lt;br /&gt;
|-&lt;br /&gt;
|Dates+and+Planning || [[News]]&lt;br /&gt;
|-&lt;br /&gt;
|Documentation || [[Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|Examples || [[Do I need Linux-VServer]]&lt;br /&gt;
|-&lt;br /&gt;
|FrequentlyAskedQuestions || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooGuestHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooHostHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Hacker+Page || [[Sandbox]]&lt;br /&gt;
|-&lt;br /&gt;
|Hall+of+Fame || [[Hall of Fame]]&lt;br /&gt;
|-&lt;br /&gt;
|HistoryList || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|HowtoSSHLogin || [[SSH login]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux VServer Howto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-French||[[Paper/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-self-definition || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer || [[Welcome to Linux-VServer.org]]&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki+GIT || [[Wiki Team]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces || [[Namespaces]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces-French || [[Namespaces/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|ProblematicPrograms || [[Problematic Programs]]&lt;br /&gt;
|-&lt;br /&gt;
|ProjectOverview || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|RecentChanges || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|Related+Projects || [[Related Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|Release+FAQ || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Resource+Limits || [[Resource Limits]]&lt;br /&gt;
|-&lt;br /&gt;
|short+presentation || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools+and+patches || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|VirtualServer || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConcept || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConfiguration || [[VServerConfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|VServer+Hosting || [[VServer Hosting]]&lt;br /&gt;
|-&lt;br /&gt;
|Vservers+and+X || [[Vservers and X]]&lt;br /&gt;
|-&lt;br /&gt;
|WikiStat || [[Special:Allpages]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-03-30T10:06:16Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
# http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
# http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
# http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
# http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
# http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
# http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-espaniol&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
# http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
# http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenVPN&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenwallHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler+Parameters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
# http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
# http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
# http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
# http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VisualAids&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/WorkingPrograms&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Paper/fr</id>
		<title>Paper/fr</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Paper/fr"/>
				<updated>2009-03-30T10:05:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Abstract ==&lt;br /&gt;
Concept logiciel basé sur les ''Security Contextes'' permet la création d'une multitude de serveurs virtuels Privés (VPS) tournant simultanément sur un même serveur physique à pleine vitesse, en partageant efficacement les ressources matérielles.&lt;br /&gt;
Un VPS offre un environnement quasiment identique à celui d'un serveur Linux conventionnel. Tous les services, comme ssh, mail, Web, bases de données, peuvent être lancés dans un tel VPS, sans aucune modification (ou, dans certains cas, des modifications mineures), exactement comme avec n'importe quel autre serveur réel.&lt;br /&gt;
&lt;br /&gt;
Chaque serveur virtuel possède sa propre base utilisateurs et son mot de passe root. Il est isolé de tous les autres serveurs virtuels, sauf en ce qui concerne les ressources matérielles, qui sont partagées par tous les serveurs virtuels.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Au fur et à mesure des années, les micro ordinateurs sont devenus suffisemment puissant pour utiliser la virtualisation comme méthode pour donner l'illusion d'avoir une multitude de petites machines virtuelles, chacune d'elle tournant avec une instance différente de n'importe quel système d'exploitation.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs types de Machines Virtuelles (VMs) dont les fonctionnalités sont similaires, mais qui diffèrent dans le degré d'abstraction et les méthodes utilisées pour la virtualisation.&lt;br /&gt;
&lt;br /&gt;
La plupart d'entre elles &amp;quot;émulent&amp;quot; une ressource matérielle réelle ou fictive, qui, à son tour, fait usage de &amp;quot;vraies&amp;quot; ressources du système Hote (la machine qui fait tourner les VMs). Cette approche, utilisée par la plupart des émulations système (comme QEMU[U1], Bochs[U2], ... permet à l'émulateur d'éxécuter n'importe quel système d'exploitation, même pour une architecture différente (CPU et matérielle). Pas besoin de modifier le système d'exploitation Invité, puisqu'il n'est pas conscient de s'éxécuter sur autre chose qu'un vrai matériel.&lt;br /&gt;
&lt;br /&gt;
Quelques émulations systèmes ont besoin d'un petit nombre de modifications ou de pilotes de périphériques spécifiques sur le système Hote ou le système Invité pour améliorer les performances, et minimiser le grignotage superflu de ressources système qui passe dans les systèmes de cache et de médiation entre le système Hote et le système Invité. Bien que cela améliore sensiblement l'efficacité de ces solutions, les ressources perdues sont toujours notables (par exemple dans UML[U3] et Xen[U4]).&lt;br /&gt;
&lt;br /&gt;
Supposez par contre que les systèmes d'exploitation à lancer ne sont pas différents ... La plupart des applications qui tournent sur un serveur n'ont pas besoin d'acceder au matériel ou à du code au niveau noyau, et pourraient donc partager une machine avec les autres, si l'on pouvait les séparer et les isoler ...&lt;br /&gt;
&lt;br /&gt;
== Le Concept ==&lt;br /&gt;
A la base, un serveur Linux est constitué de trois blocs constitutifs: Le matériel, le Noyau, et les Applications. Le Matériel dépend habituellement du fournisseur ou de l'administrateur système, et, bien qu'ayant une grande influence sur les performances globales, ne peut pas être changé facilement, et diffère sensiblement d'une configuration à l'autre.&lt;br /&gt;
&lt;br /&gt;
Un role de base du noyau consiste à créer une couche d'abstraction au dessus du matériel pour permettre aux processus (Applications) de travailler avec des ressources (Données) sans connaitre les détails du matériel qui se trouve en dessous. Idéalement, ces processus sont complètement agnostiques vis-à-vis du matériel, écrit dans un langage interprété, et ne nécessitant par conséquent aucun savoir faire spécifique au matériel.&lt;br /&gt;
&lt;br /&gt;
Puisqu'un système possède assez de ressources pour faire tourner environ dix fois plus d'applications que nécessaire sur un serveur Linux traditionnel, pourquoi ne pas placer sur celui-ci une dizaine de serveurs, qui vont partager les ressources d'une manière efficace ?&lt;br /&gt;
&lt;br /&gt;
La plupart des serveurs d'application (par exemple httpd) considère qu'il est la seule application à fournir un service particulier, et d'habitude, va donc supposer une organisation particulière au niveau du système de fichiers, et de l'environnement. Cela implique que deux services identiques tournant sur un même serveur physique, mais différent simplement au niveau de leur adresse IP, par exemple, doivent être coordonnées. Cela demande typiquement pas mal de boulot pour l'administrateur système, et cela peut conduire à un stabilité réduite du système et de la sécurité.&lt;br /&gt;
&lt;br /&gt;
Le concept de base de la solution Linux-VServer est de séparer l'environnement en user space (espace utilisateur) en trois unités distinctes (appellées parfois VPS, ou Virtual Private Server), de telle manière que chaque VPS ressemblera à un vrai serveur vis-à-vis des processus qu'il contient.&lt;br /&gt;
&lt;br /&gt;
Bien que différentes Distributions Linux utilisent des noyaux modifiées (parfois lourdement) pour assurer le support de telle ou telle fonctionnalité, ou matériel, la plupart des distributions Linux ne sont pas liées irrévocablement à un noyau linux particulier.&lt;br /&gt;
&lt;br /&gt;
Linux-VServer utilise cela pour donner à plusieurs distributions, la possibilité de se lancer au dessus d'un seul noyau, partagé, sans accès direct au matériel, et partager les ressources d'une manière très efficace.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure Existante ==&lt;br /&gt;
Les noyaux Linux récents fournissent déjà de nombreuses fonctions de sécurité qui sont utilisées par Linux-Vserver pour fonctionner, telles que le Système de Privileges Linux, les limites de ressource, les attributs de fichier et l'environnement chroot. Les sections suivantes vous donneront un court aperçu de chacune d'entre elles. &lt;br /&gt;
=== Le système de Privileges (Capabilities) Linux  ===&lt;br /&gt;
En science informatique, un privilege est un jeton utilisé par un processus pour prouver qu'il est autorisé à faire une opération sur un objet. Le Système de privileges Linux est basé sur les &amp;quot;Privileges POSIX&amp;quot;, un concept légèrement similaire, conçu pour diviser les privilèges root puissants en un ensemble de privilèges distincts.&lt;br /&gt;
&lt;br /&gt;
==== Privileges POSIX ====&lt;br /&gt;
Un processus possède trois champs de bits appelés les privileges héritables (I - &amp;quot;Inheritable&amp;quot;), permises (P), et effectives (E). Chaque privilege est implémenté dans un bit de chacun de ces champs, bit qui est soit défini soit non-défini.&lt;br /&gt;
&lt;br /&gt;
Quand un processus essaie de faire une opération privilégiée, le système d'exploitation va vérifier les bits appropriés dans l'ensemble effectif des processus (au lieu de vérifier si l'uid respectif du processus est 0 comme il le fait habituellement).&lt;br /&gt;
&lt;br /&gt;
Par exemple, quand un processus essaie de modifier l'horloge, le noyau Linux va vérifier que ce processus a le bit CAP_SYS_TIME (actuellement le bit 25) parmi ses privileges effectives.&lt;br /&gt;
&lt;br /&gt;
L'ensemble permis d'un processus indique les privileges que celui-ci peut utiliser. Le processus peut avoir des privileges définies dans l'ensemble permis qui ne sont pas dans l'ensemble effectif.&lt;br /&gt;
&lt;br /&gt;
Ceci indique que le processus a temporairement désactivé ce privilege. Un processus n'est autorisé à définir un bit dans son ensemble effectif que si ce bit est disponible dans son ensemble permis.&lt;br /&gt;
&lt;br /&gt;
La distinction entre privileges effectif et permis existe pour que les processus puissent réaliser des opérations qui nécessitent des privilèges.&lt;br /&gt;
&lt;br /&gt;
Les privileges héritables sont les privileges du processus courant qui peuvent être hérités par un programme exécuté par ce dernier. L'ensemble permis d'un processus est masqué contre l'ensemble héritable pendant exec().&lt;br /&gt;
&lt;br /&gt;
Rien de spécial ne se produit durant fork() ou clone().&lt;br /&gt;
&lt;br /&gt;
Les processus fils ou les threads obtiennent une copie exacte des privileges du processus parent.&lt;br /&gt;
&lt;br /&gt;
L'implémentation dans Linux s'arrête là, alors que les privileges POSIX[U5] requièrent l'ajout d'un ensemble de privileges aux fichiers, pour remplacer le flag SUID (au moins pour les exécutables).&lt;br /&gt;
&lt;br /&gt;
==== Vue d'ensemble des privileges ====&lt;br /&gt;
La liste des privileges POSIX utilisées avec Linux est longue, et les 32 bits disponibles sont presques tous utilisés. Bien que la liste détaillée de ces privileges puisse être trouvée dans /usr/include/linux/capability.h sur la plupart des systèmes Linux, une vue d'ensemble des privileges importantes est donnée ici.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| CAP_CHOWN || change le propriétaire et le groupe du fichier&lt;br /&gt;
|-&lt;br /&gt;
| 5|| CAP_KILL|| envoie un signal au processus avec un ID utilisateur différent, réel ou effectif&lt;br /&gt;
|-&lt;br /&gt;
| 6|| CAP_SETGID|| permet le passage de setgid(2), setgroups(2), et de gids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 7|| CAP_SETUID|| permet le passage de set*uid(2) et d'uids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 8|| CAP_SETPCAP|| transfert/déplace tout privilege de l'ensemble permis vers/depuis n'importe quel pid&lt;br /&gt;
|-&lt;br /&gt;
| 9|| CAP_LINUX_IMMUTABLE|| permet la modification des attributs de fichier S_IMMUTABLE et S_APPEND&lt;br /&gt;
|-&lt;br /&gt;
| 11|| CAP_NET_BROADCAST|| permet la diffusion et l'écoute en multicast&lt;br /&gt;
|-&lt;br /&gt;
| 12|| CAP_NET_ADMIN|| permet la configuration de l'interface, le pare-feux IP, le masquerading, l'accounting, le débugage de sockets, les tables de routage, la liaison sur n'importe quelle adresse, l'entrée dans le mode de promiscuité, le multicasting...&lt;br /&gt;
|-&lt;br /&gt;
| 13|| CAP_NET_RAW|| permet l'utilisation des sockets RAW et PACKET&lt;br /&gt;
|-&lt;br /&gt;
| 16|| CAP_SYS_MODULE|| ajoute et retire des modules noyau&lt;br /&gt;
|-&lt;br /&gt;
| 18|| CAP_SYS_CHROOT|| permet chroot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 19|| CAP_SYS_PTRACE|| permet ptrace() sur n'importe quel processus&lt;br /&gt;
|-&lt;br /&gt;
| 21|| CAP_SYS_ADMIN|| la liste serait trop longue, ceci permet en gros de faire tout ce qui n'est pas mentionné dans les autres privileges&lt;br /&gt;
|-&lt;br /&gt;
| 22|| CAP_SYS_BOOT|| permet reboot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 23|| CAP_SYS_NICE|| permet l'élévation des privilèges et la modification de la priorité des autres processus, en modifiant l'ordonnanceur&lt;br /&gt;
|-&lt;br /&gt;
| 24|| CAP_SYS_RESOURCE|| passe outre les limites de ressource, de quota, l'espace réservé sur un système de fichier...&lt;br /&gt;
|-&lt;br /&gt;
| 27|| CAP_MKNOD|| permet les aspects privilégiés de mknod(2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir également les Exemples [E01],[E02], et [E03].&lt;br /&gt;
&lt;br /&gt;
=== Limite des Ressources  ===&lt;br /&gt;
Vous pouvez limiter les ressources de chaque processus en spécifiant une limite pour chaque ressource. A la manière des privileges Linux, il existe deux types de limites, l'une Douce, l'autre Dure.&lt;br /&gt;
&lt;br /&gt;
La limite Douce est la valeur que le noyau imposera pour cette ressource à un processus. Un utilisateur non privilégié pourra régler la limite Douce n'importe où en dessous de la valeur Dure. Seul l'utilisateur root pourra re-hausser la limite Dure.&lt;br /&gt;
&lt;br /&gt;
==== Apercu des Ressources Limit-ables ====&lt;br /&gt;
La liste des ressources qui peuvent être limitées se trouve dans le fichier /usr/include/asm/resource.h sur la plupart des systèmes Linux.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| RLIMIT_CPU || Temps CPU en secondes. un signal SIGXCPU est envoyé au processus qui a atteind la limite Douce, et un SIGKILL pour la limite Dure.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| RLIMIT_CORE || Taille maximale d'un fichier core.&lt;br /&gt;
|-&lt;br /&gt;
| 5|| RLIMIT_RSS || Nombre de pages maximum qu'un processus peut utiliser (en RAM)&lt;br /&gt;
|-&lt;br /&gt;
| 6|| RLIMIT_NPROC || Nombre maximum de processus autorisés à l'utilisateur réel du processus appelant.&lt;br /&gt;
|-&lt;br /&gt;
| 7|| RLIMIT_NOFILE || Spécifie la valeur +1 pour le nombre maximum de descripteurs de fichiers ouvert par un processus.&lt;br /&gt;
|-&lt;br /&gt;
| 8|| RLIMIT_MEMLOCK || Nombre maximum de pages mémoire virtuelle autorisées à être vérouillées en RAM à l'aide des appels mlock() ou mlockall().&lt;br /&gt;
|-&lt;br /&gt;
| 9|| RLIMIT_AS || Nombre maximum de pages de mémoire virtuelle disponible pour un processus.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Limite de l'espace d'adressage) &lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E11], et [E12].&lt;br /&gt;
&lt;br /&gt;
=== Attributs de Fichiers  ===&lt;br /&gt;
Auparavant, cette fonctionnalité n'était disponible qu'avec ext2, mais maintenant tous les systèmes de fichiers majeurs implémentent un ensemble d'Attributs de fichiers de base, qui permettent le paramétrage de certaines propriétés. Voici de nouveau un bref aperçu des possibilités des attributs, et leur signification.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| s SECRM ||  Lorsqu'un fichier avec cet attribut est détruit, les blocs qui le composent sont mis à zéro et re-écrit sur le disque.&lt;br /&gt;
|-&lt;br /&gt;
| u UNRM ||  Lorsqu'un fichier avec cet attribut est détruit, son contenu est sauvegardé.&lt;br /&gt;
|-&lt;br /&gt;
| c COMPR ||  Un fichier marqué avec cet attribut est automatiquement compressé à l'écriture et décompressé à la lecture. (pas encore implémenté)&lt;br /&gt;
|-&lt;br /&gt;
| i IMMUTABLE ||  Un fichier avec cet attribut ne pourra pas être modifié: Impossible de le renommer ou de le détruire, impossible de créer un lien vers ce fichier, ni d'écrire une donnée de plus vers ce fichier. &lt;br /&gt;
|-&lt;br /&gt;
| a APPEND ||  Un fichier avec cet attribut ne pourra être ouvert qu'en mode ajout.&lt;br /&gt;
|-&lt;br /&gt;
| d NODUMP ||  Si cet attribut de fichier est mis, le fichier n'est pas candidat à un backup via l'utilitaire &amp;quot;dump&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| S SYNC ||  Les mises à jour vers ce fichier se feront de manière synchrone.&lt;br /&gt;
|-&lt;br /&gt;
| A NOATIME ||  Empêche la mise à jour de l'enregistrement atime lors d'un accès ou d'une modification de fichier.&lt;br /&gt;
|-&lt;br /&gt;
| t NOTAIL ||  Un fichier avec l'attribut t n'aura pas de fragment bloc en fin de fichier fusionné avec un autre fichier.&lt;br /&gt;
|-&lt;br /&gt;
| D DIRSYNC ||  Les modifications apportés à ce répertoire seront écrites de manière synchrones. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E13] et [E14].&lt;br /&gt;
&lt;br /&gt;
=== La Commande chroot(1)  ===&lt;br /&gt;
chroot permet de lancer une commande en changeant le répertoire racine dans lequel il va s'éxécuter. Cela signifie que tout parcours du système de fichiers à partir de la racine '/' se fera à partir de la racine substituée et non pas à partir de la racine originelle.&lt;br /&gt;
&lt;br /&gt;
Bien que le chroot Linux n'est pas très sécurisé, son utilisation augmente l'isolation des processus par rapport au système de fichier, et, à condition de l'utiliser correctement, peut être utilisé pour &amp;quot;emprisonner&amp;quot; un processus, un utilisateur unique, ou un démon (service).&lt;br /&gt;
&lt;br /&gt;
Voir l'Exemple [E15]&lt;br /&gt;
&lt;br /&gt;
== Modifications Requises ==&lt;br /&gt;
Ce chapitre décrit les modifications à apporter au noyau pour implémenter un mécanisme comme Linux-VServer.&lt;br /&gt;
&lt;br /&gt;
=== Séparation de Contextes ===&lt;br /&gt;
La séparation telle que décrite dans la partie 'Concepts' nécessite quelques modifications au noyau pour permettre la notion de Contexte.&lt;br /&gt;
&lt;br /&gt;
Le but d'un tel &amp;quot;Contexte&amp;quot; est de cacher à un processus tout ce qui ne doit pas etre à sa portée, et empécher les interractions indésirables entre un processus appartenant à un contexte et un processus appartenant à un autre contexte.&lt;br /&gt;
&lt;br /&gt;
Cette séparation nécessite l'extension d'un certain nombre de structures de données pour qu'elles prennent en compte les contextes et fassent la différentiation entre deux uids identiques mais utilisés dans deux serveurs virtuels différents.&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons besoin d'un contexte par defaut qui sera utilisé par le serveur hôte au démarrage, et pour éviter les problèmes liés à des suppositions érronées de certains outils en espace utilisateur (comme pstree) par exemple, l'idée comme quoi init existe toujours et a toujours l'uid 1.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'administration, le Contexte de l'Hôte n'est pas traité différemment d'un autre contexte, en tout cas du point de vue de l'isolation des processus.&lt;br /&gt;
&lt;br /&gt;
Pour avoir un apercu global de tous les processus, un Spectateur spécial a été mis en place, qui est capable de capturer tous les processus d'un coup.&lt;br /&gt;
Voir les Examples [E21],[E22] et [E23]&lt;br /&gt;
&lt;br /&gt;
=== Séparation Réseau  ===&lt;br /&gt;
Bien que les Contextes soient suffisant pour isoler un groupe de processus, un autre type d'isolation, ou plutot une limitation, est nécessaire pour confiner les processus dans un sous ensemble d'adresses réseau disponibles.&lt;br /&gt;
&lt;br /&gt;
Plusieurs problèmes doivent être pris en compte dans ce sens: par exemple, les appels système bind sur IPADDR_ANY doivent être traités d'une manière bien particulière.&lt;br /&gt;
&lt;br /&gt;
Actuellement, Linux-Vserver n'utilise pas les interfaces virtuelles (et ne les utilisera peut-être jamais), pour minimiser le cout supplémentaire qu'elles engendrent. De ce fait, l'attachement d'une socket et la transmission des packets ont été adaptés.&lt;br /&gt;
&lt;br /&gt;
Voir Example [E24]&lt;br /&gt;
&lt;br /&gt;
=== La Barrière Chroot  ===&lt;br /&gt;
Un problème majeur avec le chroot() de Linux aujourd'hui tient au fait que cette information est volatile, et changera au prochain appel système de chroot().&lt;br /&gt;
&lt;br /&gt;
Voici une façon simple pour sortir d'un environnement chrooté Créez tout d'abord un fichier, et retenez son descripteur. Puis chrootez dans un répertoire au même niveau ou un niveau au dessous de celui-ci. Cela a pour effet de faire descendre la racine' dans le système de fichiers. Ensuite, faites un appel à fchdir() sur le descripteur de fichiers pour sortir de cette nouvelle racine. Vous sortirez en même temps de l'ancienne racine, qui a été perdue suite au dernier appel système chroot().&lt;br /&gt;
&lt;br /&gt;
Alors que des méthodes exotiques étaient utilisées dans les anciennes versions de Linux-Vserver pour fixer ce problème, les versions récentes utilisent un marquage spécial, connu sous le nom de Barrière Chroot, placé sur le parent de tous les VPS pour prévenir toute modification non autorisée et sortie du confinement.&lt;br /&gt;
&lt;br /&gt;
=== Un plafond pour les Privileges  ===&lt;br /&gt;
L'implémentation actuelle des privileges Linux ne prend pas en compte les privileges POSIX sur les systèmes de fichiers. Si cela était le cas, les executables setuid et setgid seraient sécurisés. Pour conserver donc une bonne sécurité malgré cette contrainte, nous avons défini un plafond pour tous les processus d'un même contexte, et un masque de privileges additionnel pour chaque contexte a été aussi ajouté pour limiter à ce seul masque les processus qui appartiennent à ce contexte.&lt;br /&gt;
&lt;br /&gt;
La signification des privileges individuels (bits) pour ce masque est exactement identique à celui que permet l'ensemble des privileges.=== Isolation de Ressources  ===&lt;br /&gt;
&lt;br /&gt;
=== Isolation de Ressources ===&lt;br /&gt;
La plupart des ressources sont d'une certaine manière partagées à travers les différents contextes; certaines requièrent une isolation plus importante que les autres, soit pour éviter les problèmes de sécurité, ou pour permettre une meilleure comptabilité de l'usage des ressources;&lt;br /&gt;
&lt;br /&gt;
Ces ressources sont:&lt;br /&gt;
* mémoire partagée, IPC&lt;br /&gt;
* PID et User ID&lt;br /&gt;
* Drapeau xid sur les fichiers&lt;br /&gt;
* ptys Unix&lt;br /&gt;
* sockets&lt;br /&gt;
&lt;br /&gt;
=== Drapeau XID pour les Filesystem XID ===&lt;br /&gt;
Bien qu'elle puisse être totalement desactivée, cette modification est requise pour une meilleure robustesse au niveau du système de fichiers, et pour isoler les contextes. Le drapeau XID est aussi totalement indispensable pour implémenter le support pour les Limites Disques par Contexte et les Quotas par Contexte sur une partition partagée.&lt;br /&gt;
&lt;br /&gt;
Ce concept d'ajouter un identifiant de contexte (xid) à chaque fichier pour créer une notion d'appartenance d'un fichier à un contexte parait simple ... Il n'en est rien, car l'implémentation actuelle n'est pas triviale. Elle nécessite soit une modification des représentations du système de fichier, soit des astuces au niveau applicatif.&lt;br /&gt;
&lt;br /&gt;
Une approche non intrusive pour éviter toute modification du système de fichiers sous-jacent est d'utiliser les bits de poids forts de champs existants, comme ceux des UID ou GID pour stocker le XID additionnel.&lt;br /&gt;
&lt;br /&gt;
Une fois que les informations de contexte sont disponibles au niveau de chaque inode, l'étape logique suivante est d'étendre la vérification d'accès au contexte en plus du reste.&lt;br /&gt;
&lt;br /&gt;
Actuellement, tous les acces aux inodes sont vérifiés par rapport à leur contexte ID, à l'exception des contextes &amp;quot;Hôte&amp;quot; et &amp;quot;Spectateur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les fichiers non étiquettés dans le contexte hôte sont simplement traités comme appartenant au contexte courant, et cela est requis pour que l'Unification soit possible. Si un tel fichier est modifié à l'intérieur d'un contexte, elle changera en silence vers son noveau contexte, en changeant son XID.&lt;br /&gt;
&lt;br /&gt;
Les méthodes suivantes de marquage sont utilisées:&lt;br /&gt;
&lt;br /&gt;
;UID32/GID32 or EXTERNAL:  Ce format utilise l'espace inutilisé dans l'inode disque pour stocker les informations de contexte. Pour l'instant, c'est uniquement défini pour ext3/ext3, mais sera dans le futur aussi défini pour xfs, reiserfs, et jfs, dès que possible.&lt;br /&gt;
&lt;br /&gt;
Avantage: Valeurs 32bit uid/gid complètes.&lt;br /&gt;
&lt;br /&gt;
;UID32/GID16:  Ce format utilise la moitié haute du GID pour stocker les informations de contexte. Cela est fait de manière transparente, sauf si le format est changé sans conversion préalable.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne avec tout système de fichiers équipé de UID / GID 32bits&lt;br /&gt;
&lt;br /&gt;
Désavantage: le GID est réduit a 16 bits.&lt;br /&gt;
&lt;br /&gt;
;UID24/GID24:  Ce format utilise le premier quart haut de l'UID et du GID pour stocker les informations de contexte, une fois encore, d'une manière transparente. Cela permet 16 millions de groupes et utilisateurs, ce qui devrait suffire pour la majorité des applications.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne sur tout système de fichiers avec des UID/GID 32bits&lt;br /&gt;
&lt;br /&gt;
Desavantage: les UID et GID sont réduits a 24 bits.&lt;br /&gt;
&lt;br /&gt;
Voir Examples [E31] et [E32]&lt;br /&gt;
&lt;br /&gt;
== Modifications Supplémentaires ==&lt;br /&gt;
En plus du strict minimum, voici un certain nombre de modifications, non indispensables, mais qui se sont révélées très utiles au fil du temps.&lt;br /&gt;
&lt;br /&gt;
=== Drapeaux par Contexte  ===&lt;br /&gt;
Très tôt, le besoin d'activer ou désactiver une fonctionnalité séparement pour l'un ou l'autre des Vserver est apparue. Un champ de bits a donc été ajouté (taille=word).&lt;br /&gt;
&lt;br /&gt;
Ce champ de bits comprend un bon nombre de drapeaux, un champ masque, qui indique les drapeaux disponibles, et un mécanisme de déclanchement spécial, pour activer un drapeau au démarrage, puis le désactiver en causant un évennement ou une action associée.&lt;br /&gt;
&lt;br /&gt;
Voici la liste des drapeaux prévus et pour la plupart déjà implémentés. Ils sont disponibles dans la branche de développement de Linux-VServer:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| VXF_INFO_LOCK (historique, obsolète)&lt;br /&gt;
|-&lt;br /&gt;
| 1|| VXF_INFO_SCHED (historique, obsolète)|| schedule all processes in a context as if they where one.&lt;br /&gt;
|-&lt;br /&gt;
| 2|| VXF_INFO_NPROC (historique, obsolète)|| limite le nombre de processus autorisés dans un contexte à la valeur NPROC.&lt;br /&gt;
|-&lt;br /&gt;
| 3|| VXF_INFO_PRIVATE (historique)|| interdiction d'entrer dans ce contexte depuis l'extérieur.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| VXF_INFO_INIT  (historique) || show the init process with pid '1'&lt;br /&gt;
|-&lt;br /&gt;
| 5|| VXF_INFO_HIDE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 6|| VXF_INFO_ULIMIT (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 7|| VXF_INFO_NSPACE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 8|| VXF_SCHED_HARD || activer l'ordonnancement &amp;quot;Hard CPU&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 9|| VXF_SCHED_PRIO || calculer les priorités de chaque processus à l'aide du &amp;quot;contexte token bucket&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| 10|| VXF_SCHED_PAUSE || mettre tous les processus de ce contexte dans la file &amp;quot;hold&amp;quot;, les empéchant d'être ordonnancés à nouveau.&lt;br /&gt;
|-&lt;br /&gt;
| 16|| VXF_VIRT_MEM || virtualize the memory information so that the VM and RSS limits are used for meminfo and friends&lt;br /&gt;
|-&lt;br /&gt;
| 17|| VXF_VIRT_UPTIME || virtualiser l'uptime, en commançant à la date de création du contexte.&lt;br /&gt;
|-&lt;br /&gt;
| 18|| VXF_VIRT_CPU || &lt;br /&gt;
|-&lt;br /&gt;
| 24|| VXF_HIDE_MOUNT ||  afficher les /proc/{pid}/mounts comme vides.&lt;br /&gt;
|-&lt;br /&gt;
| 25|| VXF_HIDE_NETIF ||  cache les interfaces réseau et addresses non autorisées dans ce contexte.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Privileges par Contexte  ===&lt;br /&gt;
Lorsque nous sommes arrivé au nombre maximum de privileges envisageables sans trop modifier le noyau, l'étape suivante a été, naturellement, d'ajouter un système de privileges par contexte.&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des privileges par contexte implémenté dans Linux-VServer permet un réglage fin des privileges Linux. Ils ne sont pas visibles aux processus d'un contexte donné, puisque de toute facon le processus n'aurait pas le droit de les vérifier ou de les modifier.&lt;br /&gt;
&lt;br /&gt;
Généralement, il y a deux facons d'utiliser ces privileges : * Require one or a number of context capabilities to be set in addition to a given Linux capability, each one controlling a distinct part of the functionality. For example the CAP_NET_ADMIN could be split into RAW and PACKET sockets, so you could take away each of them separately by not providing the required context capability.&lt;br /&gt;
&lt;br /&gt;
Consider the context capability sufficient for a specified functionality, even if the Linux Capability says something different. For example mount() requires CAP_SYS_ADMIN which adds a dozen other things we do not want, so we define a CCAP_MOUNT to allow mounts for certain contexts.&lt;br /&gt;
&lt;br /&gt;
The difference between the Context Flags and the Context Caps is more an abstract logical separation than a functional one, because they are handled very similar.&lt;br /&gt;
Again, a list of the Context Capabilities and their purpose:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
|0|| VXC_SET_UTSNAME||  autoriser le contexte à changer le nom de serveur et le nom de domaine en utilisant l'appel système noyau approprié&lt;br /&gt;
|-&lt;br /&gt;
|1|| VXC_SET_RLIMIT||  allow the context to modify the resource limits (within the vserver limits).&lt;br /&gt;
|-&lt;br /&gt;
|8|| VXC_RAW_ICMP||  allow raw icmp packets in a secure way (this makes ping work from inside)&lt;br /&gt;
|-&lt;br /&gt;
|16|| VXC_SECURE_MOUNT|| permit secure mounts, which at the moment means that the nodev mount option is added.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Comptabilité par Contexte  ===&lt;br /&gt;
Plusieurs propriétés des contextes sont très utiles pour l'administrateur système, que ce soit pour garder un oeil sur les ressources, pour avoir une idée de ce que peut supporter le serveur, ou pour pouvoir facturer d'une manière ou d'une autre au client.&lt;br /&gt;
&lt;br /&gt;
Deux types de propriétés peuvent être comptabilisées, celles dont la valeur courante représente l'état du système (par analogie, prenez la vitesse d'un véhicule), et celles dont la valeur augmente régulièrement avec le temps (comme le kilométrage).&lt;br /&gt;
&lt;br /&gt;
La plupart des valeurs d'état sont limitables, et sont donc traitées d'une façon spécifique, comme cela est décrit dans la section qui suit.&lt;br /&gt;
&lt;br /&gt;
Good candidates for Context Accounting are:&lt;br /&gt;
* Temps CPU utilisé&lt;br /&gt;
* Nombre de fork() effectués&lt;br /&gt;
* Nombre de messages Socket par Type&lt;br /&gt;
* Nombre de paquets Transmis et Recus&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E41]&lt;br /&gt;
&lt;br /&gt;
=== Limites par Contexte  ===&lt;br /&gt;
La plupart des ressources système, que ce soit la consommation mémoire, le nombre de processus utilisés, le nombre de descripteurs de fichiers, la bande passante réseau, doivent pouvoir être limitées.&lt;br /&gt;
&lt;br /&gt;
Les limites par contexte permettent, pour chaque valeur limitable, de définir trois types de limites: minimum, soft, et hard(maximum).&lt;br /&gt;
&lt;br /&gt;
A l'heure actuelle, seule les limites hard sont supportées, et seulement une partie d'entre elles sont réellement activées. Voici une liste des limites par contexte actuelles et prévues:&lt;br /&gt;
* limites sur les processus&lt;br /&gt;
* limites sur l'ordonnanceur&lt;br /&gt;
* limites mémoire&lt;br /&gt;
* limites disques par contexte&lt;br /&gt;
* quotas user/groupe par contexte&lt;br /&gt;
&lt;br /&gt;
De plus, les limites par contexte gardent trace des valeur maxima atteintes et du nombre de fois ou la limite a été atteinte (hit), pour donner un feedback utile a l'administrateur.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E42]&lt;br /&gt;
&lt;br /&gt;
=== Virtualisation  ===&lt;br /&gt;
One major difference between the Linux-VServer approach and Virtual Machines is that you do not have the virtualization part as a side-effect, so you have to do that by hand where it makes sense.&lt;br /&gt;
&lt;br /&gt;
For example, a Virtual Machine does not need to think about uptime, because naturally the running OS was started somewhere in the past and will not have any problem to tell the time it thinks it began running.&lt;br /&gt;
&lt;br /&gt;
A context can also store the time when it was created, but that will be different from the systems uptime, so in addition, there has to be some function, which adjusts the values passed from kernel to user-space depending on the context the process belongs to.&lt;br /&gt;
&lt;br /&gt;
This is what for Linux-VServer is known as Virtualization (actually it's more faking some values passed to and from the kernel to make the processes think that they are on a different machine).&lt;br /&gt;
&lt;br /&gt;
Currently modified for the purpose of Virtualization are:&lt;br /&gt;
* System Uptime&lt;br /&gt;
* Host and Domain Name&lt;br /&gt;
* Machine Type and Kernel Version&lt;br /&gt;
* Context Memory Availability&lt;br /&gt;
* Context Disk Space&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E43]&lt;br /&gt;
&lt;br /&gt;
=== Sécurité Renforcée  ===&lt;br /&gt;
Le mécanisme de sécurité Proc-FS protège les entrées dynamiques du système de fichiers proc, de façon à ce que toutes les entrées ne soient pas vues dans tous les contextes.&lt;br /&gt;
&lt;br /&gt;
Le système est constitué de trois drapeaux pour chaque entrée du Proc-FS: Admin, Watch, et Hide.&lt;br /&gt;
&lt;br /&gt;
Le Drapeau Hide active ou désactive entierement une fonctionnalité, donc toute combinaison associée avec un drapeau Hide à 0 aura donc la signification visible.&lt;br /&gt;
&lt;br /&gt;
Les drapeaux Admin et Watch déterminent ou l'entrée hidden (cachée) reste visible; par exemple, si les drapeaux Admin et Hidden sont mis, seul le Host Contexte (0) sera en mesure de voir cette entrée spécifique.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E44] et Voir Exemple [E45]&lt;br /&gt;
&lt;br /&gt;
=== Kernel Helper  ===&lt;br /&gt;
Dans certains cas, il peut être nécessaire de mettre en place un outil en espace utilisateur qui va agir en lieu et place du noyau, lorsque par exemple un processus demande une fonctionnalité disponible sur un serveur réel, mais non disponible dans un contexte.&lt;br /&gt;
&lt;br /&gt;
Le meilleur exemple d'un tel cas est le &amp;quot;Reboot Helper&amp;quot;, qui implémente l'appel système reboot(), invoqué depuis l'intérieur d'un contexte en lieu et place du noyau. L'appel sera éxécuté depuis le contexte hôte, qui lancera l'action adéquate, reboot ou un simple halt du contexte en question.&lt;br /&gt;
&lt;br /&gt;
Bien que ce &amp;quot;helper&amp;quot; soit concu pour être flexible et gérer un certain nombre de choses de la même facon, il n'est pas utilisé pour l'instant à autre chose, et pourrait être remplacé dans le futur par une interface par evènement.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités et documentation additionnelle ==&lt;br /&gt;
=== Unification  ===&lt;br /&gt;
L'un des objectifs centraux de Linux-VServer est de réduire l'utilisation des ressources partout ou cela est possible. Une excellente idée a donc germé, celle de partager des fichiers à travers les différents contextes sans interférer avec les taches administratives classiques ou diminuer le niveau de sécurité.&lt;br /&gt;
&lt;br /&gt;
Les fichiers communs à plusieurs contextes, peu sujet à être modifiés, comme les bibliothèques ou les binaires, peuvent être soudés via un lien dur sur un système de fichier partagé, réduisant d'autant le besoin en espace disque, cache d'inodes, et surtout, l'occupation mémoire, via l'utilisation des bibliothèques partagées.&lt;br /&gt;
&lt;br /&gt;
Seul inconvénient, si nous ne prenons pas quelques mesures supplémentaires, un contexte malicieux sera en mesure, par accident ou volontairement, de détruire ou modifier un tel fichier partagé, ce qui aurait des conséquences directes sur les autres contextes.&lt;br /&gt;
La première étape consiste à placer sur les fichiers partagés un drapeau Immutable (et enlever la caps qui permet de modifier un tel fichier). Il faut toutefois ajouter un attribut supplémentaire à ces fichiers partagés, pour permettre leur suppréssion, lors, par exemple, d'une mise à jour des bibliothèques dans un l'un des contextes.&lt;br /&gt;
&lt;br /&gt;
Ces fichiers liés, immutables, que l'ont peut toutefois détruire, et appartenant à plus d'un contexte sont appelés unifiés, et l'action qui consiste à les rechercher et les préparer s'appelle Unification.&lt;br /&gt;
&lt;br /&gt;
Choississez l'unification si vous souhaitez réduire votre usage de ressources. L'inconvénient évident est une administration moins facile. Un Serveur Linux s'installe typiquement sur 500Mo de disque, et 10 serveurs unifiés en consommeront donc seulement 700Mo, et moins de mémoire pour les caches.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Espaces de nom privés  ===&lt;br /&gt;
Ajoutés récemment dans Linux-VServer, les espaces de noms privés utilisent la couche VFS du noyau linux et offrent une vue différente du système de fichier pour chaque contexte.&lt;br /&gt;
Par rapport au schéma traditionnel, l'avantage principal apparait lorsqu'on modifie quelquechose dans un espace de nommage (par exemple, les points de montage); à cet instant, les autres contextes resteront intact, y compris biensur le contexte Hôte.&lt;br /&gt;
Désavantage évident d'une telle approche; entrer dans un tel espace de noms privé n'est pas aussi simple que d'entrer dans un chroot. Toutefois, les choses pourraient changer dans les noyaux futurs, si cette fonctionnalité est par exemple intégrée directement à la fonction chroot().&lt;br /&gt;
&lt;br /&gt;
=== Le système de fichier Proc-FS de Linux-VServer ===&lt;br /&gt;
A structured, dynamically generated subtree of the well-known Proc-FS - actually two of them - has been created to allow for inspecting the different values of Security and Network Contexts.&lt;br /&gt;
   /proc/virtual&lt;br /&gt;
     .../info&lt;br /&gt;
&lt;br /&gt;
   /proc/virtual/&amp;lt;pid&amp;gt;&lt;br /&gt;
     .../info&lt;br /&gt;
     .../status&lt;br /&gt;
     .../sched&lt;br /&gt;
     .../cvirt&lt;br /&gt;
     .../cacct&lt;br /&gt;
     .../limit&lt;br /&gt;
&lt;br /&gt;
=== Extensions Token Bucket  ===&lt;br /&gt;
While the basic idea of Linux-VServer is a peaceful coexistence of all contexts, sharing the common resources in a respectful way, it is sometimes useful to control the resource distribution for resource hungry processes.&lt;br /&gt;
&lt;br /&gt;
The basic principle of a Token Bucket is not very new. It is given here as an example for the Hard CPU Limit. The same principle also applies to scheduler priorities, network bandwidth limitation and resource control in general.&lt;br /&gt;
&lt;br /&gt;
The Hard CPU Limit uses this mechanism in the following way: consider a bucket of a certain size S which is filled with a specified amount of tokens R every interval T, until the bucket is &amp;quot;full&amp;quot; - excess tokens are spilled. At each timer tick, a running process consumes exactly one token from the bucket, unless the bucket is empty, in which case the process is put on a hold queue until the bucket has been refilled with a minimum M of tokens. The process is then rescheduled.&lt;br /&gt;
&lt;br /&gt;
A major advantage of a Token Bucket is that a certain amount of tokens can be accumulated in times of quiescence, which later can be used to burst when resources are required.&lt;br /&gt;
&lt;br /&gt;
Where a per-process Token Bucket would allow for a CPU resource limitation of a single process, a Context Token Bucket allows to control the CPU usage of all confined processes.&lt;br /&gt;
&lt;br /&gt;
Another approach, which is also implemented, is to use the current fill level of the bucket to adjust the process priority, thus reducing the priority of processes belonging to excessive contexts.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Limites Disque par Contexte  ===&lt;br /&gt;
Pour faire usage de cette fonctionnalité, le support pour les fichiers étiquetés XID doit être présent. Grace aux limites par contexte, vous pouvez alors régler une limite différente pour chaque contexte d'une partition partagée.&lt;br /&gt;
&lt;br /&gt;
Chaque block et inode d'un système de fichier est comptabilisé, dès lors qu'un hachage XID a été ajouté à ce système de fichier dans ce contexte donné.&lt;br /&gt;
Those values, including current usage, maximum and reserved space, will be shown for filesystem queries, creating the illusion that the shared filesystem has a different usage and size, for each context.&lt;br /&gt;
&lt;br /&gt;
=== Quota par Contexte ===&lt;br /&gt;
Similar to the Context Disk Limits, Per-Context Quota uses separate quota hashes for different Contexts on a shared filesystem. This is not required to allow for Linux-VServer quota on separate partitions.&lt;br /&gt;
&lt;br /&gt;
=== Le périphérique &amp;quot;proxy&amp;quot; VRoot  ===&lt;br /&gt;
Les opérations sur les Quotas (ioctls) nécessitent un accès aux périphériques de bloc. Ils ne sont donc pas disponible dans un VPS.&lt;br /&gt;
&lt;br /&gt;
=== Stealth  ===&lt;br /&gt;
Pour certaines applications, par exemple la préparation d'un &amp;quot;pot de miel&amp;quot; (honey-pot), ou d'une imitation particulièrement réaliste d'un vrai serveur à des fins éducatives, vous aurez peut-être besoin de confondre le contexte du serveur hôte (réel) et celui de votre pot de miel. &lt;br /&gt;
Toutefois, certaines alternatives libres comme QEMU ou UML vous permettent de faire la même chose beaucoup mieux et avec moins d'efforts. Ce n'est donc pas une question centrale dans le développement de Linux-VServer.&lt;br /&gt;
&lt;br /&gt;
== Sécurité Linux-VServer ==&lt;br /&gt;
Nous savons maintenant que Linux-VServer implémente quelques principes de sécurité, et comment ils fonctionnent. Il faut tout de même dire quelques mots la dessus, puisqu'il ne suffit pas, bien évidemment, de considérer que Linux-VServer étant une architecture sécurisée, votre système sera sur automatiquement. Comme d'habitude, mieux vaut savoir *exactement* ce que vous faites.&lt;br /&gt;
&lt;br /&gt;
=== Privileges Sécurisées ===&lt;br /&gt;
Actuellement, seules les privileges Linux suivantes sont considérés d'un usage sans risque dans un VPS. Si d'autres privileges sont nécessaires, ils ouvrent probablement des trous de sécurité.&lt;br /&gt;
* CAP_CHOWN&lt;br /&gt;
* CAP_DAC_OVERRIDE&lt;br /&gt;
* CAP_DAC_READ_SEARCH&lt;br /&gt;
* CAP_FOWNER&lt;br /&gt;
* CAP_FSETID&lt;br /&gt;
* CAP_KILL&lt;br /&gt;
* CAP_SETGID&lt;br /&gt;
* CAP_SETUID&lt;br /&gt;
* CAP_NET_BIND_SERVICE&lt;br /&gt;
* CAP_SYS_CHROOT&lt;br /&gt;
* CAP_SYS_PTRACE&lt;br /&gt;
* CAP_SYS_BOOT&lt;br /&gt;
* CAP_SYS_TTY_CONFIG&lt;br /&gt;
* CAP_LEASE&lt;br /&gt;
CAP_NET_RAW par exemple n'est pas considéré comme sur. Bien qu'il soit souvent utilisé pour donner le droit à la commande &amp;quot;ping&amp;quot; (dont le fonctionnement est cassé), il existe de bien meilleures alternatives comme la commande ping &amp;quot;poink[U7]&amp;quot;, ou la cap VXC_RAW_ICMP.&lt;br /&gt;
&lt;br /&gt;
=== La Barrière Chroot  ===&lt;br /&gt;
Il faut vous assurer que le drapeau barrière est bien mis sur tout répertoire parent de chacun de vos VPS. Cela est indispensable pour prévenir quiconque de sortir du chroot et aller se balader dans le système de fichier de votre vserver hôte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichiers de périphériques Sécurisés  ===&lt;br /&gt;
Le répertoire /dev d'un VPS ne doit pas contenir plus de fichiers qu'indiqué ci-dessous, plus le répertoire pour les pts unix.&lt;br /&gt;
* c 1 7 full&lt;br /&gt;
* c 1 3 null&lt;br /&gt;
* c 5 2 ptmx&lt;br /&gt;
* c 1 8 random&lt;br /&gt;
* c 5 0 tty&lt;br /&gt;
* c 1 9 urandom&lt;br /&gt;
* c 1 5 zero&lt;br /&gt;
* d pts&lt;br /&gt;
Bien entendu, d'autres périphériques comme console, mem, kmem, et même des périphériques en mode block et/ou caractère peuvent être ajoutés, mais une certaine expertise sera nécessaire pour s'assurer que cela n'entraine aucun trou de sécurité.&lt;br /&gt;
&lt;br /&gt;
=== Entrées Proc-FS Sécurisées  ===&lt;br /&gt;
Aucun test n'a été fait sur la fiabilité et la sécurité des entrées dans le système de fichiers proc, mais quelques incidents ont été notés lorsqu'on utilise par exemple des entrées proc avec permission d'écriture, et non protégées par une CAP linux.&lt;br /&gt;
Par exemple, &amp;lt;tt&amp;gt;/proc/sysrq-trigger&amp;lt;/tt&amp;gt; est un fichier qui ne doit en aucun cas être accessible dans un VPS sans une excellente raison.&lt;br /&gt;
&lt;br /&gt;
== Champ d'Applications ==&lt;br /&gt;
Le but premier de ce projet est de permettre la création de serveurs virtuels partageant les ressources d'une même machine physique. Un Serveur Virtuel fonctionne comme un serveur Linux normal, et peut lancer des services traditionnels comme telnet, service de mail, service web, service SQL.&lt;br /&gt;
&lt;br /&gt;
=== Séparation Administrative ===&lt;br /&gt;
Un provider intelligent peut donc vendre un serveur virtuel, qui, en utilisant moins de ressources que d'autres techniques de virtualisation, permet de lancer plus d'instances sur une même machine.&lt;br /&gt;
&lt;br /&gt;
La liste des providers qui fournissent un tel service est assez longue, et on peut donc considérer que c'est l'application principale de vserver.&lt;br /&gt;
&lt;br /&gt;
=== Séparation de Services  ===&lt;br /&gt;
Pour séparer plusieurs services identiques ou de nature différente, qui auraient autrement des interférences entre eux, est une chose facile à mettre en oeuvre avec Vserver. Plusieurs raisons peuvent vous pousser à faire cela; un service mal écrit, ou simplement deux services qui ne savent pas co-exister pour de multiples raisons.&lt;br /&gt;
&lt;br /&gt;
Même sur une machine à l'ancienne mode, placer un service très exposé ou non sécurisé car inconnu ou propriétaire dans une prison chroot peut améliorer grandement la sécurité et la maintenabilité.&lt;br /&gt;
&lt;br /&gt;
=== Améliorer la Sécurité  ===&lt;br /&gt;
Bien que l'idée de lancer plusieurs serveurs sur une seule machine soit en elle même très interessante, d'autres concepts sont encore plus interessants. Imaginez un serveur physique sur lequel tourne un seul vserver. Le but est d'isoler l'environnement principal de n'importe quel service, n'importe quel réseau. Vous démarrerez dans l'environnement principal, lancez très très peu de services, puis continuez dans le serveur virtuel.&lt;br /&gt;
&lt;br /&gt;
Le service de l'environnement principal sera:&lt;br /&gt;
* Injoignable depuis le reseau.&lt;br /&gt;
* En mesure de logger tous les messages du virtual serveur, d'une manière sécurisée. Rien dans le serveur virtuel ne permet d'effacer les logs, ou de les modifier. Même un serveur virtuel cracké ne permet pas de changer les logs.&lt;br /&gt;
* En mesure de faire tourner un système de détection d'intrusion, qui espionnera l'état du serveur virtuel sans être accessible ou même détecté. Par exemple, vous pouvez installer et faire tourner tripwire depuis l'environnement principal, et impossible de modifier son fonctionnement ou de le tromper.&lt;br /&gt;
Une autre option consiste à mettre le firewall dans un serveur virtuel, puis étirer la DMZ sur un ensemble de VPS séparés. Moyennant une configuration bien faite, ce genre d'installation peut réduire substantiellement le nombre de machines requises, sans pour autant impacter les performances.&lt;br /&gt;
&lt;br /&gt;
=== Maintenance Facilitée  ===&lt;br /&gt;
Une fonctionnalité clef d'un serveur virtuel est son indépendance vis à vis du matériel. La plupart des problèmes matériels sont inconnus au fonctionnement d'un serveur virtuel.&lt;br /&gt;
&lt;br /&gt;
Le serveur principal agit comme un système hôte, et s'occupe de tous les détails. Le serveur virtuel est simplement un client, et ignore tous les détails. De cette manière, le client peut être déplacé vers un autre serveur physique avec très peu de manipulations.&lt;br /&gt;
&lt;br /&gt;
Par exemple, pour déplacer un serveur virtuel depuis un ordinateur physique vers un autre, il suffit de procéder aux étapes suivantes:&lt;br /&gt;
* stopper le serveur virtuel&lt;br /&gt;
* le copier sur l'autre machine&lt;br /&gt;
* copier sa configuration&lt;br /&gt;
* lancer le serveur virtuel sur la nouvelle machine&lt;br /&gt;
Pas de mise à jour des utilisateurs, pas de configuration matérielle, tant que les machines sont compatibles au niveau de leurs binaires.&lt;br /&gt;
&lt;br /&gt;
=== Scenarios de Fail-Over ===&lt;br /&gt;
En repoussant les limites un peu plus loin, on peut utiliser des technologies de réplication pour conserver une copie identique à la minute près du système de fichier d'un serveur virtuel en fonctionnement. Cela peut servir à un basculement très rapide si le serveur en fonction tombe pour n'importe quelle raison.&lt;br /&gt;
&lt;br /&gt;
Toutes les methodes connues sont utilisables dans ce but, en commancant par la réplication réseau comme rsync, ou drdb, en passant par NBD (les Network Devices), les disques partagés, ou un système de fichier distribué. Toutes ces méthodes sont utilisables pour réduire le temps d'indisponibilité d'un système et améliorer l'efficacité globale.&lt;br /&gt;
&lt;br /&gt;
=== Pour test  ===&lt;br /&gt;
Vous avez besoin de construire un logiciel pour plusieurs versions d'une distribution particulière. (Mandrake 8.2, 9.0, 9.1, 9.2, 10.0), ou bien même pour plusieurs distributions différentes.&lt;br /&gt;
&lt;br /&gt;
Ce problème est résolu d'une manière très simple par Vserver. Avec pas mal d'espace disque, ces différentes distributions peuvent être installées et lancées en parallèle, simplifiant la tache de passer de l'une à l'autre.&lt;br /&gt;
&lt;br /&gt;
Biensur, vous pouvez faire cela simplement avec chroot() et rien d'autre, mais Vserver offre une simulation bien plus réaliste.&lt;br /&gt;
&lt;br /&gt;
== Performance et Stabilité ==&lt;br /&gt;
=== Impact de Linux-VServer sur l'hôte  ===&lt;br /&gt;
=== Overhead dans un Contexte  ===&lt;br /&gt;
=== Taille du patch noyau  ===&lt;br /&gt;
&lt;br /&gt;
== Matériels Non Intel i386 ==&lt;br /&gt;
Linux-VServer est concu pour être indépendant de l'architecture au maximum du coup, seule une toute petite partie, la définition de l'appel système lui-même est spécifique à une architecture. Malgré cela, quelques architectures renfermen des copies de certains codes 'architecture independant', pour une raison ou pou une autre, et nécessitent par conséquent de légères modifications.&lt;br /&gt;
&lt;br /&gt;
Les architectures suivantes sont supportées, et certaines d'entre elles ont même été testées:&lt;br /&gt;
* alpha&lt;br /&gt;
* ia32 / ia64 / xbox&lt;br /&gt;
* x86_64 (AMD64)&lt;br /&gt;
* mips / mips64&lt;br /&gt;
* hppa / hppa64&lt;br /&gt;
* ppc / ppc64&lt;br /&gt;
* sparc / sparc64&lt;br /&gt;
* s390&lt;br /&gt;
* uml&lt;br /&gt;
L'ajout d'une nouvelle architecture est relativement simple, même si de tests extensifs sont nécessaires pour valider le bon fonctionnement d toutes les fonctionnalités telle qu'attendu. (et biensur, du matériel ;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Intro Noyau Linux ==&lt;br /&gt;
Bien que les fonctionnalités décrites plus haut sont codées dans le noyau, quelques outils sont nécessaires en espace utilisateur (userspace) pour les activer et les controler.&lt;br /&gt;
&lt;br /&gt;
Ces outils en userspace communiquent généralement avec le noyau via des appels système (syscalls).&lt;br /&gt;
&lt;br /&gt;
Le chapitre qui suit décrit les liens entre espace kernel et espace utilisateur, comment les appels système, méthode simple pour communiquer entre les processus et le noyau, fonctionnent.&lt;br /&gt;
&lt;br /&gt;
=== Espace Noyau et Espace Utilisateur  ===&lt;br /&gt;
Sous Linux et les systèmes d'exploitation similaires, l'espace noyau et l'espace utilisateur sont séparés, et l'espace d'adressage est divisé en deux parties. Dans L'espace noyau réside le code noyau, alors que les programmes utilisateur vivent dans l'espace utilisateur. Bien entendu, un programme ne peut écrire dans la mémoire noyau, ni dans la mémoire d'un autre processus.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, c'est aussi le cas pour le code du noyau. Le code kernel n'a pas le droit d'écrire dans l'espace utilisateur. Qu'est-ce que cela signifie ? Lorsqu'un driver de périphérique a besoin d'écrire ses octets destinés à un programme dans l'espace utilisateur, il ne peut pas le faire directement, mais doit passer par des fonctions noyau spécifiques à la place. De même, lorsque des paramètres sont passés au noyau par référence à une fonction kernel, la fonction kernel ne peut pas lire les paramètres directement. Elle doit utiliser d'autres fonctions noyau pour lire chaque octet des paramètres.&lt;br /&gt;
&lt;br /&gt;
Bien entendu, il existe des fonctions écrites tout spécialement pour les transfer depuis et vers l'espace utilisateur.&lt;br /&gt;
  copy_to_user(void *to, const void *from, long n);&lt;br /&gt;
  copy_from_user(void *to, const void *from, long n);&lt;br /&gt;
&lt;br /&gt;
get_user() and put_user() Prendre ou placer l'octet, le mot, ou l'entier long depuis l'espace utilisateur ou vers celui-ci. C'est une macro, et elle se fie au type de ses arguments pour évaluer le nombre d'octets à transférer.&lt;br /&gt;
&lt;br /&gt;
=== Appels système Linux  ===&lt;br /&gt;
La plupart des appels libc s'appuient sur les appels système, la plus petite forme de fonction qu'un programme peut appeler.&lt;br /&gt;
&lt;br /&gt;
Ces appels système sont implémentés dans le noyau lui-même, ou dans des modules, parties de code noyau chargeables dynamiquement.&lt;br /&gt;
&lt;br /&gt;
Ils sont implémentés via un multiplexeur appelé avec un masque d'interruption précis. Sous Linux, ce masque d'interruption est int 0x80. Lorsque l'instruction 'int 0x80' est exécutée, le contrôle est donné au noyau (ou, plus précisément, à la fonction _system_call() ), et le démultipléxage proprement dit prend place.&lt;br /&gt;
&lt;br /&gt;
Comment fonctionne la fonction _system_call() ?&lt;br /&gt;
&lt;br /&gt;
Tout d'abord, tous les registres sont sauvegardés, et le contenu du registre %eax est comparé à la table des appels systèmes, qui recense tous les appels systèmes et leur adresse respective.&lt;br /&gt;
&lt;br /&gt;
On peut acceder à cette table via la variable extern void *sys_call_table[] Il existe un nombre et une adresse mémoire données dans cette table pour chacun des appels système.&lt;br /&gt;
&lt;br /&gt;
Ceux-ci sont référencés dans le fichier /usr/include/sys/syscall.h.&lt;br /&gt;
&lt;br /&gt;
Ils sont de la forme SYS_nomappelsysteme. si l'appel système n'est pas implémenté, la cellule correspondante dans la table sys_call_table est à 0, et une erreur est retournée.&lt;br /&gt;
&lt;br /&gt;
Sinon, l'appel système sort, et l'entrée correspondante dans la table donne l'adresse du code ou se trouve l'appel système.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implémentation ==&lt;br /&gt;
Ce chapitre est plus particulierement reserve aux developpeurs noyau. Toutefois, les curieux trouveront avantage a tirer le rideau pour decouvrir les entrailles du systeme.&lt;br /&gt;
&lt;br /&gt;
=== Appel systeme===&lt;br /&gt;
Pendant un certain temps, Linux-VServer a utilise different appels systeme pour accomplir les differents aspects de son travail. Tres vite, le nombre des commandes necessaires est devenu important, nous avons donc commence a donner des valeurs magiques aux appels pour choisir le comportement desire.&lt;br /&gt;
&lt;br /&gt;
Enfin, il y a peu de temps, nous avons obtenu un numero reserve pour les appels systemes Linux-VServer, et malgre l'opinion de certains developpeurs, c'est globalement une bonne decision de garder un seul appel systeme.&lt;br /&gt;
&lt;br /&gt;
Avoir plusieurs appels systeme peut faciliter les choses pour travailler avec les appels systemes sur plusieurs architectures; toutefois, cela n'a pas constitue un probleme majeur jusqu'ici, les donnees transitant depuis et vers le noyau etant, conformement au standard C99, fortement typees.&lt;br /&gt;
&lt;br /&gt;
Quoi qu'il en soit, la mise en place d'un appel systeme passe par la creation d'un multiplexeur, qui va decider quelle commande doit etre executee, et quels arguments lui passer. A elle par la suite d'executer effectivement le travail demande.&lt;br /&gt;
 extern asmlinkage long&lt;br /&gt;
 sys_vserver(uint32_t cmd, uint32_t id, void __user *data)&lt;br /&gt;
L'appel systeme Linux-VServer prend trois arguments dans tous les cas: la commande (cmd), un nombre (id), et une structure de donnee en espace utilisateur d'une taille encore inconnue.&lt;br /&gt;
&lt;br /&gt;
Pour faciliter le deboggage et la tenue a jour des informations de versionning, la chaine cmd est decomposee en trois parties: les 12 bits de poids faible contiennent le numero de version, puis 4 bits sont reserves. Les 16 bits de poids fort sont divises en 8 bits de commande et 6 pour la categorie, puis les 2 bits restant, reserves pour usage ulterieur.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc 64 Categories avec chacune 256 commandes, et 4096 revisions possible pour chaque commande, ce qui surpasse largement nos besoins presents et futurs.&lt;br /&gt;
&lt;br /&gt;
Voici un apercu des categories deja definies, et leur valeur numerique associee:&lt;br /&gt;
&lt;br /&gt;
 Matrice des appels systeme V2.6&lt;br /&gt;
&lt;br /&gt;
        |VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL|&lt;br /&gt;
        |STATS  |DESTROY|ALTER  |CHANGE |LIMIT  |TEST   | |       |       |&lt;br /&gt;
        |INFO   |SETUP  |       |MOVE   |       |       | |       |       |&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 SYSTEM |VERSION|VSETUP |VHOST  |       |       |       | |DEVICES|       |&lt;br /&gt;
 HOST   |     00|     01|     02|     03|     04|     05| |     06|     07|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 CPU    |       |VPROC  |PROCALT|PROCMIG|PROCTRL|       | |SCHED. |       |&lt;br /&gt;
 PROCESS|     08|     09|     10|     11|     12|     13| |     14|     15|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 MEMORY |       |       |       |       |       |       | |SWAP   |       |&lt;br /&gt;
        |     16|     17|     18|     19|     20|     21| |     22|     23|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 NETWORK|       |VNET   |NETALT |NETMIG |NETCTL |       | |SERIAL |       |&lt;br /&gt;
        |     24|     25|     26|     27|     28|     29| |     30|     31|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 DISK   |       |       |       |       |       |       | |INODE  |       |&lt;br /&gt;
 VFS    |     32|     33|     34|     35|     36|     37| |     38|     39|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 OTHER  |       |       |       |       |       |       | |VINFO  |       |&lt;br /&gt;
        |     40|     41|     42|     43|     44|     45| |     46|     47|&lt;br /&gt;
 =======+=======+=======+=======+=======+=======+=======+ +=======+=======+&lt;br /&gt;
 SPECIAL|       |       |       |       |FLAGS  |       | |       |       |&lt;br /&gt;
        |     48|     49|     50|     51|     52|     53| |     54|     55|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
 SPECIAL|       |       |       |       |RLIMIT |SYSCALL| |       |COMPAT |&lt;br /&gt;
        |     56|     57|     58|     59|     60|TEST 61| |     62|     63|&lt;br /&gt;
 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+&lt;br /&gt;
&lt;br /&gt;
La definition de ces commandes est simplifiee grace a certaines macros, comme par exemple interroger un drapeau ou lui attribuer une valeur:&lt;br /&gt;
 #define VCMD_get_cflags         VC_CMD(FLAGS, 1, 0)&lt;br /&gt;
 #define VCMD_set_cflags         VC_CMD(FLAGS, 2, 0)&lt;br /&gt;
 &lt;br /&gt;
 extern int vc_get_cflags(uint32_t, void __user *);&lt;br /&gt;
 extern int vc_set_cflags(uint32_t, void __user *);&lt;br /&gt;
&lt;br /&gt;
Notez bien, ce n'est pas la commande elle meme qui est passee en parametre, mais un id et un pointeur vers une structure de donnee en espace utilisateur.&lt;br /&gt;
&lt;br /&gt;
=== Structures de Donnees Utilisees===&lt;br /&gt;
Plusieurs types de structures sont utilisees par les differentes parties de l'implementation; seuls quelques exemples sont donnes ici, l'ensemble complet des structures utilisees se trouve dans le source.&lt;br /&gt;
==== La Structure Data Context====&lt;br /&gt;
La structure Data Context permet de gerer les contextes, leur destruction, ainsi que les futurs contextes hierarchiques.&lt;br /&gt;
&lt;br /&gt;
Les sections reservees pour l'ordonanceur ou les limites sont definies dans des structures separees, comme le veut la logique, puis incorporees dans la structure principale.&lt;br /&gt;
 struct vx_info {&lt;br /&gt;
         struct list_head vx_list;         /* linked list of contexts */&lt;br /&gt;
         xid_t vx_id;                      /* context id */&lt;br /&gt;
         atomic_t vx_refcount;             /* refcount */&lt;br /&gt;
         struct vx_info *vx_parent;        /* parent context */&lt;br /&gt;
 &lt;br /&gt;
         struct namespace *vx_namespace;   /* private namespace */&lt;br /&gt;
         struct fs_struct *vx_fs;          /* private namespace fs */&lt;br /&gt;
         uint64_t vx_flags;                /* context flags */&lt;br /&gt;
         uint64_t vx_bcaps;                /* bounding caps (system) */&lt;br /&gt;
         uint64_t vx_ccaps;                /* context caps (vserver) */&lt;br /&gt;
 &lt;br /&gt;
         pid_t vx_initpid;                 /* PID of fake init process */&lt;br /&gt;
 &lt;br /&gt;
         struct _vx_limit limit;           /* vserver limits */&lt;br /&gt;
         struct _vx_sched sched;           /* vserver scheduler */&lt;br /&gt;
         struct _vx_cvirt cvirt;           /* virtual/bias stuff */&lt;br /&gt;
         struct _vx_cacct cacct;           /* context accounting */&lt;br /&gt;
 &lt;br /&gt;
         char vx_name[65];                 /* vserver name */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de la sous-structure Ordonanceur:&lt;br /&gt;
 struct _vx_sched {&lt;br /&gt;
         spinlock_t tokens_lock; /* lock for this structure */&lt;br /&gt;
 &lt;br /&gt;
         int fill_rate;          /* Fill rate:      add X tokens ... */&lt;br /&gt;
         int interval;           /* Divisor:      ... each Y jiffies */&lt;br /&gt;
         atomic_t tokens;        /*         current number of tokens */&lt;br /&gt;
         int tokens_min;         /* Limit:        minimum for unhold */&lt;br /&gt;
         int tokens_max;         /* Limit:     no more than N tokens */&lt;br /&gt;
         uint32_t jiffies;       /* bias:     integral multiple of Y */&lt;br /&gt;
 &lt;br /&gt;
         uint64_t ticks;         /* token tick events */&lt;br /&gt;
         cpumask_t cpus_allowed; /* cpu mask for context */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
L'idee principale derriere ces sous-structures est de faciliter leur maintenabilite, a l'aide, pour chacune d'elles, d'une fonction init et cleanup, d'ou une lecture facilitee et une maintenabilite accrue.&lt;br /&gt;
&lt;br /&gt;
==== The Scheduler Command Data====&lt;br /&gt;
As an example for the data structure used to control a specific part of the context from user-space, here is a scheduler command and the utilized data structure to set the properties:&lt;br /&gt;
 #define VCMD_set_sched          VC_CMD(SCHED, 1, 2)&lt;br /&gt;
&lt;br /&gt;
 struct  vcmd_set_sched_v2 {&lt;br /&gt;
         int32_t fill_rate;      /* Fill rate:      add X tokens ... */&lt;br /&gt;
         int32_t interval;       /* Divisor:      ... each Y jiffies */&lt;br /&gt;
         int32_t tokens;         /*         current number of tokens */&lt;br /&gt;
         int32_t tokens_min;     /* Limit:        minimum for unhold */&lt;br /&gt;
         int32_t tokens_max;     /* Limit:     no more than N tokens */&lt;br /&gt;
         uint64_t cpu_mask;      /* Mask:               allowed cpus */&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Example Accounting: Sockets====&lt;br /&gt;
Basically all the accounting and limit stuff are defined as macros or inline functions capable of handling the different resources, hiding the underlying implementation wherever possible.&lt;br /&gt;
 #define vx_acc_sock(v,f,p,s) \&lt;br /&gt;
         __vx_acc_sock((v), (f), (p), (s), __FILE__, __LINE__)&lt;br /&gt;
&lt;br /&gt;
 static inline void __vx_acc_sock(struct vx_info *vxi,&lt;br /&gt;
         int family, int pos, int size, char *file, int line)&lt;br /&gt;
 {&lt;br /&gt;
         if (vxi) {&lt;br /&gt;
                 int type = vx_sock_type(family);&lt;br /&gt;
&lt;br /&gt;
                 atomic_inc(&amp;amp;vxi-&amp;gt;cacct.sock[type][pos].count);&lt;br /&gt;
                 atomic_add(size, &amp;amp;vxi-&amp;gt;cacct.sock[type][pos].total);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #define vx_sock_recv(sk,s) \&lt;br /&gt;
         vx_acc_sock((sk)-&amp;gt;sk_vx_info, (sk)-&amp;gt;sk_family, 0, (s))&lt;br /&gt;
 #define vx_sock_send(sk,s) \&lt;br /&gt;
         vx_acc_sock((sk)-&amp;gt;sk_vx_info, (sk)-&amp;gt;sk_family, 1, (s))&lt;br /&gt;
 #define vx_sock_fail(sk,s) \&lt;br /&gt;
         vx_acc_sock((sk)-&amp;gt;sk_vx_info, (sk)-&amp;gt;sk_family, 2, (s))&lt;br /&gt;
&lt;br /&gt;
And this general definition is then used where appropriate, for example in the __sock_sendmsg() function like this:&lt;br /&gt;
&lt;br /&gt;
         len = sock-&amp;gt;ops-&amp;gt;sendmsg(iocb, sock, msg, size);&lt;br /&gt;
         if (sock-&amp;gt;sk) {&lt;br /&gt;
                 if (len == size)&lt;br /&gt;
                         vx_sock_send(sock-&amp;gt;sk, size);&lt;br /&gt;
                 else&lt;br /&gt;
                         vx_sock_fail(sock-&amp;gt;sk, size);&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
==== Example Limits: Virtual Memory====&lt;br /&gt;
 #define vx_pages_avail(m, p, r) \&lt;br /&gt;
         __vx_pages_avail((m)-&amp;gt;mm_vx_info, (r), (p), __FILE__, __LINE__)&lt;br /&gt;
 &lt;br /&gt;
 static inline int __vx_pages_avail(struct vx_info *vxi,&lt;br /&gt;
                 int res, int pages, char *file, int line)&lt;br /&gt;
 {&lt;br /&gt;
         if (!vxi)&lt;br /&gt;
                 return 1;&lt;br /&gt;
         if (vxi-&amp;gt;limit.rlim[res] == RLIM_INFINITY)&lt;br /&gt;
                 return 1;&lt;br /&gt;
         if (atomic_read(&amp;amp;vxi-&amp;gt;limit.res[res]) +&lt;br /&gt;
                 pages &amp;lt; vxi-&amp;gt;limit.rlim[res])&lt;br /&gt;
                 return 1;&lt;br /&gt;
         return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #define vx_vmpages_avail(m,p)  vx_pages_avail(m, p, RLIMIT_AS)&lt;br /&gt;
 #define vx_vmlocked_avail(m,p) vx_pages_avail(m, p, RLIMIT_MEMLOCK)&lt;br /&gt;
 #define vx_rsspages_avail(m,p) vx_pages_avail(m, p, RLIMIT_RSS)&lt;br /&gt;
&lt;br /&gt;
And again the test against those limits at certain places, for example here in copy_process()&lt;br /&gt;
         /* check vserver memory */&lt;br /&gt;
         if (p-&amp;gt;mm &amp;amp;&amp;amp; !(clone_flags &amp;amp; CLONE_VM)) {&lt;br /&gt;
                 if (vx_vmpages_avail(p-&amp;gt;mm, p-&amp;gt;mm-&amp;gt;total_vm))&lt;br /&gt;
                         vx_pages_add(p-&amp;gt;mm-&amp;gt;mm_vx_info,&lt;br /&gt;
                                 RLIMIT_AS, p-&amp;gt;mm-&amp;gt;total_vm);&lt;br /&gt;
                 else&lt;br /&gt;
                         goto bad_fork_free;&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
==== Example Virtualization: Uptime====&lt;br /&gt;
 void vx_vsi_uptime(struct timespec *uptime)&lt;br /&gt;
 {&lt;br /&gt;
         struct vx_info *vxi = current-&amp;gt;vx_info;&lt;br /&gt;
 &lt;br /&gt;
         set_normalized_timespec(uptime,&lt;br /&gt;
                 uptime-&amp;gt;tv_sec - vxi-&amp;gt;cvirt.bias_tp.tv_sec,&lt;br /&gt;
                 uptime-&amp;gt;tv_nsec - vxi-&amp;gt;cvirt.bias_tp.tv_nsec);&lt;br /&gt;
         return;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
         if (vx_flags(VXF_VIRT_UPTIME, 0))&lt;br /&gt;
                 vx_vsi_uptime(&amp;amp;uptime, &amp;amp;idle);&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Paper/fr</id>
		<title>Paper/fr</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Paper/fr"/>
				<updated>2009-03-30T10:00:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: interim saving&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Abstract ==&lt;br /&gt;
Concept logiciel basé sur les ''Security Contextes'' permet la création d'une multitude de serveurs virtuels Privés (VPS) tournant simultanément sur un même serveur physique à pleine vitesse, en partageant efficacement les ressources matérielles.&lt;br /&gt;
Un VPS offre un environnement quasiment identique à celui d'un serveur Linux conventionnel. Tous les services, comme ssh, mail, Web, bases de données, peuvent être lancés dans un tel VPS, sans aucune modification (ou, dans certains cas, des modifications mineures), exactement comme avec n'importe quel autre serveur réel.&lt;br /&gt;
&lt;br /&gt;
Chaque serveur virtuel possède sa propre base utilisateurs et son mot de passe root. Il est isolé de tous les autres serveurs virtuels, sauf en ce qui concerne les ressources matérielles, qui sont partagées par tous les serveurs virtuels.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Au fur et à mesure des années, les micro ordinateurs sont devenus suffisemment puissant pour utiliser la virtualisation comme méthode pour donner l'illusion d'avoir une multitude de petites machines virtuelles, chacune d'elle tournant avec une instance différente de n'importe quel système d'exploitation.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs types de Machines Virtuelles (VMs) dont les fonctionnalités sont similaires, mais qui diffèrent dans le degré d'abstraction et les méthodes utilisées pour la virtualisation.&lt;br /&gt;
&lt;br /&gt;
La plupart d'entre elles &amp;quot;émulent&amp;quot; une ressource matérielle réelle ou fictive, qui, à son tour, fait usage de &amp;quot;vraies&amp;quot; ressources du système Hote (la machine qui fait tourner les VMs). Cette approche, utilisée par la plupart des émulations système (comme QEMU[U1], Bochs[U2], ... permet à l'émulateur d'éxécuter n'importe quel système d'exploitation, même pour une architecture différente (CPU et matérielle). Pas besoin de modifier le système d'exploitation Invité, puisqu'il n'est pas conscient de s'éxécuter sur autre chose qu'un vrai matériel.&lt;br /&gt;
&lt;br /&gt;
Quelques émulations systèmes ont besoin d'un petit nombre de modifications ou de pilotes de périphériques spécifiques sur le système Hote ou le système Invité pour améliorer les performances, et minimiser le grignotage superflu de ressources système qui passe dans les systèmes de cache et de médiation entre le système Hote et le système Invité. Bien que cela améliore sensiblement l'efficacité de ces solutions, les ressources perdues sont toujours notables (par exemple dans UML[U3] et Xen[U4]).&lt;br /&gt;
&lt;br /&gt;
Supposez par contre que les systèmes d'exploitation à lancer ne sont pas différents ... La plupart des applications qui tournent sur un serveur n'ont pas besoin d'acceder au matériel ou à du code au niveau noyau, et pourraient donc partager une machine avec les autres, si l'on pouvait les séparer et les isoler ...&lt;br /&gt;
&lt;br /&gt;
== Le Concept ==&lt;br /&gt;
A la base, un serveur Linux est constitué de trois blocs constitutifs: Le matériel, le Noyau, et les Applications. Le Matériel dépend habituellement du fournisseur ou de l'administrateur système, et, bien qu'ayant une grande influence sur les performances globales, ne peut pas être changé facilement, et diffère sensiblement d'une configuration à l'autre.&lt;br /&gt;
&lt;br /&gt;
Un role de base du noyau consiste à créer une couche d'abstraction au dessus du matériel pour permettre aux processus (Applications) de travailler avec des ressources (Données) sans connaitre les détails du matériel qui se trouve en dessous. Idéalement, ces processus sont complètement agnostiques vis-à-vis du matériel, écrit dans un langage interprété, et ne nécessitant par conséquent aucun savoir faire spécifique au matériel.&lt;br /&gt;
&lt;br /&gt;
Puisqu'un système possède assez de ressources pour faire tourner environ dix fois plus d'applications que nécessaire sur un serveur Linux traditionnel, pourquoi ne pas placer sur celui-ci une dizaine de serveurs, qui vont partager les ressources d'une manière efficace ?&lt;br /&gt;
&lt;br /&gt;
La plupart des serveurs d'application (par exemple httpd) considère qu'il est la seule application à fournir un service particulier, et d'habitude, va donc supposer une organisation particulière au niveau du système de fichiers, et de l'environnement. Cela implique que deux services identiques tournant sur un même serveur physique, mais différent simplement au niveau de leur adresse IP, par exemple, doivent être coordonnées. Cela demande typiquement pas mal de boulot pour l'administrateur système, et cela peut conduire à un stabilité réduite du système et de la sécurité.&lt;br /&gt;
&lt;br /&gt;
Le concept de base de la solution Linux-VServer est de séparer l'environnement en user space (espace utilisateur) en trois unités distinctes (appellées parfois VPS, ou Virtual Private Server), de telle manière que chaque VPS ressemblera à un vrai serveur vis-à-vis des processus qu'il contient.&lt;br /&gt;
&lt;br /&gt;
Bien que différentes Distributions Linux utilisent des noyaux modifiées (parfois lourdement) pour assurer le support de telle ou telle fonctionnalité, ou matériel, la plupart des distributions Linux ne sont pas liées irrévocablement à un noyau linux particulier.&lt;br /&gt;
&lt;br /&gt;
Linux-VServer utilise cela pour donner à plusieurs distributions, la possibilité de se lancer au dessus d'un seul noyau, partagé, sans accès direct au matériel, et partager les ressources d'une manière très efficace.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure Existante ==&lt;br /&gt;
Les noyaux Linux récents fournissent déjà de nombreuses fonctions de sécurité qui sont utilisées par Linux-Vserver pour fonctionner, telles que le Système de Privileges Linux, les limites de ressource, les attributs de fichier et l'environnement chroot. Les sections suivantes vous donneront un court aperçu de chacune d'entre elles. &lt;br /&gt;
=== Le système de Privileges (Capabilities) Linux  ===&lt;br /&gt;
En science informatique, un privilege est un jeton utilisé par un processus pour prouver qu'il est autorisé à faire une opération sur un objet. Le Système de privileges Linux est basé sur les &amp;quot;Privileges POSIX&amp;quot;, un concept légèrement similaire, conçu pour diviser les privilèges root puissants en un ensemble de privilèges distincts.&lt;br /&gt;
&lt;br /&gt;
==== Privileges POSIX ====&lt;br /&gt;
Un processus possède trois champs de bits appelés les privileges héritables (I - &amp;quot;Inheritable&amp;quot;), permises (P), et effectives (E). Chaque privilege est implémenté dans un bit de chacun de ces champs, bit qui est soit défini soit non-défini.&lt;br /&gt;
&lt;br /&gt;
Quand un processus essaie de faire une opération privilégiée, le système d'exploitation va vérifier les bits appropriés dans l'ensemble effectif des processus (au lieu de vérifier si l'uid respectif du processus est 0 comme il le fait habituellement).&lt;br /&gt;
&lt;br /&gt;
Par exemple, quand un processus essaie de modifier l'horloge, le noyau Linux va vérifier que ce processus a le bit CAP_SYS_TIME (actuellement le bit 25) parmi ses privileges effectives.&lt;br /&gt;
&lt;br /&gt;
L'ensemble permis d'un processus indique les privileges que celui-ci peut utiliser. Le processus peut avoir des privileges définies dans l'ensemble permis qui ne sont pas dans l'ensemble effectif.&lt;br /&gt;
&lt;br /&gt;
Ceci indique que le processus a temporairement désactivé ce privilege. Un processus n'est autorisé à définir un bit dans son ensemble effectif que si ce bit est disponible dans son ensemble permis.&lt;br /&gt;
&lt;br /&gt;
La distinction entre privileges effectif et permis existe pour que les processus puissent réaliser des opérations qui nécessitent des privilèges.&lt;br /&gt;
&lt;br /&gt;
Les privileges héritables sont les privileges du processus courant qui peuvent être hérités par un programme exécuté par ce dernier. L'ensemble permis d'un processus est masqué contre l'ensemble héritable pendant exec().&lt;br /&gt;
&lt;br /&gt;
Rien de spécial ne se produit durant fork() ou clone().&lt;br /&gt;
&lt;br /&gt;
Les processus fils ou les threads obtiennent une copie exacte des privileges du processus parent.&lt;br /&gt;
&lt;br /&gt;
L'implémentation dans Linux s'arrête là, alors que les privileges POSIX[U5] requièrent l'ajout d'un ensemble de privileges aux fichiers, pour remplacer le flag SUID (au moins pour les exécutables).&lt;br /&gt;
&lt;br /&gt;
==== Vue d'ensemble des privileges ====&lt;br /&gt;
La liste des privileges POSIX utilisées avec Linux est longue, et les 32 bits disponibles sont presques tous utilisés. Bien que la liste détaillée de ces privileges puisse être trouvée dans /usr/include/linux/capability.h sur la plupart des systèmes Linux, une vue d'ensemble des privileges importantes est donnée ici.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| CAP_CHOWN || change le propriétaire et le groupe du fichier&lt;br /&gt;
|-&lt;br /&gt;
| 5|| CAP_KILL|| envoie un signal au processus avec un ID utilisateur différent, réel ou effectif&lt;br /&gt;
|-&lt;br /&gt;
| 6|| CAP_SETGID|| permet le passage de setgid(2), setgroups(2), et de gids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 7|| CAP_SETUID|| permet le passage de set*uid(2) et d'uids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 8|| CAP_SETPCAP|| transfert/déplace tout privilege de l'ensemble permis vers/depuis n'importe quel pid&lt;br /&gt;
|-&lt;br /&gt;
| 9|| CAP_LINUX_IMMUTABLE|| permet la modification des attributs de fichier S_IMMUTABLE et S_APPEND&lt;br /&gt;
|-&lt;br /&gt;
| 11|| CAP_NET_BROADCAST|| permet la diffusion et l'écoute en multicast&lt;br /&gt;
|-&lt;br /&gt;
| 12|| CAP_NET_ADMIN|| permet la configuration de l'interface, le pare-feux IP, le masquerading, l'accounting, le débugage de sockets, les tables de routage, la liaison sur n'importe quelle adresse, l'entrée dans le mode de promiscuité, le multicasting...&lt;br /&gt;
|-&lt;br /&gt;
| 13|| CAP_NET_RAW|| permet l'utilisation des sockets RAW et PACKET&lt;br /&gt;
|-&lt;br /&gt;
| 16|| CAP_SYS_MODULE|| ajoute et retire des modules noyau&lt;br /&gt;
|-&lt;br /&gt;
| 18|| CAP_SYS_CHROOT|| permet chroot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 19|| CAP_SYS_PTRACE|| permet ptrace() sur n'importe quel processus&lt;br /&gt;
|-&lt;br /&gt;
| 21|| CAP_SYS_ADMIN|| la liste serait trop longue, ceci permet en gros de faire tout ce qui n'est pas mentionné dans les autres privileges&lt;br /&gt;
|-&lt;br /&gt;
| 22|| CAP_SYS_BOOT|| permet reboot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 23|| CAP_SYS_NICE|| permet l'élévation des privilèges et la modification de la priorité des autres processus, en modifiant l'ordonnanceur&lt;br /&gt;
|-&lt;br /&gt;
| 24|| CAP_SYS_RESOURCE|| passe outre les limites de ressource, de quota, l'espace réservé sur un système de fichier...&lt;br /&gt;
|-&lt;br /&gt;
| 27|| CAP_MKNOD|| permet les aspects privilégiés de mknod(2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir également les Exemples [E01],[E02], et [E03].&lt;br /&gt;
&lt;br /&gt;
=== Limite des Ressources  ===&lt;br /&gt;
Vous pouvez limiter les ressources de chaque processus en spécifiant une limite pour chaque ressource. A la manière des privileges Linux, il existe deux types de limites, l'une Douce, l'autre Dure.&lt;br /&gt;
&lt;br /&gt;
La limite Douce est la valeur que le noyau imposera pour cette ressource à un processus. Un utilisateur non privilégié pourra régler la limite Douce n'importe où en dessous de la valeur Dure. Seul l'utilisateur root pourra re-hausser la limite Dure.&lt;br /&gt;
&lt;br /&gt;
==== Apercu des Ressources Limit-ables ====&lt;br /&gt;
La liste des ressources qui peuvent être limitées se trouve dans le fichier /usr/include/asm/resource.h sur la plupart des systèmes Linux.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| RLIMIT_CPU || Temps CPU en secondes. un signal SIGXCPU est envoyé au processus qui a atteind la limite Douce, et un SIGKILL pour la limite Dure.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| RLIMIT_CORE || Taille maximale d'un fichier core.&lt;br /&gt;
|-&lt;br /&gt;
| 5|| RLIMIT_RSS || Nombre de pages maximum qu'un processus peut utiliser (en RAM)&lt;br /&gt;
|-&lt;br /&gt;
| 6|| RLIMIT_NPROC || Nombre maximum de processus autorisés à l'utilisateur réel du processus appelant.&lt;br /&gt;
|-&lt;br /&gt;
| 7|| RLIMIT_NOFILE || Spécifie la valeur +1 pour le nombre maximum de descripteurs de fichiers ouvert par un processus.&lt;br /&gt;
|-&lt;br /&gt;
| 8|| RLIMIT_MEMLOCK || Nombre maximum de pages mémoire virtuelle autorisées à être vérouillées en RAM à l'aide des appels mlock() ou mlockall().&lt;br /&gt;
|-&lt;br /&gt;
| 9|| RLIMIT_AS || Nombre maximum de pages de mémoire virtuelle disponible pour un processus.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Limite de l'espace d'adressage) &lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E11], et [E12].&lt;br /&gt;
&lt;br /&gt;
=== Attributs de Fichiers  ===&lt;br /&gt;
Auparavant, cette fonctionnalité n'était disponible qu'avec ext2, mais maintenant tous les systèmes de fichiers majeurs implémentent un ensemble d'Attributs de fichiers de base, qui permettent le paramétrage de certaines propriétés. Voici de nouveau un bref aperçu des possibilités des attributs, et leur signification.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| s SECRM ||  Lorsqu'un fichier avec cet attribut est détruit, les blocs qui le composent sont mis à zéro et re-écrit sur le disque.&lt;br /&gt;
|-&lt;br /&gt;
| u UNRM ||  Lorsqu'un fichier avec cet attribut est détruit, son contenu est sauvegardé.&lt;br /&gt;
|-&lt;br /&gt;
| c COMPR ||  Un fichier marqué avec cet attribut est automatiquement compressé à l'écriture et décompressé à la lecture. (pas encore implémenté)&lt;br /&gt;
|-&lt;br /&gt;
| i IMMUTABLE ||  Un fichier avec cet attribut ne pourra pas être modifié: Impossible de le renommer ou de le détruire, impossible de créer un lien vers ce fichier, ni d'écrire une donnée de plus vers ce fichier. &lt;br /&gt;
|-&lt;br /&gt;
| a APPEND ||  Un fichier avec cet attribut ne pourra être ouvert qu'en mode ajout.&lt;br /&gt;
|-&lt;br /&gt;
| d NODUMP ||  Si cet attribut de fichier est mis, le fichier n'est pas candidat à un backup via l'utilitaire &amp;quot;dump&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| S SYNC ||  Les mises à jour vers ce fichier se feront de manière synchrone.&lt;br /&gt;
|-&lt;br /&gt;
| A NOATIME ||  Empêche la mise à jour de l'enregistrement atime lors d'un accès ou d'une modification de fichier.&lt;br /&gt;
|-&lt;br /&gt;
| t NOTAIL ||  Un fichier avec l'attribut t n'aura pas de fragment bloc en fin de fichier fusionné avec un autre fichier.&lt;br /&gt;
|-&lt;br /&gt;
| D DIRSYNC ||  Les modifications apportés à ce répertoire seront écrites de manière synchrones. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E13] et [E14].&lt;br /&gt;
&lt;br /&gt;
=== La Commande chroot(1)  ===&lt;br /&gt;
chroot permet de lancer une commande en changeant le répertoire racine dans lequel il va s'éxécuter. Cela signifie que tout parcours du système de fichiers à partir de la racine '/' se fera à partir de la racine substituée et non pas à partir de la racine originelle.&lt;br /&gt;
&lt;br /&gt;
Bien que le chroot Linux n'est pas très sécurisé, son utilisation augmente l'isolation des processus par rapport au système de fichier, et, à condition de l'utiliser correctement, peut être utilisé pour &amp;quot;emprisonner&amp;quot; un processus, un utilisateur unique, ou un démon (service).&lt;br /&gt;
&lt;br /&gt;
Voir l'Exemple [E15]&lt;br /&gt;
&lt;br /&gt;
== Modifications Requises ==&lt;br /&gt;
Ce chapitre décrit les modifications à apporter au noyau pour implémenter un mécanisme comme Linux-VServer.&lt;br /&gt;
&lt;br /&gt;
=== Séparation de Contextes ===&lt;br /&gt;
La séparation telle que décrite dans la partie 'Concepts' nécessite quelques modifications au noyau pour permettre la notion de Contexte.&lt;br /&gt;
&lt;br /&gt;
Le but d'un tel &amp;quot;Contexte&amp;quot; est de cacher à un processus tout ce qui ne doit pas etre à sa portée, et empécher les interractions indésirables entre un processus appartenant à un contexte et un processus appartenant à un autre contexte.&lt;br /&gt;
&lt;br /&gt;
Cette séparation nécessite l'extension d'un certain nombre de structures de données pour qu'elles prennent en compte les contextes et fassent la différentiation entre deux uids identiques mais utilisés dans deux serveurs virtuels différents.&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons besoin d'un contexte par defaut qui sera utilisé par le serveur hôte au démarrage, et pour éviter les problèmes liés à des suppositions érronées de certains outils en espace utilisateur (comme pstree) par exemple, l'idée comme quoi init existe toujours et a toujours l'uid 1.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'administration, le Contexte de l'Hôte n'est pas traité différemment d'un autre contexte, en tout cas du point de vue de l'isolation des processus.&lt;br /&gt;
&lt;br /&gt;
Pour avoir un apercu global de tous les processus, un Spectateur spécial a été mis en place, qui est capable de capturer tous les processus d'un coup.&lt;br /&gt;
Voir les Examples [E21],[E22] et [E23]&lt;br /&gt;
&lt;br /&gt;
=== Séparation Réseau  ===&lt;br /&gt;
Bien que les Contextes soient suffisant pour isoler un groupe de processus, un autre type d'isolation, ou plutot une limitation, est nécessaire pour confiner les processus dans un sous ensemble d'adresses réseau disponibles.&lt;br /&gt;
&lt;br /&gt;
Plusieurs problèmes doivent être pris en compte dans ce sens: par exemple, les appels système bind sur IPADDR_ANY doivent être traités d'une manière bien particulière.&lt;br /&gt;
&lt;br /&gt;
Actuellement, Linux-Vserver n'utilise pas les interfaces virtuelles (et ne les utilisera peut-être jamais), pour minimiser le cout supplémentaire qu'elles engendrent. De ce fait, l'attachement d'une socket et la transmission des packets ont été adaptés.&lt;br /&gt;
&lt;br /&gt;
Voir Example [E24]&lt;br /&gt;
&lt;br /&gt;
=== La Barrière Chroot  ===&lt;br /&gt;
Un problème majeur avec le chroot() de Linux aujourd'hui tient au fait que cette information est volatile, et changera au prochain appel système de chroot().&lt;br /&gt;
&lt;br /&gt;
Voici une façon simple pour sortir d'un environnement chrooté Créez tout d'abord un fichier, et retenez son descripteur. Puis chrootez dans un répertoire au même niveau ou un niveau au dessous de celui-ci. Cela a pour effet de faire descendre la racine' dans le système de fichiers. Ensuite, faites un appel à fchdir() sur le descripteur de fichiers pour sortir de cette nouvelle racine. Vous sortirez en même temps de l'ancienne racine, qui a été perdue suite au dernier appel système chroot().&lt;br /&gt;
&lt;br /&gt;
Alors que des méthodes exotiques étaient utilisées dans les anciennes versions de Linux-Vserver pour fixer ce problème, les versions récentes utilisent un marquage spécial, connu sous le nom de Barrière Chroot, placé sur le parent de tous les VPS pour prévenir toute modification non autorisée et sortie du confinement.&lt;br /&gt;
&lt;br /&gt;
=== Un plafond pour les Privileges  ===&lt;br /&gt;
L'implémentation actuelle des privileges Linux ne prend pas en compte les privileges POSIX sur les systèmes de fichiers. Si cela était le cas, les executables setuid et setgid seraient sécurisés. Pour conserver donc une bonne sécurité malgré cette contrainte, nous avons défini un plafond pour tous les processus d'un même contexte, et un masque de privileges additionnel pour chaque contexte a été aussi ajouté pour limiter à ce seul masque les processus qui appartiennent à ce contexte.&lt;br /&gt;
&lt;br /&gt;
La signification des privileges individuels (bits) pour ce masque est exactement identique à celui que permet l'ensemble des privileges.=== Isolation de Ressources  ===&lt;br /&gt;
&lt;br /&gt;
=== Isolation de Ressources ===&lt;br /&gt;
La plupart des ressources sont d'une certaine manière partagées à travers les différents contextes; certaines requièrent une isolation plus importante que les autres, soit pour éviter les problèmes de sécurité, ou pour permettre une meilleure comptabilité de l'usage des ressources;&lt;br /&gt;
&lt;br /&gt;
Ces ressources sont:&lt;br /&gt;
* mémoire partagée, IPC&lt;br /&gt;
* PID et User ID&lt;br /&gt;
* Drapeau xid sur les fichiers&lt;br /&gt;
* ptys Unix&lt;br /&gt;
* sockets&lt;br /&gt;
&lt;br /&gt;
=== Drapeau XID pour les Filesystem XID ===&lt;br /&gt;
Bien qu'elle puisse être totalement desactivée, cette modification est requise pour une meilleure robustesse au niveau du système de fichiers, et pour isoler les contextes. Le drapeau XID est aussi totalement indispensable pour implémenter le support pour les Limites Disques par Contexte et les Quotas par Contexte sur une partition partagée.&lt;br /&gt;
&lt;br /&gt;
Ce concept d'ajouter un identifiant de contexte (xid) à chaque fichier pour créer une notion d'appartenance d'un fichier à un contexte parait simple ... Il n'en est rien, car l'implémentation actuelle n'est pas triviale. Elle nécessite soit une modification des représentations du système de fichier, soit des astuces au niveau applicatif.&lt;br /&gt;
&lt;br /&gt;
Une approche non intrusive pour éviter toute modification du système de fichiers sous-jacent est d'utiliser les bits de poids forts de champs existants, comme ceux des UID ou GID pour stocker le XID additionnel.&lt;br /&gt;
&lt;br /&gt;
Une fois que les informations de contexte sont disponibles au niveau de chaque inode, l'étape logique suivante est d'étendre la vérification d'accès au contexte en plus du reste.&lt;br /&gt;
&lt;br /&gt;
Actuellement, tous les acces aux inodes sont vérifiés par rapport à leur contexte ID, à l'exception des contextes &amp;quot;Hôte&amp;quot; et &amp;quot;Spectateur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les fichiers non étiquettés dans le contexte hôte sont simplement traités comme appartenant au contexte courant, et cela est requis pour que l'Unification soit possible. Si un tel fichier est modifié à l'intérieur d'un contexte, elle changera en silence vers son noveau contexte, en changeant son XID.&lt;br /&gt;
&lt;br /&gt;
Les méthodes suivantes de marquage sont utilisées:&lt;br /&gt;
&lt;br /&gt;
;UID32/GID32 or EXTERNAL:  Ce format utilise l'espace inutilisé dans l'inode disque pour stocker les informations de contexte. Pour l'instant, c'est uniquement défini pour ext3/ext3, mais sera dans le futur aussi défini pour xfs, reiserfs, et jfs, dès que possible.&lt;br /&gt;
&lt;br /&gt;
Avantage: Valeurs 32bit uid/gid complètes.&lt;br /&gt;
&lt;br /&gt;
;UID32/GID16:  Ce format utilise la moitié haute du GID pour stocker les informations de contexte. Cela est fait de manière transparente, sauf si le format est changé sans conversion préalable.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne avec tout système de fichiers équipé de UID / GID 32bits&lt;br /&gt;
&lt;br /&gt;
Désavantage: le GID est réduit a 16 bits.&lt;br /&gt;
&lt;br /&gt;
;UID24/GID24:  Ce format utilise le premier quart haut de l'UID et du GID pour stocker les informations de contexte, une fois encore, d'une manière transparente. Cela permet 16 millions de groupes et utilisateurs, ce qui devrait suffire pour la majorité des applications.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne sur tout système de fichiers avec des UID/GID 32bits&lt;br /&gt;
&lt;br /&gt;
Desavantage: les UID et GID sont réduits a 24 bits.&lt;br /&gt;
&lt;br /&gt;
Voir Examples [E31] et [E32]&lt;br /&gt;
&lt;br /&gt;
== Modifications Supplémentaires ==&lt;br /&gt;
En plus du strict minimum, voici un certain nombre de modifications, non indispensables, mais qui se sont révélées très utiles au fil du temps.&lt;br /&gt;
&lt;br /&gt;
=== Drapeaux par Contexte  ===&lt;br /&gt;
Très tôt, le besoin d'activer ou désactiver une fonctionnalité séparement pour l'un ou l'autre des Vserver est apparue. Un champ de bits a donc été ajouté (taille=word).&lt;br /&gt;
&lt;br /&gt;
Ce champ de bits comprend un bon nombre de drapeaux, un champ masque, qui indique les drapeaux disponibles, et un mécanisme de déclanchement spécial, pour activer un drapeau au démarrage, puis le désactiver en causant un évennement ou une action associée.&lt;br /&gt;
&lt;br /&gt;
Voici la liste des drapeaux prévus et pour la plupart déjà implémentés. Ils sont disponibles dans la branche de développement de Linux-VServer:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| VXF_INFO_LOCK (historique, obsolète)&lt;br /&gt;
|-&lt;br /&gt;
| 1|| VXF_INFO_SCHED (historique, obsolète)|| schedule all processes in a context as if they where one.&lt;br /&gt;
|-&lt;br /&gt;
| 2|| VXF_INFO_NPROC (historique, obsolète)|| limite le nombre de processus autorisés dans un contexte à la valeur NPROC.&lt;br /&gt;
|-&lt;br /&gt;
| 3|| VXF_INFO_PRIVATE (historique)|| interdiction d'entrer dans ce contexte depuis l'extérieur.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| VXF_INFO_INIT  (historique) || show the init process with pid '1'&lt;br /&gt;
|-&lt;br /&gt;
| 5|| VXF_INFO_HIDE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 6|| VXF_INFO_ULIMIT (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 7|| VXF_INFO_NSPACE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 8|| VXF_SCHED_HARD || activer l'ordonnancement &amp;quot;Hard CPU&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 9|| VXF_SCHED_PRIO || calculer les priorités de chaque processus à l'aide du &amp;quot;contexte token bucket&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| 10|| VXF_SCHED_PAUSE || mettre tous les processus de ce contexte dans la file &amp;quot;hold&amp;quot;, les empéchant d'être ordonnancés à nouveau.&lt;br /&gt;
|-&lt;br /&gt;
| 16|| VXF_VIRT_MEM || virtualize the memory information so that the VM and RSS limits are used for meminfo and friends&lt;br /&gt;
|-&lt;br /&gt;
| 17|| VXF_VIRT_UPTIME || virtualiser l'uptime, en commançant à la date de création du contexte.&lt;br /&gt;
|-&lt;br /&gt;
| 18|| VXF_VIRT_CPU || &lt;br /&gt;
|-&lt;br /&gt;
| 24|| VXF_HIDE_MOUNT ||  afficher les /proc/{pid}/mounts comme vides.&lt;br /&gt;
|-&lt;br /&gt;
| 25|| VXF_HIDE_NETIF ||  cache les interfaces réseau et addresses non autorisées dans ce contexte.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Privileges par Contexte  ===&lt;br /&gt;
Lorsque nous sommes arrivé au nombre maximum de privileges envisageables sans trop modifier le noyau, l'étape suivante a été, naturellement, d'ajouter un système de privileges par contexte.&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des privileges par contexte implémenté dans Linux-VServer permet un réglage fin des privileges Linux. Ils ne sont pas visibles aux processus d'un contexte donné, puisque de toute facon le processus n'aurait pas le droit de les vérifier ou de les modifier.&lt;br /&gt;
&lt;br /&gt;
Généralement, il y a deux facons d'utiliser ces privileges : * Require one or a number of context capabilities to be set in addition to a given Linux capability, each one controlling a distinct part of the functionality. For example the CAP_NET_ADMIN could be split into RAW and PACKET sockets, so you could take away each of them separately by not providing the required context capability.&lt;br /&gt;
&lt;br /&gt;
Consider the context capability sufficient for a specified functionality, even if the Linux Capability says something different. For example mount() requires CAP_SYS_ADMIN which adds a dozen other things we do not want, so we define a CCAP_MOUNT to allow mounts for certain contexts.&lt;br /&gt;
&lt;br /&gt;
The difference between the Context Flags and the Context Caps is more an abstract logical separation than a functional one, because they are handled very similar.&lt;br /&gt;
Again, a list of the Context Capabilities and their purpose:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
|0|| VXC_SET_UTSNAME||  autoriser le contexte à changer le nom de serveur et le nom de domaine en utilisant l'appel système noyau approprié&lt;br /&gt;
|-&lt;br /&gt;
|1|| VXC_SET_RLIMIT||  allow the context to modify the resource limits (within the vserver limits).&lt;br /&gt;
|-&lt;br /&gt;
|8|| VXC_RAW_ICMP||  allow raw icmp packets in a secure way (this makes ping work from inside)&lt;br /&gt;
|-&lt;br /&gt;
|16|| VXC_SECURE_MOUNT|| permit secure mounts, which at the moment means that the nodev mount option is added.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Comptabilité par Contexte  ===&lt;br /&gt;
Plusieurs propriétés des contextes sont très utiles pour l'administrateur système, que ce soit pour garder un oeil sur les ressources, pour avoir une idée de ce que peut supporter le serveur, ou pour pouvoir facturer d'une manière ou d'une autre au client.&lt;br /&gt;
&lt;br /&gt;
Deux types de propriétés peuvent être comptabilisées, celles dont la valeur courante représente l'état du système (par analogie, prenez la vitesse d'un véhicule), et celles dont la valeur augmente régulièrement avec le temps (comme le kilométrage).&lt;br /&gt;
&lt;br /&gt;
La plupart des valeurs d'état sont limitables, et sont donc traitées d'une façon spécifique, comme cela est décrit dans la section qui suit.&lt;br /&gt;
&lt;br /&gt;
Good candidates for Context Accounting are:&lt;br /&gt;
* Temps CPU utilisé&lt;br /&gt;
* Nombre de fork() effectués&lt;br /&gt;
* Nombre de messages Socket par Type&lt;br /&gt;
* Nombre de paquets Transmis et Recus&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E41]&lt;br /&gt;
&lt;br /&gt;
=== Limites par Contexte  ===&lt;br /&gt;
La plupart des ressources système, que ce soit la consommation mémoire, le nombre de processus utilisés, le nombre de descripteurs de fichiers, la bande passante réseau, doivent pouvoir être limitées.&lt;br /&gt;
&lt;br /&gt;
Les limites par contexte permettent, pour chaque valeur limitable, de définir trois types de limites: minimum, soft, et hard(maximum).&lt;br /&gt;
&lt;br /&gt;
A l'heure actuelle, seule les limites hard sont supportées, et seulement une partie d'entre elles sont réellement activées. Voici une liste des limites par contexte actuelles et prévues:&lt;br /&gt;
* limites sur les processus&lt;br /&gt;
* limites sur l'ordonnanceur&lt;br /&gt;
* limites mémoire&lt;br /&gt;
* limites disques par contexte&lt;br /&gt;
* quotas user/groupe par contexte&lt;br /&gt;
&lt;br /&gt;
De plus, les limites par contexte gardent trace des valeur maxima atteintes et du nombre de fois ou la limite a été atteinte (hit), pour donner un feedback utile a l'administrateur.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E42]&lt;br /&gt;
&lt;br /&gt;
=== Virtualisation  ===&lt;br /&gt;
One major difference between the Linux-VServer approach and Virtual Machines is that you do not have the virtualization part as a side-effect, so you have to do that by hand where it makes sense.&lt;br /&gt;
&lt;br /&gt;
For example, a Virtual Machine does not need to think about uptime, because naturally the running OS was started somewhere in the past and will not have any problem to tell the time it thinks it began running.&lt;br /&gt;
&lt;br /&gt;
A context can also store the time when it was created, but that will be different from the systems uptime, so in addition, there has to be some function, which adjusts the values passed from kernel to user-space depending on the context the process belongs to.&lt;br /&gt;
&lt;br /&gt;
This is what for Linux-VServer is known as Virtualization (actually it's more faking some values passed to and from the kernel to make the processes think that they are on a different machine).&lt;br /&gt;
&lt;br /&gt;
Currently modified for the purpose of Virtualization are:&lt;br /&gt;
* System Uptime&lt;br /&gt;
* Host and Domain Name&lt;br /&gt;
* Machine Type and Kernel Version&lt;br /&gt;
* Context Memory Availability&lt;br /&gt;
* Context Disk Space&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E43]&lt;br /&gt;
&lt;br /&gt;
=== Sécurité Renforcée  ===&lt;br /&gt;
Le mécanisme de sécurité Proc-FS protège les entrées dynamiques du système de fichiers proc, de façon à ce que toutes les entrées ne soient pas vues dans tous les contextes.&lt;br /&gt;
&lt;br /&gt;
Le système est constitué de trois drapeaux pour chaque entrée du Proc-FS: Admin, Watch, et Hide.&lt;br /&gt;
&lt;br /&gt;
Le Drapeau Hide active ou désactive entierement une fonctionnalité, donc toute combinaison associée avec un drapeau Hide à 0 aura donc la signification visible.&lt;br /&gt;
&lt;br /&gt;
Les drapeaux Admin et Watch déterminent ou l'entrée hidden (cachée) reste visible; par exemple, si les drapeaux Admin et Hidden sont mis, seul le Host Contexte (0) sera en mesure de voir cette entrée spécifique.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E44] et Voir Exemple [E45]&lt;br /&gt;
&lt;br /&gt;
=== Kernel Helper  ===&lt;br /&gt;
Dans certains cas, il peut être nécessaire de mettre en place un outil en espace utilisateur qui va agir en lieu et place du noyau, lorsque par exemple un processus demande une fonctionnalité disponible sur un serveur réel, mais non disponible dans un contexte.&lt;br /&gt;
&lt;br /&gt;
Le meilleur exemple d'un tel cas est le &amp;quot;Reboot Helper&amp;quot;, qui implémente l'appel système reboot(), invoqué depuis l'intérieur d'un contexte en lieu et place du noyau. L'appel sera éxécuté depuis le contexte hôte, qui lancera l'action adéquate, reboot ou un simple halt du contexte en question.&lt;br /&gt;
&lt;br /&gt;
Bien que ce &amp;quot;helper&amp;quot; soit concu pour être flexible et gérer un certain nombre de choses de la même facon, il n'est pas utilisé pour l'instant à autre chose, et pourrait être remplacé dans le futur par une interface par evènement.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités et documentation additionnelle ==&lt;br /&gt;
=== Unification  ===&lt;br /&gt;
L'un des objectifs centraux de Linux-VServer est de réduire l'utilisation des ressources partout ou cela est possible. Une excellente idée a donc germé, celle de partager des fichiers à travers les différents contextes sans interférer avec les taches administratives classiques ou diminuer le niveau de sécurité.&lt;br /&gt;
&lt;br /&gt;
Les fichiers communs à plusieurs contextes, peu sujet à être modifiés, comme les bibliothèques ou les binaires, peuvent être soudés via un lien dur sur un système de fichier partagé, réduisant d'autant le besoin en espace disque, cache d'inodes, et surtout, l'occupation mémoire, via l'utilisation des bibliothèques partagées.&lt;br /&gt;
&lt;br /&gt;
Seul inconvénient, si nous ne prenons pas quelques mesures supplémentaires, un contexte malicieux sera en mesure, par accident ou volontairement, de détruire ou modifier un tel fichier partagé, ce qui aurait des conséquences directes sur les autres contextes.&lt;br /&gt;
La première étape consiste à placer sur les fichiers partagés un drapeau Immutable (et enlever la caps qui permet de modifier un tel fichier). Il faut toutefois ajouter un attribut supplémentaire à ces fichiers partagés, pour permettre leur suppréssion, lors, par exemple, d'une mise à jour des bibliothèques dans un l'un des contextes.&lt;br /&gt;
&lt;br /&gt;
Ces fichiers liés, immutables, que l'ont peut toutefois détruire, et appartenant à plus d'un contexte sont appelés unifiés, et l'action qui consiste à les rechercher et les préparer s'appelle Unification.&lt;br /&gt;
&lt;br /&gt;
Choississez l'unification si vous souhaitez réduire votre usage de ressources. L'inconvénient évident est une administration moins facile. Un Serveur Linux s'installe typiquement sur 500Mo de disque, et 10 serveurs unifiés en consommeront donc seulement 700Mo, et moins de mémoire pour les caches.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Espaces de nom privés  ===&lt;br /&gt;
Ajoutés récemment dans Linux-VServer, les espaces de noms privés utilisent la couche VFS du noyau linux et offrent une vue différente du système de fichier pour chaque contexte.&lt;br /&gt;
Par rapport au schéma traditionnel, l'avantage principal apparait lorsqu'on modifie quelquechose dans un espace de nommage (par exemple, les points de montage); à cet instant, les autres contextes resteront intact, y compris biensur le contexte Hôte.&lt;br /&gt;
Désavantage évident d'une telle approche; entrer dans un tel espace de noms privé n'est pas aussi simple que d'entrer dans un chroot. Toutefois, les choses pourraient changer dans les noyaux futurs, si cette fonctionnalité est par exemple intégrée directement à la fonction chroot().&lt;br /&gt;
&lt;br /&gt;
=== Le système de fichier Proc-FS de Linux-VServer ===&lt;br /&gt;
A structured, dynamically generated subtree of the well-known Proc-FS - actually two of them - has been created to allow for inspecting the different values of Security and Network Contexts.&lt;br /&gt;
   /proc/virtual&lt;br /&gt;
     .../info&lt;br /&gt;
&lt;br /&gt;
   /proc/virtual/&amp;lt;pid&amp;gt;&lt;br /&gt;
     .../info&lt;br /&gt;
     .../status&lt;br /&gt;
     .../sched&lt;br /&gt;
     .../cvirt&lt;br /&gt;
     .../cacct&lt;br /&gt;
     .../limit&lt;br /&gt;
&lt;br /&gt;
=== Extensions Token Bucket  ===&lt;br /&gt;
While the basic idea of Linux-VServer is a peaceful coexistence of all contexts, sharing the common resources in a respectful way, it is sometimes useful to control the resource distribution for resource hungry processes.&lt;br /&gt;
&lt;br /&gt;
The basic principle of a Token Bucket is not very new. It is given here as an example for the Hard CPU Limit. The same principle also applies to scheduler priorities, network bandwidth limitation and resource control in general.&lt;br /&gt;
&lt;br /&gt;
The Hard CPU Limit uses this mechanism in the following way: consider a bucket of a certain size S which is filled with a specified amount of tokens R every interval T, until the bucket is &amp;quot;full&amp;quot; - excess tokens are spilled. At each timer tick, a running process consumes exactly one token from the bucket, unless the bucket is empty, in which case the process is put on a hold queue until the bucket has been refilled with a minimum M of tokens. The process is then rescheduled.&lt;br /&gt;
&lt;br /&gt;
A major advantage of a Token Bucket is that a certain amount of tokens can be accumulated in times of quiescence, which later can be used to burst when resources are required.&lt;br /&gt;
&lt;br /&gt;
Where a per-process Token Bucket would allow for a CPU resource limitation of a single process, a Context Token Bucket allows to control the CPU usage of all confined processes.&lt;br /&gt;
&lt;br /&gt;
Another approach, which is also implemented, is to use the current fill level of the bucket to adjust the process priority, thus reducing the priority of processes belonging to excessive contexts.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Limites Disque par Contexte  ===&lt;br /&gt;
Pour faire usage de cette fonctionnalité, le support pour les fichiers étiquetés XID doit être présent. Grace aux limites par contexte, vous pouvez alors régler une limite différente pour chaque contexte d'une partition partagée.&lt;br /&gt;
&lt;br /&gt;
Chaque block et inode d'un système de fichier est comptabilisé, dès lors qu'un hachage XID a été ajouté à ce système de fichier dans ce contexte donné.&lt;br /&gt;
Those values, including current usage, maximum and reserved space, will be shown for filesystem queries, creating the illusion that the shared filesystem has a different usage and size, for each context.&lt;br /&gt;
&lt;br /&gt;
=== Quota par Contexte ===&lt;br /&gt;
Similar to the Context Disk Limits, Per-Context Quota uses separate quota hashes for different Contexts on a shared filesystem. This is not required to allow for Linux-VServer quota on separate partitions.&lt;br /&gt;
&lt;br /&gt;
=== Le périphérique &amp;quot;proxy&amp;quot; VRoot  ===&lt;br /&gt;
Les opérations sur les Quotas (ioctls) nécessitent un accès aux périphériques de bloc. Ils ne sont donc pas disponible dans un VPS.&lt;br /&gt;
&lt;br /&gt;
=== Stealth  ===&lt;br /&gt;
Pour certaines applications, par exemple la préparation d'un &amp;quot;pot de miel&amp;quot; (honey-pot), ou d'une imitation particulièrement réaliste d'un vrai serveur à des fins éducatives, vous aurez peut-être besoin de confondre le contexte du serveur hôte (réel) et celui de votre pot de miel. &lt;br /&gt;
Toutefois, certaines alternatives libres comme QEMU ou UML vous permettent de faire la même chose beaucoup mieux et avec moins d'efforts. Ce n'est donc pas une question centrale dans le développement de Linux-VServer.&lt;br /&gt;
&lt;br /&gt;
== Sécurité Linux-VServer ==&lt;br /&gt;
Nous savons maintenant que Linux-VServer implémente quelques principes de sécurité, et comment ils fonctionnent. Il faut tout de même dire quelques mots la dessus, puisqu'il ne suffit pas, bien évidemment, de considérer que Linux-VServer étant une architecture sécurisée, votre système sera sur automatiquement. Comme d'habitude, mieux vaut savoir *exactement* ce que vous faites.&lt;br /&gt;
&lt;br /&gt;
=== Privileges Sécurisées ===&lt;br /&gt;
Actuellement, seules les privileges Linux suivantes sont considérés d'un usage sans risque dans un VPS. Si d'autres privileges sont nécessaires, ils ouvrent probablement des trous de sécurité.&lt;br /&gt;
* CAP_CHOWN&lt;br /&gt;
* CAP_DAC_OVERRIDE&lt;br /&gt;
* CAP_DAC_READ_SEARCH&lt;br /&gt;
* CAP_FOWNER&lt;br /&gt;
* CAP_FSETID&lt;br /&gt;
* CAP_KILL&lt;br /&gt;
* CAP_SETGID&lt;br /&gt;
* CAP_SETUID&lt;br /&gt;
* CAP_NET_BIND_SERVICE&lt;br /&gt;
* CAP_SYS_CHROOT&lt;br /&gt;
* CAP_SYS_PTRACE&lt;br /&gt;
* CAP_SYS_BOOT&lt;br /&gt;
* CAP_SYS_TTY_CONFIG&lt;br /&gt;
* CAP_LEASE&lt;br /&gt;
CAP_NET_RAW par exemple n'est pas considéré comme sur. Bien qu'il soit souvent utilisé pour donner le droit à la commande &amp;quot;ping&amp;quot; (dont le fonctionnement est cassé), il existe de bien meilleures alternatives comme la commande ping &amp;quot;poink[U7]&amp;quot;, ou la cap VXC_RAW_ICMP.&lt;br /&gt;
&lt;br /&gt;
=== La Barrière Chroot  ===&lt;br /&gt;
Il faut vous assurer que le drapeau barrière est bien mis sur tout répertoire parent de chacun de vos VPS. Cela est indispensable pour prévenir quiconque de sortir du chroot et aller se balader dans le système de fichier de votre vserver hôte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichiers de périphériques Sécurisés  ===&lt;br /&gt;
Le répertoire /dev d'un VPS ne doit pas contenir plus de fichiers qu'indiqué ci-dessous, plus le répertoire pour les pts unix.&lt;br /&gt;
* c 1 7 full&lt;br /&gt;
* c 1 3 null&lt;br /&gt;
* c 5 2 ptmx&lt;br /&gt;
* c 1 8 random&lt;br /&gt;
* c 5 0 tty&lt;br /&gt;
* c 1 9 urandom&lt;br /&gt;
* c 1 5 zero&lt;br /&gt;
* d pts&lt;br /&gt;
Bien entendu, d'autres périphériques comme console, mem, kmem, et même des périphériques en mode block et/ou caractère peuvent être ajoutés, mais une certaine expertise sera nécessaire pour s'assurer que cela n'entraine aucun trou de sécurité.&lt;br /&gt;
&lt;br /&gt;
=== Entrées Proc-FS Sécurisées  ===&lt;br /&gt;
Aucun test n'a été fait sur la fiabilité et la sécurité des entrées dans le système de fichiers proc, mais quelques incidents ont été notés lorsqu'on utilise par exemple des entrées proc avec permission d'écriture, et non protégées par une CAP linux.&lt;br /&gt;
Par exemple, &amp;lt;tt&amp;gt;/proc/sysrq-trigger&amp;lt;/tt&amp;gt; est un fichier qui ne doit en aucun cas être accessible dans un VPS sans une excellente raison.&lt;br /&gt;
&lt;br /&gt;
== Champ d'Applications ==&lt;br /&gt;
Le but premier de ce projet est de permettre la création de serveurs virtuels partageant les ressources d'une même machine physique. Un Serveur Virtuel fonctionne comme un serveur Linux normal, et peut lancer des services traditionnels comme telnet, service de mail, service web, service SQL.&lt;br /&gt;
&lt;br /&gt;
=== Séparation Administrative ===&lt;br /&gt;
Un provider intelligent peut donc vendre un serveur virtuel, qui, en utilisant moins de ressources que d'autres techniques de virtualisation, permet de lancer plus d'instances sur une même machine.&lt;br /&gt;
&lt;br /&gt;
La liste des providers qui fournissent un tel service est assez longue, et on peut donc considérer que c'est l'application principale de vserver.&lt;br /&gt;
&lt;br /&gt;
=== Séparation de Services  ===&lt;br /&gt;
Pour séparer plusieurs services identiques ou de nature différente, qui auraient autrement des interférences entre eux, est une chose facile à mettre en oeuvre avec Vserver. Plusieurs raisons peuvent vous pousser à faire cela; un service mal écrit, ou simplement deux services qui ne savent pas co-exister pour de multiples raisons.&lt;br /&gt;
&lt;br /&gt;
Même sur une machine à l'ancienne mode, placer un service très exposé ou non sécurisé car inconnu ou propriétaire dans une prison chroot peut améliorer grandement la sécurité et la maintenabilité.&lt;br /&gt;
&lt;br /&gt;
=== Améliorer la Sécurité  ===&lt;br /&gt;
Bien que l'idée de lancer plusieurs serveurs sur une seule machine soit en elle même très interessante, d'autres concepts sont encore plus interessants. Imaginez un serveur physique sur lequel tourne un seul vserver. Le but est d'isoler l'environnement principal de n'importe quel service, n'importe quel réseau. Vous démarrerez dans l'environnement principal, lancez très très peu de services, puis continuez dans le serveur virtuel.&lt;br /&gt;
&lt;br /&gt;
Le service de l'environnement principal sera:&lt;br /&gt;
* Injoignable depuis le reseau.&lt;br /&gt;
* En mesure de logger tous les messages du virtual serveur, d'une manière sécurisée. Rien dans le serveur virtuel ne permet d'effacer les logs, ou de les modifier. Même un serveur virtuel cracké ne permet pas de changer les logs.&lt;br /&gt;
* En mesure de faire tourner un système de détection d'intrusion, qui espionnera l'état du serveur virtuel sans être accessible ou même détecté. Par exemple, vous pouvez installer et faire tourner tripwire depuis l'environnement principal, et impossible de modifier son fonctionnement ou de le tromper.&lt;br /&gt;
Une autre option consiste à mettre le firewall dans un serveur virtuel, puis étirer la DMZ sur un ensemble de VPS séparés. Moyennant une configuration bien faite, ce genre d'installation peut réduire substantiellement le nombre de machines requises, sans pour autant impacter les performances.&lt;br /&gt;
&lt;br /&gt;
=== Maintenance Facilitée  ===&lt;br /&gt;
Une fonctionnalité clef d'un serveur virtuel est son indépendance vis à vis du matériel. La plupart des problèmes matériels sont inconnus au fonctionnement d'un serveur virtuel.&lt;br /&gt;
&lt;br /&gt;
Le serveur principal agit comme un système hôte, et s'occupe de tous les détails. Le serveur virtuel est simplement un client, et ignore tous les détails. De cette manière, le client peut être déplacé vers un autre serveur physique avec très peu de manipulations.&lt;br /&gt;
&lt;br /&gt;
Par exemple, pour déplacer un serveur virtuel depuis un ordinateur physique vers un autre, il suffit de procéder aux étapes suivantes:&lt;br /&gt;
* stopper le serveur virtuel&lt;br /&gt;
* le copier sur l'autre machine&lt;br /&gt;
* copier sa configuration&lt;br /&gt;
* lancer le serveur virtuel sur la nouvelle machine&lt;br /&gt;
Pas de mise à jour des utilisateurs, pas de configuration matérielle, tant que les machines sont compatibles au niveau de leurs binaires.&lt;br /&gt;
&lt;br /&gt;
=== Scenarios de Fail-Over ===&lt;br /&gt;
En repoussant les limites un peu plus loin, on peut utiliser des technologies de réplication pour conserver une copie identique à la minute près du système de fichier d'un serveur virtuel en fonctionnement. Cela peut servir à un basculement très rapide si le serveur en fonction tombe pour n'importe quelle raison.&lt;br /&gt;
&lt;br /&gt;
Toutes les methodes connues sont utilisables dans ce but, en commancant par la réplication réseau comme rsync, ou drdb, en passant par NBD (les Network Devices), les disques partagés, ou un système de fichier distribué. Toutes ces méthodes sont utilisables pour réduire le temps d'indisponibilité d'un système et améliorer l'efficacité globale.&lt;br /&gt;
&lt;br /&gt;
=== Pour test  ===&lt;br /&gt;
Vous avez besoin de construire un logiciel pour plusieurs versions d'une distribution particulière. (Mandrake 8.2, 9.0, 9.1, 9.2, 10.0), ou bien même pour plusieurs distributions différentes.&lt;br /&gt;
&lt;br /&gt;
Ce problème est résolu d'une manière très simple par Vserver. Avec pas mal d'espace disque, ces différentes distributions peuvent être installées et lancées en parallèle, simplifiant la tache de passer de l'une à l'autre.&lt;br /&gt;
&lt;br /&gt;
Biensur, vous pouvez faire cela simplement avec chroot() et rien d'autre, mais Vserver offre une simulation bien plus réaliste.&lt;br /&gt;
&lt;br /&gt;
== Performance et Stabilité ==&lt;br /&gt;
=== Impact de Linux-VServer sur l'hôte  ===&lt;br /&gt;
=== Overhead dans un Contexte  ===&lt;br /&gt;
=== Taille du patch noyau  ===&lt;br /&gt;
&lt;br /&gt;
== Matériels Non Intel i386 ==&lt;br /&gt;
Linux-VServer est concu pour être indépendant de l'architecture au maximum du coup, seule une toute petite partie, la définition de l'appel système lui-même est spécifique à une architecture. Malgré cela, quelques architectures renfermen des copies de certains codes 'architecture independant', pour une raison ou pou une autre, et nécessitent par conséquent de légères modifications.&lt;br /&gt;
&lt;br /&gt;
Les architectures suivantes sont supportées, et certaines d'entre elles ont même été testées:&lt;br /&gt;
* alpha&lt;br /&gt;
* ia32 / ia64 / xbox&lt;br /&gt;
* x86_64 (AMD64)&lt;br /&gt;
* mips / mips64&lt;br /&gt;
* hppa / hppa64&lt;br /&gt;
* ppc / ppc64&lt;br /&gt;
* sparc / sparc64&lt;br /&gt;
* s390&lt;br /&gt;
* uml&lt;br /&gt;
L'ajout d'une nouvelle architecture est relativement simple, même si de tests extensifs sont nécessaires pour valider le bon fonctionnement d toutes les fonctionnalités telle qu'attendu. (et biensur, du matériel ;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Intro Noyau Linux ==&lt;br /&gt;
Bien que les fonctionnalités décrites plus haut sont codées dans le noyau, quelques outils sont nécessaires en espace utilisateur (userspace) pour les activer et les controler.&lt;br /&gt;
&lt;br /&gt;
Ces outils en userspace communiquent généralement avec le noyau via des appels système (syscalls).&lt;br /&gt;
&lt;br /&gt;
Le chapitre qui suit décrit les liens entre espace kernel et espace utilisateur, comment les appels système, méthode simple pour communiquer entre les processus et le noyau, fonctionnent.&lt;br /&gt;
&lt;br /&gt;
=== Espace Noyau et Espace Utilisateur  ===&lt;br /&gt;
Sous Linux et les systèmes d'exploitation similaires, l'espace noyau et l'espace utilisateur sont séparés, et l'espace d'adressage est divisé en deux parties. Dans L'espace noyau réside le code noyau, alors que les programmes utilisateur vivent dans l'espace utilisateur. Bien entendu, un programme ne peut écrire dans la mémoire noyau, ni dans la mémoire d'un autre processus.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, c'est aussi le cas pour le code du noyau. Le code kernel n'a pas le droit d'écrire dans l'espace utilisateur. Qu'est-ce que cela signifie ? Lorsqu'un driver de périphérique a besoin d'écrire ses octets destinés à un programme dans l'espace utilisateur, il ne peut pas le faire directement, mais doit passer par des fonctions noyau spécifiques à la place. De même, lorsque des paramètres sont passés au noyau par référence à une fonction kernel, la fonction kernel ne peut pas lire les paramètres directement. Elle doit utiliser d'autres fonctions noyau pour lire chaque octet des paramètres.&lt;br /&gt;
&lt;br /&gt;
Bien entendu, il existe des fonctions écrites tout spécialement pour les transfer depuis et vers l'espace utilisateur.&lt;br /&gt;
  copy_to_user(void *to, const void *from, long n);&lt;br /&gt;
  copy_from_user(void *to, const void *from, long n);&lt;br /&gt;
&lt;br /&gt;
get_user() and put_user() Prendre ou placer l'octet, le mot, ou l'entier long depuis l'espace utilisateur ou vers celui-ci. C'est une macro, et elle se fie au type de ses arguments pour évaluer le nombre d'octets à transférer.&lt;br /&gt;
&lt;br /&gt;
=== Appels système Linux  ===&lt;br /&gt;
La plupart des appels libc s'appuient sur les appels système, la plus petite forme de fonction qu'un programme peut appeler.&lt;br /&gt;
&lt;br /&gt;
Ces appels système sont implémentés dans le noyau lui-même, ou dans des modules, parties de code noyau chargeables dynamiquement.&lt;br /&gt;
&lt;br /&gt;
Ils sont implémentés via un multiplexeur appelé avec un masque d'interruption précis. Sous Linux, ce masque d'interruption est int 0x80. Lorsque l'instruction 'int 0x80' est exécutée, le contrôle est donné au noyau (ou, plus précisément, à la fonction _system_call() ), et le démultipléxage proprement dit prend place.&lt;br /&gt;
&lt;br /&gt;
Comment fonctionne la fonction _system_call() ?&lt;br /&gt;
&lt;br /&gt;
Tout d'abord, tous les registres sont sauvegardés, et le contenu du registre %eax est comparé à la table des appels systèmes, qui recense tous les appels systèmes et leur adresse respective.&lt;br /&gt;
&lt;br /&gt;
On peut acceder à cette table via la variable extern void *sys_call_table[] Il existe un nombre et une adresse mémoire données dans cette table pour chacun des appels système.&lt;br /&gt;
&lt;br /&gt;
Ceux-ci sont référencés dans le fichier /usr/include/sys/syscall.h.&lt;br /&gt;
&lt;br /&gt;
Ils sont de la forme SYS_nomappelsysteme. si l'appel système n'est pas implémenté, la cellule correspondante dans la table sys_call_table est à 0, et une erreur est retournée.&lt;br /&gt;
&lt;br /&gt;
Sinon, l'appel système sort, et l'entrée correspondante dans la table donne l'adresse du code ou se trouve l'appel système.&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Paper/fr</id>
		<title>Paper/fr</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Paper/fr"/>
				<updated>2009-03-30T09:11:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Linux-VServer-Paper-xx-French (up to 05)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Abstract ==&lt;br /&gt;
Concept logiciel basé sur les ''Security Contextes'' permet la création d'une multitude de serveurs virtuels Privés (VPS) tournant simultanément sur un même serveur physique à pleine vitesse, en partageant efficacement les ressources matérielles.&lt;br /&gt;
Un VPS offre un environnement quasiment identique à celui d'un serveur Linux conventionnel. Tous les services, comme ssh, mail, Web, bases de données, peuvent être lancés dans un tel VPS, sans aucune modification (ou, dans certains cas, des modifications mineures), exactement comme avec n'importe quel autre serveur réel.&lt;br /&gt;
&lt;br /&gt;
Chaque serveur virtuel possède sa propre base utilisateurs et son mot de passe root. Il est isolé de tous les autres serveurs virtuels, sauf en ce qui concerne les ressources matérielles, qui sont partagées par tous les serveurs virtuels.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Au fur et à mesure des années, les micro ordinateurs sont devenus suffisemment puissant pour utiliser la virtualisation comme méthode pour donner l'illusion d'avoir une multitude de petites machines virtuelles, chacune d'elle tournant avec une instance différente de n'importe quel système d'exploitation.&lt;br /&gt;
&lt;br /&gt;
Il existe plusieurs types de Machines Virtuelles (VMs) dont les fonctionnalités sont similaires, mais qui diffèrent dans le degré d'abstraction et les méthodes utilisées pour la virtualisation.&lt;br /&gt;
&lt;br /&gt;
La plupart d'entre elles &amp;quot;émulent&amp;quot; une ressource matérielle réelle ou fictive, qui, à son tour, fait usage de &amp;quot;vraies&amp;quot; ressources du système Hote (la machine qui fait tourner les VMs). Cette approche, utilisée par la plupart des émulations système (comme QEMU[U1], Bochs[U2], ... permet à l'émulateur d'éxécuter n'importe quel système d'exploitation, même pour une architecture différente (CPU et matérielle). Pas besoin de modifier le système d'exploitation Invité, puisqu'il n'est pas conscient de s'éxécuter sur autre chose qu'un vrai matériel.&lt;br /&gt;
&lt;br /&gt;
Quelques émulations systèmes ont besoin d'un petit nombre de modifications ou de pilotes de périphériques spécifiques sur le système Hote ou le système Invité pour améliorer les performances, et minimiser le grignotage superflu de ressources système qui passe dans les systèmes de cache et de médiation entre le système Hote et le système Invité. Bien que cela améliore sensiblement l'efficacité de ces solutions, les ressources perdues sont toujours notables (par exemple dans UML[U3] et Xen[U4]).&lt;br /&gt;
&lt;br /&gt;
Supposez par contre que les systèmes d'exploitation à lancer ne sont pas différents ... La plupart des applications qui tournent sur un serveur n'ont pas besoin d'acceder au matériel ou à du code au niveau noyau, et pourraient donc partager une machine avec les autres, si l'on pouvait les séparer et les isoler ...&lt;br /&gt;
&lt;br /&gt;
== Le Concept ==&lt;br /&gt;
A la base, un serveur Linux est constitué de trois blocs constitutifs: Le matériel, le Noyau, et les Applications. Le Matériel dépend habituellement du fournisseur ou de l'administrateur système, et, bien qu'ayant une grande influence sur les performances globales, ne peut pas être changé facilement, et diffère sensiblement d'une configuration à l'autre.&lt;br /&gt;
&lt;br /&gt;
Un role de base du noyau consiste à créer une couche d'abstraction au dessus du matériel pour permettre aux processus (Applications) de travailler avec des ressources (Données) sans connaitre les détails du matériel qui se trouve en dessous. Idéalement, ces processus sont complètement agnostiques vis-à-vis du matériel, écrit dans un langage interprété, et ne nécessitant par conséquent aucun savoir faire spécifique au matériel.&lt;br /&gt;
&lt;br /&gt;
Puisqu'un système possède assez de ressources pour faire tourner environ dix fois plus d'applications que nécessaire sur un serveur Linux traditionnel, pourquoi ne pas placer sur celui-ci une dizaine de serveurs, qui vont partager les ressources d'une manière efficace ?&lt;br /&gt;
&lt;br /&gt;
La plupart des serveurs d'application (par exemple httpd) considère qu'il est la seule application à fournir un service particulier, et d'habitude, va donc supposer une organisation particulière au niveau du système de fichiers, et de l'environnement. Cela implique que deux services identiques tournant sur un même serveur physique, mais différent simplement au niveau de leur adresse IP, par exemple, doivent être coordonnées. Cela demande typiquement pas mal de boulot pour l'administrateur système, et cela peut conduire à un stabilité réduite du système et de la sécurité.&lt;br /&gt;
&lt;br /&gt;
Le concept de base de la solution Linux-VServer est de séparer l'environnement en user space (espace utilisateur) en trois unités distinctes (appellées parfois VPS, ou Virtual Private Server), de telle manière que chaque VPS ressemblera à un vrai serveur vis-à-vis des processus qu'il contient.&lt;br /&gt;
&lt;br /&gt;
Bien que différentes Distributions Linux utilisent des noyaux modifiées (parfois lourdement) pour assurer le support de telle ou telle fonctionnalité, ou matériel, la plupart des distributions Linux ne sont pas liées irrévocablement à un noyau linux particulier.&lt;br /&gt;
&lt;br /&gt;
Linux-VServer utilise cela pour donner à plusieurs distributions, la possibilité de se lancer au dessus d'un seul noyau, partagé, sans accès direct au matériel, et partager les ressources d'une manière très efficace.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure Existante ==&lt;br /&gt;
Les noyaux Linux récents fournissent déjà de nombreuses fonctions de sécurité qui sont utilisées par Linux-Vserver pour fonctionner, telles que le Système de Privileges Linux, les limites de ressource, les attributs de fichier et l'environnement chroot. Les sections suivantes vous donneront un court aperçu de chacune d'entre elles. &lt;br /&gt;
=== Le système de Privileges (Capabilities) Linux  ===&lt;br /&gt;
En science informatique, un privilege est un jeton utilisé par un processus pour prouver qu'il est autorisé à faire une opération sur un objet. Le Système de privileges Linux est basé sur les &amp;quot;Privileges POSIX&amp;quot;, un concept légèrement similaire, conçu pour diviser les privilèges root puissants en un ensemble de privilèges distincts.&lt;br /&gt;
&lt;br /&gt;
==== Privileges POSIX ====&lt;br /&gt;
Un processus possède trois champs de bits appelés les privileges héritables (I - &amp;quot;Inheritable&amp;quot;), permises (P), et effectives (E). Chaque privilege est implémenté dans un bit de chacun de ces champs, bit qui est soit défini soit non-défini.&lt;br /&gt;
&lt;br /&gt;
Quand un processus essaie de faire une opération privilégiée, le système d'exploitation va vérifier les bits appropriés dans l'ensemble effectif des processus (au lieu de vérifier si l'uid respectif du processus est 0 comme il le fait habituellement).&lt;br /&gt;
&lt;br /&gt;
Par exemple, quand un processus essaie de modifier l'horloge, le noyau Linux va vérifier que ce processus a le bit CAP_SYS_TIME (actuellement le bit 25) parmi ses privileges effectives.&lt;br /&gt;
&lt;br /&gt;
L'ensemble permis d'un processus indique les privileges que celui-ci peut utiliser. Le processus peut avoir des privileges définies dans l'ensemble permis qui ne sont pas dans l'ensemble effectif.&lt;br /&gt;
&lt;br /&gt;
Ceci indique que le processus a temporairement désactivé ce privilege. Un processus n'est autorisé à définir un bit dans son ensemble effectif que si ce bit est disponible dans son ensemble permis.&lt;br /&gt;
&lt;br /&gt;
La distinction entre privileges effectif et permis existe pour que les processus puissent réaliser des opérations qui nécessitent des privilèges.&lt;br /&gt;
&lt;br /&gt;
Les privileges héritables sont les privileges du processus courant qui peuvent être hérités par un programme exécuté par ce dernier. L'ensemble permis d'un processus est masqué contre l'ensemble héritable pendant exec().&lt;br /&gt;
&lt;br /&gt;
Rien de spécial ne se produit durant fork() ou clone().&lt;br /&gt;
&lt;br /&gt;
Les processus fils ou les threads obtiennent une copie exacte des privileges du processus parent.&lt;br /&gt;
&lt;br /&gt;
L'implémentation dans Linux s'arrête là, alors que les privileges POSIX[U5] requièrent l'ajout d'un ensemble de privileges aux fichiers, pour remplacer le flag SUID (au moins pour les exécutables).&lt;br /&gt;
&lt;br /&gt;
==== Vue d'ensemble des privileges ====&lt;br /&gt;
La liste des privileges POSIX utilisées avec Linux est longue, et les 32 bits disponibles sont presques tous utilisés. Bien que la liste détaillée de ces privileges puisse être trouvée dans /usr/include/linux/capability.h sur la plupart des systèmes Linux, une vue d'ensemble des privileges importantes est donnée ici.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| CAP_CHOWN || change le propriétaire et le groupe du fichier&lt;br /&gt;
|-&lt;br /&gt;
| 5|| CAP_KILL|| envoie un signal au processus avec un ID utilisateur différent, réel ou effectif&lt;br /&gt;
|-&lt;br /&gt;
| 6|| CAP_SETGID|| permet le passage de setgid(2), setgroups(2), et de gids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 7|| CAP_SETUID|| permet le passage de set*uid(2) et d'uids forgés sur les sockets&lt;br /&gt;
|-&lt;br /&gt;
| 8|| CAP_SETPCAP|| transfert/déplace tout privilege de l'ensemble permis vers/depuis n'importe quel pid&lt;br /&gt;
|-&lt;br /&gt;
| 9|| CAP_LINUX_IMMUTABLE|| permet la modification des attributs de fichier S_IMMUTABLE et S_APPEND&lt;br /&gt;
|-&lt;br /&gt;
| 11|| CAP_NET_BROADCAST|| permet la diffusion et l'écoute en multicast&lt;br /&gt;
|-&lt;br /&gt;
| 12|| CAP_NET_ADMIN|| permet la configuration de l'interface, le pare-feux IP, le masquerading, l'accounting, le débugage de sockets, les tables de routage, la liaison sur n'importe quelle adresse, l'entrée dans le mode de promiscuité, le multicasting...&lt;br /&gt;
|-&lt;br /&gt;
| 13|| CAP_NET_RAW|| permet l'utilisation des sockets RAW et PACKET&lt;br /&gt;
|-&lt;br /&gt;
| 16|| CAP_SYS_MODULE|| ajoute et retire des modules noyau&lt;br /&gt;
|-&lt;br /&gt;
| 18|| CAP_SYS_CHROOT|| permet chroot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 19|| CAP_SYS_PTRACE|| permet ptrace() sur n'importe quel processus&lt;br /&gt;
|-&lt;br /&gt;
| 21|| CAP_SYS_ADMIN|| la liste serait trop longue, ceci permet en gros de faire tout ce qui n'est pas mentionné dans les autres privileges&lt;br /&gt;
|-&lt;br /&gt;
| 22|| CAP_SYS_BOOT|| permet reboot(2)&lt;br /&gt;
|-&lt;br /&gt;
| 23|| CAP_SYS_NICE|| permet l'élévation des privilèges et la modification de la priorité des autres processus, en modifiant l'ordonnanceur&lt;br /&gt;
|-&lt;br /&gt;
| 24|| CAP_SYS_RESOURCE|| passe outre les limites de ressource, de quota, l'espace réservé sur un système de fichier...&lt;br /&gt;
|-&lt;br /&gt;
| 27|| CAP_MKNOD|| permet les aspects privilégiés de mknod(2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir également les Exemples [E01],[E02], et [E03].&lt;br /&gt;
&lt;br /&gt;
=== Limite des Ressources  ===&lt;br /&gt;
Vous pouvez limiter les ressources de chaque processus en spécifiant une limite pour chaque ressource. A la manière des privileges Linux, il existe deux types de limites, l'une Douce, l'autre Dure.&lt;br /&gt;
&lt;br /&gt;
La limite Douce est la valeur que le noyau imposera pour cette ressource à un processus. Un utilisateur non privilégié pourra régler la limite Douce n'importe où en dessous de la valeur Dure. Seul l'utilisateur root pourra re-hausser la limite Dure.&lt;br /&gt;
&lt;br /&gt;
==== Apercu des Ressources Limit-ables ====&lt;br /&gt;
La liste des ressources qui peuvent être limitées se trouve dans le fichier /usr/include/asm/resource.h sur la plupart des systèmes Linux.&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| RLIMIT_CPU || Temps CPU en secondes. un signal SIGXCPU est envoyé au processus qui a atteind la limite Douce, et un SIGKILL pour la limite Dure.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| RLIMIT_CORE || Taille maximale d'un fichier core.&lt;br /&gt;
|-&lt;br /&gt;
| 5|| RLIMIT_RSS || Nombre de pages maximum qu'un processus peut utiliser (en RAM)&lt;br /&gt;
|-&lt;br /&gt;
| 6|| RLIMIT_NPROC || Nombre maximum de processus autorisés à l'utilisateur réel du processus appelant.&lt;br /&gt;
|-&lt;br /&gt;
| 7|| RLIMIT_NOFILE || Spécifie la valeur +1 pour le nombre maximum de descripteurs de fichiers ouvert par un processus.&lt;br /&gt;
|-&lt;br /&gt;
| 8|| RLIMIT_MEMLOCK || Nombre maximum de pages mémoire virtuelle autorisées à être vérouillées en RAM à l'aide des appels mlock() ou mlockall().&lt;br /&gt;
|-&lt;br /&gt;
| 9|| RLIMIT_AS || Nombre maximum de pages de mémoire virtuelle disponible pour un processus.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Limite de l'espace d'adressage) &lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E11], et [E12].&lt;br /&gt;
&lt;br /&gt;
=== Attributs de Fichiers  ===&lt;br /&gt;
Auparavant, cette fonctionnalité n'était disponible qu'avec ext2, mais maintenant tous les systèmes de fichiers majeurs implémentent un ensemble d'Attributs de fichiers de base, qui permettent le paramétrage de certaines propriétés. Voici de nouveau un bref aperçu des possibilités des attributs, et leur signification.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| s SECRM ||  Lorsqu'un fichier avec cet attribut est détruit, les blocs qui le composent sont mis à zéro et re-écrit sur le disque.&lt;br /&gt;
|-&lt;br /&gt;
| u UNRM ||  Lorsqu'un fichier avec cet attribut est détruit, son contenu est sauvegardé.&lt;br /&gt;
|-&lt;br /&gt;
| c COMPR ||  Un fichier marqué avec cet attribut est automatiquement compressé à l'écriture et décompressé à la lecture. (pas encore implémenté)&lt;br /&gt;
|-&lt;br /&gt;
| i IMMUTABLE ||  Un fichier avec cet attribut ne pourra pas être modifié: Impossible de le renommer ou de le détruire, impossible de créer un lien vers ce fichier, ni d'écrire une donnée de plus vers ce fichier. &lt;br /&gt;
|-&lt;br /&gt;
| a APPEND ||  Un fichier avec cet attribut ne pourra être ouvert qu'en mode ajout.&lt;br /&gt;
|-&lt;br /&gt;
| d NODUMP ||  Si cet attribut de fichier est mis, le fichier n'est pas candidat à un backup via l'utilitaire &amp;quot;dump&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| S SYNC ||  Les mises à jour vers ce fichier se feront de manière synchrone.&lt;br /&gt;
|-&lt;br /&gt;
| A NOATIME ||  Empêche la mise à jour de l'enregistrement atime lors d'un accès ou d'une modification de fichier.&lt;br /&gt;
|-&lt;br /&gt;
| t NOTAIL ||  Un fichier avec l'attribut t n'aura pas de fragment bloc en fin de fichier fusionné avec un autre fichier.&lt;br /&gt;
|-&lt;br /&gt;
| D DIRSYNC ||  Les modifications apportés à ce répertoire seront écrites de manière synchrones. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir aussi les Exemples [E13] et [E14].&lt;br /&gt;
&lt;br /&gt;
=== La Commande chroot(1)  ===&lt;br /&gt;
chroot permet de lancer une commande en changeant le répertoire racine dans lequel il va s'éxécuter. Cela signifie que tout parcours du système de fichiers à partir de la racine '/' se fera à partir de la racine substituée et non pas à partir de la racine originelle.&lt;br /&gt;
&lt;br /&gt;
Bien que le chroot Linux n'est pas très sécurisé, son utilisation augmente l'isolation des processus par rapport au système de fichier, et, à condition de l'utiliser correctement, peut être utilisé pour &amp;quot;emprisonner&amp;quot; un processus, un utilisateur unique, ou un démon (service).&lt;br /&gt;
&lt;br /&gt;
Voir l'Exemple [E15]&lt;br /&gt;
&lt;br /&gt;
== Modifications Requises ==&lt;br /&gt;
Ce chapitre décrit les modifications à apporter au noyau pour implémenter un mécanisme comme Linux-VServer.&lt;br /&gt;
&lt;br /&gt;
=== Séparation de Contextes ===&lt;br /&gt;
La séparation telle que décrite dans la partie 'Concepts' nécessite quelques modifications au noyau pour permettre la notion de Contexte.&lt;br /&gt;
&lt;br /&gt;
Le but d'un tel &amp;quot;Contexte&amp;quot; est de cacher à un processus tout ce qui ne doit pas etre à sa portée, et empécher les interractions indésirables entre un processus appartenant à un contexte et un processus appartenant à un autre contexte.&lt;br /&gt;
&lt;br /&gt;
Cette séparation nécessite l'extension d'un certain nombre de structures de données pour qu'elles prennent en compte les contextes et fassent la différentiation entre deux uids identiques mais utilisés dans deux serveurs virtuels différents.&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons besoin d'un contexte par defaut qui sera utilisé par le serveur hôte au démarrage, et pour éviter les problèmes liés à des suppositions érronées de certains outils en espace utilisateur (comme pstree) par exemple, l'idée comme quoi init existe toujours et a toujours l'uid 1.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'administration, le Contexte de l'Hôte n'est pas traité différemment d'un autre contexte, en tout cas du point de vue de l'isolation des processus.&lt;br /&gt;
&lt;br /&gt;
Pour avoir un apercu global de tous les processus, un Spectateur spécial a été mis en place, qui est capable de capturer tous les processus d'un coup.&lt;br /&gt;
Voir les Examples [E21],[E22] et [E23]&lt;br /&gt;
&lt;br /&gt;
=== Séparation Réseau  ===&lt;br /&gt;
Bien que les Contextes soient suffisant pour isoler un groupe de processus, un autre type d'isolation, ou plutot une limitation, est nécessaire pour confiner les processus dans un sous ensemble d'adresses réseau disponibles.&lt;br /&gt;
&lt;br /&gt;
Plusieurs problèmes doivent être pris en compte dans ce sens: par exemple, les appels système bind sur IPADDR_ANY doivent être traités d'une manière bien particulière.&lt;br /&gt;
&lt;br /&gt;
Actuellement, Linux-Vserver n'utilise pas les interfaces virtuelles (et ne les utilisera peut-être jamais), pour minimiser le cout supplémentaire qu'elles engendrent. De ce fait, l'attachement d'une socket et la transmission des packets ont été adaptés.&lt;br /&gt;
&lt;br /&gt;
Voir Example [E24]&lt;br /&gt;
&lt;br /&gt;
=== La Barrière Chroot  ===&lt;br /&gt;
Un problème majeur avec le chroot() de Linux aujourd'hui tient au fait que cette information est volatile, et changera au prochain appel système de chroot().&lt;br /&gt;
&lt;br /&gt;
Voici une façon simple pour sortir d'un environnement chrooté Créez tout d'abord un fichier, et retenez son descripteur. Puis chrootez dans un répertoire au même niveau ou un niveau au dessous de celui-ci. Cela a pour effet de faire descendre la racine' dans le système de fichiers. Ensuite, faites un appel à fchdir() sur le descripteur de fichiers pour sortir de cette nouvelle racine. Vous sortirez en même temps de l'ancienne racine, qui a été perdue suite au dernier appel système chroot().&lt;br /&gt;
&lt;br /&gt;
Alors que des méthodes exotiques étaient utilisées dans les anciennes versions de Linux-Vserver pour fixer ce problème, les versions récentes utilisent un marquage spécial, connu sous le nom de Barrière Chroot, placé sur le parent de tous les VPS pour prévenir toute modification non autorisée et sortie du confinement.&lt;br /&gt;
&lt;br /&gt;
=== Un plafond pour les Privileges  ===&lt;br /&gt;
L'implémentation actuelle des privileges Linux ne prend pas en compte les privileges POSIX sur les systèmes de fichiers. Si cela était le cas, les executables setuid et setgid seraient sécurisés. Pour conserver donc une bonne sécurité malgré cette contrainte, nous avons défini un plafond pour tous les processus d'un même contexte, et un masque de privileges additionnel pour chaque contexte a été aussi ajouté pour limiter à ce seul masque les processus qui appartiennent à ce contexte.&lt;br /&gt;
&lt;br /&gt;
La signification des privileges individuels (bits) pour ce masque est exactement identique à celui que permet l'ensemble des privileges.=== Isolation de Ressources  ===&lt;br /&gt;
&lt;br /&gt;
=== Isolation de Ressources ===&lt;br /&gt;
La plupart des ressources sont d'une certaine manière partagées à travers les différents contextes; certaines requièrent une isolation plus importante que les autres, soit pour éviter les problèmes de sécurité, ou pour permettre une meilleure comptabilité de l'usage des ressources;&lt;br /&gt;
&lt;br /&gt;
Ces ressources sont:&lt;br /&gt;
* mémoire partagée, IPC&lt;br /&gt;
* PID et User ID&lt;br /&gt;
* Drapeau xid sur les fichiers&lt;br /&gt;
* ptys Unix&lt;br /&gt;
* sockets&lt;br /&gt;
&lt;br /&gt;
=== Drapeau XID pour les Filesystem XID ===&lt;br /&gt;
Bien qu'elle puisse être totalement desactivée, cette modification est requise pour une meilleure robustesse au niveau du système de fichiers, et pour isoler les contextes. Le drapeau XID est aussi totalement indispensable pour implémenter le support pour les Limites Disques par Contexte et les Quotas par Contexte sur une partition partagée.&lt;br /&gt;
&lt;br /&gt;
Ce concept d'ajouter un identifiant de contexte (xid) à chaque fichier pour créer une notion d'appartenance d'un fichier à un contexte parait simple ... Il n'en est rien, car l'implémentation actuelle n'est pas triviale. Elle nécessite soit une modification des représentations du système de fichier, soit des astuces au niveau applicatif.&lt;br /&gt;
&lt;br /&gt;
Une approche non intrusive pour éviter toute modification du système de fichiers sous-jacent est d'utiliser les bits de poids forts de champs existants, comme ceux des UID ou GID pour stocker le XID additionnel.&lt;br /&gt;
&lt;br /&gt;
Une fois que les informations de contexte sont disponibles au niveau de chaque inode, l'étape logique suivante est d'étendre la vérification d'accès au contexte en plus du reste.&lt;br /&gt;
&lt;br /&gt;
Actuellement, tous les acces aux inodes sont vérifiés par rapport à leur contexte ID, à l'exception des contextes &amp;quot;Hôte&amp;quot; et &amp;quot;Spectateur&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Les fichiers non étiquettés dans le contexte hôte sont simplement traités comme appartenant au contexte courant, et cela est requis pour que l'Unification soit possible. Si un tel fichier est modifié à l'intérieur d'un contexte, elle changera en silence vers son noveau contexte, en changeant son XID.&lt;br /&gt;
&lt;br /&gt;
Les méthodes suivantes de marquage sont utilisées:&lt;br /&gt;
&lt;br /&gt;
;UID32/GID32 or EXTERNAL:  Ce format utilise l'espace inutilisé dans l'inode disque pour stocker les informations de contexte. Pour l'instant, c'est uniquement défini pour ext3/ext3, mais sera dans le futur aussi défini pour xfs, reiserfs, et jfs, dès que possible.&lt;br /&gt;
&lt;br /&gt;
Avantage: Valeurs 32bit uid/gid complètes.&lt;br /&gt;
&lt;br /&gt;
;UID32/GID16:  Ce format utilise la moitié haute du GID pour stocker les informations de contexte. Cela est fait de manière transparente, sauf si le format est changé sans conversion préalable.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne avec tout système de fichiers équipé de UID / GID 32bits&lt;br /&gt;
&lt;br /&gt;
Désavantage: le GID est réduit a 16 bits.&lt;br /&gt;
&lt;br /&gt;
;UID24/GID24:  Ce format utilise le premier quart haut de l'UID et du GID pour stocker les informations de contexte, une fois encore, d'une manière transparente. Cela permet 16 millions de groupes et utilisateurs, ce qui devrait suffire pour la majorité des applications.&lt;br /&gt;
&lt;br /&gt;
Avantage: fonctionne sur tout système de fichiers avec des UID/GID 32bits&lt;br /&gt;
&lt;br /&gt;
Desavantage: les UID et GID sont réduits a 24 bits.&lt;br /&gt;
&lt;br /&gt;
Voir Examples [E31] et [E32]&lt;br /&gt;
&lt;br /&gt;
== Modifications Supplémentaires ==&lt;br /&gt;
En plus du strict minimum, voici un certain nombre de modifications, non indispensables, mais qui se sont révélées très utiles au fil du temps.&lt;br /&gt;
&lt;br /&gt;
=== Drapeaux par Contexte  ===&lt;br /&gt;
Très tôt, le besoin d'activer ou désactiver une fonctionnalité séparement pour l'un ou l'autre des Vserver est apparue. Un champ de bits a donc été ajouté (taille=word).&lt;br /&gt;
&lt;br /&gt;
Ce champ de bits comprend un bon nombre de drapeaux, un champ masque, qui indique les drapeaux disponibles, et un mécanisme de déclanchement spécial, pour activer un drapeau au démarrage, puis le désactiver en causant un évennement ou une action associée.&lt;br /&gt;
&lt;br /&gt;
Voici la liste des drapeaux prévus et pour la plupart déjà implémentés. Ils sont disponibles dans la branche de développement de Linux-VServer:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
| 0|| VXF_INFO_LOCK (historique, obsolète)&lt;br /&gt;
|-&lt;br /&gt;
| 1|| VXF_INFO_SCHED (historique, obsolète)|| schedule all processes in a context as if they where one.&lt;br /&gt;
|-&lt;br /&gt;
| 2|| VXF_INFO_NPROC (historique, obsolète)|| limite le nombre de processus autorisés dans un contexte à la valeur NPROC.&lt;br /&gt;
|-&lt;br /&gt;
| 3|| VXF_INFO_PRIVATE (historique)|| interdiction d'entrer dans ce contexte depuis l'extérieur.&lt;br /&gt;
|-&lt;br /&gt;
| 4|| VXF_INFO_INIT  (historique) || show the init process with pid '1'&lt;br /&gt;
|-&lt;br /&gt;
| 5|| VXF_INFO_HIDE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 6|| VXF_INFO_ULIMIT (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 7|| VXF_INFO_NSPACE (historique, obsolète)||&lt;br /&gt;
|-&lt;br /&gt;
| 8|| VXF_SCHED_HARD || activer l'ordonnancement &amp;quot;Hard CPU&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 9|| VXF_SCHED_PRIO || calculer les priorités de chaque processus à l'aide du &amp;quot;contexte token bucket&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| 10|| VXF_SCHED_PAUSE || mettre tous les processus de ce contexte dans la file &amp;quot;hold&amp;quot;, les empéchant d'être ordonnancés à nouveau.&lt;br /&gt;
|-&lt;br /&gt;
| 16|| VXF_VIRT_MEM || virtualize the memory information so that the VM and RSS limits are used for meminfo and friends&lt;br /&gt;
|-&lt;br /&gt;
| 17|| VXF_VIRT_UPTIME || virtualiser l'uptime, en commançant à la date de création du contexte.&lt;br /&gt;
|-&lt;br /&gt;
| 18|| VXF_VIRT_CPU || &lt;br /&gt;
|-&lt;br /&gt;
| 24|| VXF_HIDE_MOUNT ||  afficher les /proc/{pid}/mounts comme vides.&lt;br /&gt;
|-&lt;br /&gt;
| 25|| VXF_HIDE_NETIF ||  cache les interfaces réseau et addresses non autorisées dans ce contexte.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;br /&gt;
&lt;br /&gt;
=== Privileges par Contexte  ===&lt;br /&gt;
Lorsque nous sommes arrivé au nombre maximum de privileges envisageables sans trop modifier le noyau, l'étape suivante a été, naturellement, d'ajouter un système de privileges par contexte.&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des privileges par contexte implémenté dans Linux-VServer permet un réglage fin des privileges Linux. Ils ne sont pas visibles aux processus d'un contexte donné, puisque de toute facon le processus n'aurait pas le droit de les vérifier ou de les modifier.&lt;br /&gt;
&lt;br /&gt;
Généralement, il y a deux facons d'utiliser ces privileges : * Require one or a number of context capabilities to be set in addition to a given Linux capability, each one controlling a distinct part of the functionality. For example the CAP_NET_ADMIN could be split into RAW and PACKET sockets, so you could take away each of them separately by not providing the required context capability.&lt;br /&gt;
&lt;br /&gt;
Consider the context capability sufficient for a specified functionality, even if the Linux Capability says something different. For example mount() requires CAP_SYS_ADMIN which adds a dozen other things we do not want, so we define a CCAP_MOUNT to allow mounts for certain contexts.&lt;br /&gt;
&lt;br /&gt;
The difference between the Context Flags and the Context Caps is more an abstract logical separation than a functional one, because they are handled very similar.&lt;br /&gt;
Again, a list of the Context Capabilities and their purpose:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
|0|| VXC_SET_UTSNAME||  autoriser le contexte à changer le nom de serveur et le nom de domaine en utilisant l'appel système noyau approprié&lt;br /&gt;
|-&lt;br /&gt;
|1|| VXC_SET_RLIMIT||  allow the context to modify the resource limits (within the vserver limits).&lt;br /&gt;
|-&lt;br /&gt;
|8|| VXC_RAW_ICMP||  allow raw icmp packets in a secure way (this makes ping work from inside)&lt;br /&gt;
|-&lt;br /&gt;
|16|| VXC_SECURE_MOUNT|| permit secure mounts, which at the moment means that the nodev mount option is added.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Comptabilité par Contexte  ===&lt;br /&gt;
Plusieurs propriétés des contextes sont très utiles pour l'administrateur système, que ce soit pour garder un oeil sur les ressources, pour avoir une idée de ce que peut supporter le serveur, ou pour pouvoir facturer d'une manière ou d'une autre au client.&lt;br /&gt;
&lt;br /&gt;
Deux types de propriétés peuvent être comptabilisées, celles dont la valeur courante représente l'état du système (par analogie, prenez la vitesse d'un véhicule), et celles dont la valeur augmente régulièrement avec le temps (comme le kilométrage).&lt;br /&gt;
&lt;br /&gt;
La plupart des valeurs d'état sont limitables, et sont donc traitées d'une façon spécifique, comme cela est décrit dans la section qui suit.&lt;br /&gt;
&lt;br /&gt;
Good candidates for Context Accounting are:&lt;br /&gt;
* Temps CPU utilisé&lt;br /&gt;
* Nombre de fork() effectués&lt;br /&gt;
* Nombre de messages Socket par Type&lt;br /&gt;
* Nombre de paquets Transmis et Recus&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E41]&lt;br /&gt;
&lt;br /&gt;
=== Limites par Contexte  ===&lt;br /&gt;
La plupart des ressources système, que ce soit la consommation mémoire, le nombre de processus utilisés, le nombre de descripteurs de fichiers, la bande passante réseau, doivent pouvoir être limitées.&lt;br /&gt;
&lt;br /&gt;
Les limites par contexte permettent, pour chaque valeur limitable, de définir trois types de limites: minimum, soft, et hard(maximum).&lt;br /&gt;
&lt;br /&gt;
A l'heure actuelle, seule les limites hard sont supportées, et seulement une partie d'entre elles sont réellement activées. Voici une liste des limites par contexte actuelles et prévues:&lt;br /&gt;
* limites sur les processus&lt;br /&gt;
* limites sur l'ordonnanceur&lt;br /&gt;
* limites mémoire&lt;br /&gt;
* limites disques par contexte&lt;br /&gt;
* quotas user/groupe par contexte&lt;br /&gt;
&lt;br /&gt;
De plus, les limites par contexte gardent trace des valeur maxima atteintes et du nombre de fois ou la limite a été atteinte (hit), pour donner un feedback utile a l'administrateur.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E42]&lt;br /&gt;
&lt;br /&gt;
=== Virtualisation  ===&lt;br /&gt;
One major difference between the Linux-VServer approach and Virtual Machines is that you do not have the virtualization part as a side-effect, so you have to do that by hand where it makes sense.&lt;br /&gt;
&lt;br /&gt;
For example, a Virtual Machine does not need to think about uptime, because naturally the running OS was started somewhere in the past and will not have any problem to tell the time it thinks it began running.&lt;br /&gt;
&lt;br /&gt;
A context can also store the time when it was created, but that will be different from the systems uptime, so in addition, there has to be some function, which adjusts the values passed from kernel to user-space depending on the context the process belongs to.&lt;br /&gt;
&lt;br /&gt;
This is what for Linux-VServer is known as Virtualization (actually it's more faking some values passed to and from the kernel to make the processes think that they are on a different machine).&lt;br /&gt;
&lt;br /&gt;
Currently modified for the purpose of Virtualization are:&lt;br /&gt;
* System Uptime&lt;br /&gt;
* Host and Domain Name&lt;br /&gt;
* Machine Type and Kernel Version&lt;br /&gt;
* Context Memory Availability&lt;br /&gt;
* Context Disk Space&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E43]&lt;br /&gt;
&lt;br /&gt;
=== Sécurité Renforcée  ===&lt;br /&gt;
Le mécanisme de sécurité Proc-FS protège les entrées dynamiques du système de fichiers proc, de façon à ce que toutes les entrées ne soient pas vues dans tous les contextes.&lt;br /&gt;
&lt;br /&gt;
Le système est constitué de trois drapeaux pour chaque entrée du Proc-FS: Admin, Watch, et Hide.&lt;br /&gt;
&lt;br /&gt;
Le Drapeau Hide active ou désactive entierement une fonctionnalité, donc toute combinaison associée avec un drapeau Hide à 0 aura donc la signification visible.&lt;br /&gt;
&lt;br /&gt;
Les drapeaux Admin et Watch déterminent ou l'entrée hidden (cachée) reste visible; par exemple, si les drapeaux Admin et Hidden sont mis, seul le Host Contexte (0) sera en mesure de voir cette entrée spécifique.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [E44] et Voir Exemple [E45]&lt;br /&gt;
&lt;br /&gt;
=== Kernel Helper  ===&lt;br /&gt;
Dans certains cas, il peut être nécessaire de mettre en place un outil en espace utilisateur qui va agir en lieu et place du noyau, lorsque par exemple un processus demande une fonctionnalité disponible sur un serveur réel, mais non disponible dans un contexte.&lt;br /&gt;
&lt;br /&gt;
Le meilleur exemple d'un tel cas est le &amp;quot;Reboot Helper&amp;quot;, qui implémente l'appel système reboot(), invoqué depuis l'intérieur d'un contexte en lieu et place du noyau. L'appel sera éxécuté depuis le contexte hôte, qui lancera l'action adéquate, reboot ou un simple halt du contexte en question.&lt;br /&gt;
&lt;br /&gt;
Bien que ce &amp;quot;helper&amp;quot; soit concu pour être flexible et gérer un certain nombre de choses de la même facon, il n'est pas utilisé pour l'instant à autre chose, et pourrait être remplacé dans le futur par une interface par evènement.&lt;br /&gt;
&lt;br /&gt;
Voir Exemple [XX]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-03-30T06:56:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: HowtoSSHLogin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
# http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
# http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
# http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
# http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
# http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
# http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-00-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-01-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-02-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-espaniol&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-04-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-05-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-06-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-07-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-08-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-09-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-10-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-11-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-12-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-13-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-14-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-15-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
# http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
# http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenVPN&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenwallHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler+Parameters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
# http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
# http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
# http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
# http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VisualAids&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/WorkingPrograms&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_migrated_pages</id>
		<title>List of migrated pages</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_migrated_pages"/>
				<updated>2009-03-30T06:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: HowtoSSHLogin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are already migrated to the new wiki.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of pages not migrated yet]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
| ArchVserver ||[[Installation on ArchLinux]]&lt;br /&gt;
|-&lt;br /&gt;
|Caps+and+Flags || [[Capabilities and Flags]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|Changelog26-Devel || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevel26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevelExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogStableExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|chroot-barrier || [[Secure chroot Barrier]]&lt;br /&gt;
|-&lt;br /&gt;
|Dates+and+Planning || [[News]]&lt;br /&gt;
|-&lt;br /&gt;
|Documentation || [[Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|Examples || [[Do I need Linux-VServer]]&lt;br /&gt;
|-&lt;br /&gt;
|FrequentlyAskedQuestions || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooGuestHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooHostHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Hacker+Page || [[Sandbox]]&lt;br /&gt;
|-&lt;br /&gt;
|Hall+of+Fame || [[Hall of Fame]]&lt;br /&gt;
|-&lt;br /&gt;
|HistoryList || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|HowtoSSHLogin || [[SSH login]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux VServer Howto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-self-definition || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer || [[Welcome to Linux-VServer.org]]&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki+GIT || [[Wiki Team]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces || [[Namespaces]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces-French || [[Namespaces/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|ProblematicPrograms || [[Problematic Programs]]&lt;br /&gt;
|-&lt;br /&gt;
|ProjectOverview || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|RecentChanges || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|Related+Projects || [[Related Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|Release+FAQ || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Resource+Limits || [[Resource Limits]]&lt;br /&gt;
|-&lt;br /&gt;
|short+presentation || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools+and+patches || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|VirtualServer || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConcept || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConfiguration || [[VServerConfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|VServer+Hosting || [[VServer Hosting]]&lt;br /&gt;
|-&lt;br /&gt;
|Vservers+and+X || [[Vservers and X]]&lt;br /&gt;
|-&lt;br /&gt;
|WikiStat || [[Special:Allpages]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/SSH_login</id>
		<title>SSH login</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/SSH_login"/>
				<updated>2009-03-30T06:55:52Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki HowtoSSHLogin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Via [[GECOS]]==&lt;br /&gt;
===Manual===&lt;br /&gt;
Virtuozzo(tm) have one very intresting feature: you can log into namebased site by SSH with only one SSH instance, runned on host.&lt;br /&gt;
&lt;br /&gt;
So you have not need to have several ports for SSH access.&lt;br /&gt;
&lt;br /&gt;
For VServer I have found tool, created by Alec Thomas (you can find it here: http://swapoff.org/LinuxVServer.html) that allow to do that (or close to that) on linux-vserver.&lt;br /&gt;
&lt;br /&gt;
I have made small change in vslogin: it get gecos field of user, that named in environment variable LOGNAME, not via userid, so all vserver users are now have one uid - 9999 on vserver host.&lt;br /&gt;
&lt;br /&gt;
There also created passwd and shadow sync daemon in perl, that update host /etc/passwd and /etc/shadow with contents of vservers' passwd and shadow.&lt;br /&gt;
&lt;br /&gt;
But, better to use nss_vserver module, get info on it at [[HowtoHostAuth]]&lt;br /&gt;
&lt;br /&gt;
So, to get one auth point for all users - host ssh (in general - anything, that can auth, can be authorized via PAM on host), you need to:&lt;br /&gt;
# install SGI::FAM and Proc::Daemon from CPAN.&lt;br /&gt;
# copy syncshadows daemon to /usr/local/sbin&lt;br /&gt;
# copy syncshadows init.d script ot /etc/init.d/ (or /etc/rc.d/init.d)&lt;br /&gt;
# create links to it from rcX.d directiories (/etc/rcX.d or /etc/rc.d/rcX.d/)&lt;br /&gt;
# Run &amp;lt;tt&amp;gt;/etc/init.d/syncshadows start&amp;lt;/tt&amp;gt;&lt;br /&gt;
# run &amp;quot;make&amp;quot; at vslogin directory and copy vslogin binary to /sbin/&lt;br /&gt;
# &amp;lt;tt&amp;gt;chmod u+s /sbin/vslogin&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;chmod o-rwx /sbin/vslogin; chgrp vslogin /sbin/vslogin&amp;lt;/tt&amp;gt; to allow /sbin/vslogin execution only by users in group vserver. needs vslogin group, but you'll have it &amp;quot;automatically&amp;quot; if nss_vserver is configured!&lt;br /&gt;
# &amp;lt;tt&amp;gt;echo /sbin/vslogin &amp;gt;&amp;gt; /etc/shells&amp;lt;/tt&amp;gt;&lt;br /&gt;
That's all! Now you can log into your vserver by run&lt;br /&gt;
 ssh vserver-user@host&lt;br /&gt;
;Note: on host created stubs in form user@vserver and vserver-user for allowing to use domain form where available, and just dash form where not available.&lt;br /&gt;
&lt;br /&gt;
===Download===&lt;br /&gt;
Download vslogin and syncshadows daemon at http://dev.call2ru.com/vserverauth.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Via IP==&lt;br /&gt;
When you SSH to a server you get an IP number. This IP number can be used to select which of the VServers you want to connect to. Of course this only works if each of the VServers have an individual IP number.&lt;br /&gt;
&lt;br /&gt;
The process is as follows:&lt;br /&gt;
# Setup SSHD to bind to 0.0.0.0 - any IP (or rather ALL IPs)&lt;br /&gt;
# Replace LOGIN Script of users you want to support the above&lt;br /&gt;
# SSH as any user @ any host&lt;br /&gt;
# The login script picks up the IP number, checks for each IP in the list of running servers&lt;br /&gt;
# Login script then runs &amp;quot;enter&amp;quot; on the server and &amp;quot;su&amp;quot; to the valid user.&lt;br /&gt;
And it is logged in with a single SSH.&lt;br /&gt;
&lt;br /&gt;
I am just perfecting the login script (currently about a 20 line perl script, reviewing the possible C script for better SUID support) - Scott Penrose - scottp@dd.com.au&lt;br /&gt;
&lt;br /&gt;
==Security note==&lt;br /&gt;
Warning! Do not give user accounts on host to other users! Any user can change its own gecos field and log into any vserver by any user!&lt;br /&gt;
&lt;br /&gt;
==Further information==&lt;br /&gt;
&lt;br /&gt;
If you find that trying to ssh to the guest keeps logging you into the host, check the note on ssh on this page: http://linux-vserver.org/some_hints_from_john.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_migrated_pages</id>
		<title>List of migrated pages</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_migrated_pages"/>
				<updated>2009-03-30T06:48:20Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: simpler list, easier to maintain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are already migrated to the new wiki.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of pages not migrated yet]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
| ArchVserver ||[[Installation on ArchLinux]]&lt;br /&gt;
|-&lt;br /&gt;
|Caps+and+Flags || [[Capabilities and Flags]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|Changelog26-Devel || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLog || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevel26 || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogDevelExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|ChangeLogStableExperimental || [[ChangeLog]]&lt;br /&gt;
|-&lt;br /&gt;
|chroot-barrier || [[Secure chroot Barrier]]&lt;br /&gt;
|-&lt;br /&gt;
|Dates+and+Planning || [[News]]&lt;br /&gt;
|-&lt;br /&gt;
|Documentation || [[Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|Examples || [[Do I need Linux-VServer]]&lt;br /&gt;
|-&lt;br /&gt;
|FrequentlyAskedQuestions || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooGuestHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|GentooHostHowto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Hacker+Page || [[Sandbox]]&lt;br /&gt;
|-&lt;br /&gt;
|Hall+of+Fame || [[Hall of Fame]]&lt;br /&gt;
|-&lt;br /&gt;
|HistoryList || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux VServer Howto || [[Installation on Gentoo]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-00 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-01 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-02 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-03 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-04 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-05 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-06 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-07 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-08 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-09 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-10 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-11 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-12 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-13 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-14 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper-15 || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-Paper || [[Paper]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer-self-definition || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Linux-VServer || [[Welcome to Linux-VServer.org]]&lt;br /&gt;
|-&lt;br /&gt;
|MediaWiki+GIT || [[Wiki Team]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces || [[Namespaces]]&lt;br /&gt;
|-&lt;br /&gt;
|Namespaces-French || [[Namespaces/fr]]&lt;br /&gt;
|-&lt;br /&gt;
|ProblematicPrograms || [[Problematic Programs]]&lt;br /&gt;
|-&lt;br /&gt;
|ProjectOverview || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|RecentChanges || [[Special:Recentchanges]]&lt;br /&gt;
|-&lt;br /&gt;
|Related+Projects || [[Related Projects]]&lt;br /&gt;
|-&lt;br /&gt;
|Release+FAQ || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Resource+Limits || [[Resource Limits]]&lt;br /&gt;
|-&lt;br /&gt;
|short+presentation || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools+and+patches || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|Tools || [[Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|VirtualServer || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConcept || [[Overview]]&lt;br /&gt;
|-&lt;br /&gt;
|VServerConfiguration || [[VServerConfiguration]]&lt;br /&gt;
|-&lt;br /&gt;
|VServer+Hosting || [[VServer Hosting]]&lt;br /&gt;
|-&lt;br /&gt;
|Vservers+and+X || [[Vservers and X]]&lt;br /&gt;
|-&lt;br /&gt;
|WikiStat || [[Special:Allpages]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-03-30T06:41:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: much simpler list (easier to edit)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
# http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
# http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
# http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
# http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
# http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
# http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/HowtoSSHLogin&lt;br /&gt;
# http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
# http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-00-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-01-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-02-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-espaniol&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-04-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-05-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-06-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-07-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-08-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-09-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-10-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-11-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-12-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-13-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-14-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-15-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Linux-VServer-Paper-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
# http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
# http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenVPN&lt;br /&gt;
# http://oldwiki.linux-vserver.org/OpenwallHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Scheduler+Parameters&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
# http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
# http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
# http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
# http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
# http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
# http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
# http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VisualAids&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
# http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
# http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
# http://oldwiki.linux-vserver.org/VSkel-French&lt;br /&gt;
# http://oldwiki.linux-vserver.org/WorkingPrograms&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Installation_on_ArchLinux</id>
		<title>Installation on ArchLinux</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Installation_on_ArchLinux"/>
				<updated>2009-03-30T06:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki ArchVserver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WARNING: You will need knowledge of Arch Linux's pacman, abs and init system. This is not an Arch tutorial &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
[http://archlinux.org Arch Linux] is ideal for running as the host and for VServers. What makes it ideal for the host server is its low foot print and simplicity. On the downside, Arch Linux does not include a VServer kernel or utilities. However, if you are confident building your own kernel and using ABS (the Arch Build System), it is excellent.&lt;br /&gt;
&lt;br /&gt;
Arch is ideal for VServers because it is trivial to install an instance of Arch Linux into a target directory and does not require Arch on the host system.&lt;br /&gt;
&lt;br /&gt;
== Building dietlibc==&lt;br /&gt;
&lt;br /&gt;
First for more secure chroots and compatibility you need dietlibc&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pkgname=dietlibc&lt;br /&gt;
pkgver=0.29&lt;br /&gt;
pkgrel=1&lt;br /&gt;
pkgdesc=&amp;quot;A libc that is optimized for small size&amp;quot;&lt;br /&gt;
url=&amp;quot;http://www.fefe.de/dietlibc/&amp;quot;&lt;br /&gt;
depends=()&lt;br /&gt;
makedepends=()&lt;br /&gt;
conflicts=()&lt;br /&gt;
replaces=()&lt;br /&gt;
install=&lt;br /&gt;
source=(http://www.kernel.org/pub/linux/libs/dietlibc/$pkgname-$pkgver.tar.gz)&lt;br /&gt;
md5sums=('84059c71d6f559f8c4ca4df03a7a541f')&lt;br /&gt;
&lt;br /&gt;
build()&lt;br /&gt;
{&lt;br /&gt;
  mkdir -p $startdir/pkg/usr/{lib,diet,bin,man} $startdir/pkg/usr/man/man1 $startdir/pkg/opt&lt;br /&gt;
  cd $startdir/src/$pkgname-$pkgver&lt;br /&gt;
  make || return 1&lt;br /&gt;
  make prefix=$startdir/pkg/usr/lib/diet install || return 1&lt;br /&gt;
  mv $startdir/pkg/usr/lib/diet/bin/* $startdir/pkg/usr/bin&lt;br /&gt;
  rm -r $startdir/pkg/usr/lib/diet/{man,bin}&lt;br /&gt;
  cp diet.1 $startdir/pkg/usr/man/man1&lt;br /&gt;
  ln -s /usr/lib/diet/ $startdir/pkg/opt/diet&lt;br /&gt;
  find $startdir/pkg -name '*.la' -exec rm {} \;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Building beecrypt==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pkgname=beecrypt&lt;br /&gt;
pkgver=4.1.2&lt;br /&gt;
pkgrel=1&lt;br /&gt;
pkgdesc=&amp;quot;A general purpose cryptography library&amp;quot;&lt;br /&gt;
url=&amp;quot;http://beecrypt.sourceforge.net/&amp;quot;&lt;br /&gt;
depends=('gcc')&lt;br /&gt;
makedepends=()&lt;br /&gt;
source=(http://puzzle.dl.sourceforge.net/sourceforge/beecrypt/$pkgname-$pkgver.tar.gz)&lt;br /&gt;
md5sums=('820d26437843ab0a6a8a5151a73a657c')&lt;br /&gt;
&lt;br /&gt;
build() {&lt;br /&gt;
  cd $startdir/src/$pkgname-$pkgver&lt;br /&gt;
  ./configure --prefix=/usr&lt;br /&gt;
  make || return 1&lt;br /&gt;
  make DESTDIR=$startdir/pkg install&lt;br /&gt;
  find $startdir/pkg -name '*.la' -exec rm {} \;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Building util-vserver on the Host==&lt;br /&gt;
The following PKGBUILD will download, package and install util-vserver version 0.30.209. It should be only a matter of changing the version number to make it work with later versions, assuming nothing major changes in the build process. Before starting to build, make a soft link: ln -s /usr/lib/dietlibc /opt/diet - otherwise the build fails because dietlibc cannot be found.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pkgname=util-vserver&lt;br /&gt;
pkgver=0.30.209&lt;br /&gt;
pkgrel=1&lt;br /&gt;
pkgdesc=&amp;quot;The util-vserver project provides tools for kernels with the security context patch.&amp;quot;&lt;br /&gt;
url=&amp;quot;http://savannah.nongnu.org/projects/util-vserver/&amp;quot;&lt;br /&gt;
source=(http://www.13thfloor.at/~ensc/util-vserver/files/alpha/${pkgname}-${pkgver}.tar.bz2)&lt;br /&gt;
depends=(beecrypt perl dietlibc)&lt;br /&gt;
makedepends=(vconfig iproute dietlibc beecrypt iptables)&lt;br /&gt;
md5sums=('674b122824292c20d3c53245b91f6088')&lt;br /&gt;
&lt;br /&gt;
build()&lt;br /&gt;
{&lt;br /&gt;
  cd $startdir/src/$pkgname-$pkgver&lt;br /&gt;
  ./configure --prefix=/usr --sysconfdir=/etc --with-initrddir=/etc/rc.d --localstatedir=/var --enable-beecrypt --enable-dietlibc&lt;br /&gt;
  make || return 1&lt;br /&gt;
  make DESTDIR=$startdir/pkg install || return 1&lt;br /&gt;
  # Move the v_* scripts out of the init dir, as Arch does not support SYSV style init scripts&lt;br /&gt;
  install -m755 -d $startdir/pkg/usr/libexec/vserver&lt;br /&gt;
  mv $startdir/pkg/etc/rc.d/v_* $startdir/pkg/usr/libexec/vserver&lt;br /&gt;
  find $startdir/pkg -name '*.la' -exec rm {} \;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
VERY IMPORTANT! After you have installed the util-vserver package it is imperative to copy the /usr/lib/libvserver.so.0.0.0 to /lib and then create soft link, libvserver.so.0 to it, also to /lib. Otherwise you might have serious trouble with booting the system up, especially when you use drives with raid driver. (31.03.2006, current Arch with Udev). The util-vserver package must be updated to do this automatically.&lt;br /&gt;
&lt;br /&gt;
Once built and installed, add vprocunhide and vservers-default to DAEMONS in &amp;lt;tt&amp;gt;/etc/rc.conf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Creating an Arch Linux VServer==&lt;br /&gt;
Download [http://www.linux-stats.org/download/archbootstrap archbootstrap] (this script will run on any GNU/Linux host system with wget), choose appropriate values for name, interface and {{context}, pick some vserver flags (or just use the ones below) then use the following shell commands to create your vserver:&lt;br /&gt;
&lt;br /&gt;
''(choose a mirror close to you, as archbootstrap will download all base packages)''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# name=test&lt;br /&gt;
# interface=eth0:72.36.180.187/29&lt;br /&gt;
# context=5&lt;br /&gt;
# vserver ${name} build -m skeleton --context ${context} --interface ${interface} \&lt;br /&gt;
   --flags lock,virt_mem,virt_uptime,virt_cpu,virt_load,sched_hard,hide_netif --initstyle plain&lt;br /&gt;
# echo default &amp;gt; /etc/vservers/${name}/apps/init/mark&lt;br /&gt;
# archbootstrap /vservers/${name} ftp://ftp.archlinux.de/pub/archlinux&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't have a public ip to spare for your vserver guest, then you must create guest with private ip, like 192.168.0.103 for example. Then in order to allow guest to access the Internet, you will have to set up proper NAT rule for your host's iptables. Assuming that you are using addresses like in previous example, a working NAT rule is this:&lt;br /&gt;
 iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to x.x.x.x&lt;br /&gt;
&lt;br /&gt;
where the last one is your host's public ip, assuming that it can access the Internet directly. You can now test if NAT rule succeeded by using this command: &lt;br /&gt;
 iptables -t nat -L&lt;br /&gt;
&lt;br /&gt;
It should display an output like this:&lt;br /&gt;
 Chain POSTROUTING (policy ACCEPT)&lt;br /&gt;
 target     prot opt source               destination&lt;br /&gt;
 SNAT       all  --  192.168.0.0/24       anywhere            to:x.x.x.x&lt;br /&gt;
&lt;br /&gt;
Remeber to copy /etc/resolv.conf to /vservers/${name}/etc to be able to use domain names instead of just ip addresses. &lt;br /&gt;
&lt;br /&gt;
If you plan to set up servers to your guest, it would also be useful to have localhost in there. This can be achieved by creating a new folder in /etc/vservers/name/interfaces/ - name the folder 1, for example, if the previous one that exists there is 0. Then create there files named ip, dev and prefix.&lt;br /&gt;
&lt;br /&gt;
To ip write 127.0.0.1, to dev write lo and to prefix write 32. &lt;br /&gt;
&lt;br /&gt;
Start your vserver:&lt;br /&gt;
 # vserver ${name} start&lt;br /&gt;
&lt;br /&gt;
Check it has started&lt;br /&gt;
 # vserver-stat&lt;br /&gt;
&lt;br /&gt;
Then enter the guest (vserver name enter) and at first create iproute package (it is at &amp;lt;tt&amp;gt;/var/abs/network/iproute&amp;lt;/tt&amp;gt;) - you will need it to see ip addresses and other needful information. Add the package and now to see how networking is working use this command ip addr show and try to ping the world. &lt;br /&gt;
&lt;br /&gt;
That is pretty much it. You will probably want to edit &amp;lt;tt&amp;gt;/vservers/test/etc/rc.conf &amp;lt;/tt&amp;gt;to remove interface configuration and set your hostname.&lt;br /&gt;
&lt;br /&gt;
All the usual vserver commands should work as you would expect, but don't forget to modify host service config files so they don't bind to INADDR_ANY.&lt;br /&gt;
&lt;br /&gt;
;Note: the value in &amp;lt;tt&amp;gt;/etc/vservers/${name}/apps/init/mark&amp;lt;/tt&amp;gt; must be default if you wish your vservers to start at boot using the vservers-default init script.&lt;br /&gt;
&lt;br /&gt;
;Note2: if on starting up a vserver the keyboard control is lost on host, remove console from /dev of vserver&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Scheduler_Parameters</id>
		<title>Scheduler Parameters</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Scheduler_Parameters"/>
				<updated>2009-03-27T16:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Scheduler+Parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Scheduler parameters &amp;lt;tt&amp;gt;/etc/vservers/&amp;lt;server name&amp;gt;/schedule&amp;lt;/tt&amp;gt; should contain 6 lines:&lt;br /&gt;
# fill rate &lt;br /&gt;
# fill interval &lt;br /&gt;
# amount of &amp;quot;tokens&amp;quot; on start &lt;br /&gt;
# minimum number of tokens in token bucket &lt;br /&gt;
# maximum number of tokens &lt;br /&gt;
# dummy line &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;fill interval&amp;gt; jiffies &amp;lt;fill rate&amp;gt; tokens will be put into bucket. Any tokens more than &amp;lt;maximum number of tokens&amp;gt; are spilled.&lt;br /&gt;
&lt;br /&gt;
Processes will be back from &amp;quot;on hold&amp;quot; when in bucket is more than &amp;lt;minimum number of tokens&amp;gt;.&lt;br /&gt;
You should aim that the sum of (&amp;lt;fill rate&amp;gt; / &amp;lt;fill interval&amp;gt;) adds up to roughly the number of processors in your system. If the fill interval is too long, it might make performance erratic. Setting it as small as 1 or 2 is fine. It only actually recalculates the amount when it has to. Of course, with a fill interval of such a small value you're dishing out large chunks of the system :)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;amp;lt;romke&amp;gt; mugwump: so, wouldn't be better if fill interval be more like 10-20 ? and fill rate proportionally greater?&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;mugwump&amp;gt; it makes little difference. Just don't go expecting smooth scheduling behaviour when it gets near HZ (100 or 1000)&lt;br /&gt;
&lt;br /&gt;
(thx to mugwump)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 7&lt;br /&gt;
 32&lt;br /&gt;
 500&lt;br /&gt;
 200&lt;br /&gt;
 1000&lt;br /&gt;
 dummy&lt;br /&gt;
&lt;br /&gt;
Will aim to give the context 7/32 (21.9%) of one processor. If you turned on &amp;quot;hard&amp;quot; scheduling, then if the context ran out of tokens, it would be put on hold for (200 / 7) * 32 = 928 jiffies (~1 second if HZ = 1000, ~10 seconds if HZ = 100). If you didn't turn on 'hard' scheduling, it would be run a very low priority - meaning it gets much shorter timeslices.&lt;br /&gt;
&lt;br /&gt;
(Don't forget to put sched_prio or/and sched_hard flags in /etc/vservers/&amp;lt;vserver&amp;gt;/flags)&lt;br /&gt;
&lt;br /&gt;
If you have set sched_prio and/or sched_hard but there is no schedule file, the following default values are used:&lt;br /&gt;
 FillRate:              1&lt;br /&gt;
 Interval:              4&lt;br /&gt;
 TokensMin:            15&lt;br /&gt;
 TokensMax:           125&lt;br /&gt;
&lt;br /&gt;
(note, the default is to use pure system scheduling)&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/CPU_and_%27vsched%27</id>
		<title>CPU and 'vsched'</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/CPU_and_%27vsched%27"/>
				<updated>2009-03-27T16:16:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki vsched+explained&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;note: all information is taken from the linux-vserver mailing list or other pages in this wiki.&lt;br /&gt;
&lt;br /&gt;
The token-bucket scheduler principle is pretty well explained here: http://www.linux-vserver.org/index.php?page=Linux-VServer-Paper-06&lt;br /&gt;
&lt;br /&gt;
== vscheduling a vserver==&lt;br /&gt;
&lt;br /&gt;
vsched takes the following arguments:&lt;br /&gt;
   --fill-rate&lt;br /&gt;
        The number of tokens that will be placed in the bucket.&lt;br /&gt;
 &lt;br /&gt;
   --interval&lt;br /&gt;
        How often (the above specified) number of tokens will be placed.&lt;br /&gt;
        This is in jiffies. &lt;br /&gt;
&lt;br /&gt;
note: &lt;br /&gt;
The important factor is the ratio:&lt;br /&gt;
    fill-rate&lt;br /&gt;
    --------- * 100   =   % CPU allocation&lt;br /&gt;
     interval&lt;br /&gt;
&lt;br /&gt;
Note that that this is the proportion of a *single* CPU in the system. So, if you have four CPUs and you want one context to get an average of one whole CPU to itself, then you'd set fill-rate to 1 and interval to 4.&lt;br /&gt;
It is advantageous to smooth operation of the algorithm to make the interval as small as possible (or much smaller than the bucket size). You can in most cases simplify the fraction, such as changing --fill-rate=30 and interval=100 to fill-rate=3 and --interval=10.&lt;br /&gt;
&lt;br /&gt;
For simple cases, like evenly distributing cpu time between vservers, you probably just want to set the ratio to somewhere between 1/N (where N is the number of servers) and 1/P (where P is the maximum expected peak load per CPU), and not bother with hard scheduling. Process count ulimits will put an upper bound on possible abuse by a context.&lt;br /&gt;
&lt;br /&gt;
   --tokens&lt;br /&gt;
        The bucket starts out with this many tokens. Tokens_max takes&lt;br /&gt;
        precedence here, so it cannot be higher than tokens_max.&lt;br /&gt;
 &lt;br /&gt;
   --tokens_min&lt;br /&gt;
        When a bucket is empty, the context is on hold _until_ at least&lt;br /&gt;
        this many tokens are in the bucket.&lt;br /&gt;
 &lt;br /&gt;
   --tokens_max&lt;br /&gt;
        The size of the bucket. When tokens aren't being used, the bucket&lt;br /&gt;
        will be getting fuller and fuller, but up to this value. So in effect&lt;br /&gt;
        this is your CPU burst parameter.&lt;br /&gt;
 &lt;br /&gt;
   --cpu_mask&lt;br /&gt;
        This is obsolete, but I've found the current vsched is a little&lt;br /&gt;
        picky and will segfault if you omit parameters, so I always&lt;br /&gt;
        specified 0 here.&lt;br /&gt;
&lt;br /&gt;
According to the VServer paper, &amp;quot;At each timer tick, a running process consumes exactly one token from the bucket&amp;quot;. Here running means actually needing the CPU as opposed to &amp;quot;running&amp;quot; as in &amp;quot;existing&amp;quot;. Most processes are not running most of the time, e.g. an httpd waiting on a socket isn't running, even though ps would list it.&lt;br /&gt;
&lt;br /&gt;
To put it another way, processes can have various states:&lt;br /&gt;
* R (runnable), &lt;br /&gt;
* S (sleeping)&lt;br /&gt;
* T,Z,D ... (see man ps(1))&lt;br /&gt;
and processes in 'R' state can be scheduled (running) or not scheduled (waiting to be run) those which are scheduled (i.e. running on a cpu) will consume one token for every tick ...&lt;br /&gt;
&lt;br /&gt;
A token is quite a bit of CPU time - the ticks (or jiffies for now) are generated at a (usually) constant intervall called HZ which was 100 for 2.4 and typically is 1000 for 2.6 so you can assume to get a tick every 1ms (or 1000 ticks each second)&lt;br /&gt;
&lt;br /&gt;
Here are some guidelines. All this is very much unscientific and without a lot of testing and theory behind, so if someone has better guidelines, please pitch in. [(again, not sure if this is CPU speed dependent - tests were on a 2.8GHz Xeon). Typing &amp;quot;python&amp;quot; on the command line (which is a huge operation IMHO) consumes 17 tokens in my tests. Having 100000 tokens in your bucket is probably sufficient for a medium size compile job.]&lt;br /&gt;
When trying to come up with a good setting in my environment (basically hosting), I was looking for values that would not cripple the snappiness of the server, but prevent people from being stupid (e.g. cat /dev/zero | bzip2 | bzip2 | bzip2 &amp;gt; /dev/null).&lt;br /&gt;
&lt;br /&gt;
To achieve this, it is important that contexts that are being CPU hogs are penalised fairly quickly...&lt;br /&gt;
As the tokens in the bucket deplete, the &amp;quot;nice&amp;quot; value of the contexts is adjusted - they lose their vavavoom. As this happens, the processes get shorter and shorter timeslices. Other, more deserving processes will get longer timeslices and hence more CPU time.&lt;br /&gt;
&lt;br /&gt;
Additionally, bear in mind that individual processes also get a minor nice boost or penalty, depending on whether those processes have been CPU hogs recently or not. This is diminished in vserver kernels compared to standard kernels, but should still have sufficient effect to counter extreme conditions.&lt;br /&gt;
&lt;br /&gt;
The fill interval should be short enough to not be noticeable, so something like 100 jiffies. The fill rate should be relatively small, something like 30 tokens. Tokens_min seems like it should simply equal to the fill rate. The tokens_max should be generous so that people can do short cpu-intensive things when the need them, so something like 10000 tokens.&lt;br /&gt;
&lt;br /&gt;
From the experimentation I did, I'd say 10,000 tokens is quite large - 10 seconds of real CPU time. Compare this with the default value of 500. If you've given a context 30% of the CPU as described above, then that actually means about 10-15 wall clock seconds of CPU hogging before the context gets appreciably penalised. For the algorithm to work best, I think you would want to reduce this to about 1-2 seconds' worth of jiffies.&lt;br /&gt;
You are right in saying that tokens_max is the &amp;quot;burst&amp;quot; CPU rate, so setting it to a large value like 10000, while setting the interval to a large value like 100, would indicate that you are optimising your system for batch scheduling (long time slices, higher overall throughput), not interactive use (short time slices, reduced throughput). My guess is that min_tokens (not in my original implementation) is a batch optimisation as well, but perhaps small values (~10) are useful to avoid excessive context switching.&lt;br /&gt;
&lt;br /&gt;
But then, I didn't really experiment with the hard scheduling side of things, so maybe if you are hard scheduling it is more important to make sure that the buckets don't normally run out.&lt;br /&gt;
&lt;br /&gt;
Of course just because I wrote the original algorithm does not by any means lend much extra weight to my opinion on how to use it, and I invite others to respond with their experience.&lt;br /&gt;
&lt;br /&gt;
You can see current token stats by looking at &amp;lt;tt&amp;gt;/proc/virtual/&amp;lt;xid&amp;gt;/sched&amp;lt;/tt&amp;gt; on the mother server. &lt;br /&gt;
&lt;br /&gt;
==vscheduling an application inside a vserver==&lt;br /&gt;
You can also use vsched to pace any cpu intensive command, e.g.:&lt;br /&gt;
 vcontext --create --     \&lt;br /&gt;
  vsched --fill-rate 30  \&lt;br /&gt;
         --interval 100  \&lt;br /&gt;
         --tokens 100    \&lt;br /&gt;
         --tokens_min 30 \&lt;br /&gt;
         --tokens_max 200 \&lt;br /&gt;
          --cpu_mask 0   -- /bin/my_cpu_hog&lt;br /&gt;
&lt;br /&gt;
however, this is dependent upon the hard scheduler actually being enabled. If either the minimum is not reached yet, or the context is paused (a special flag) then the process will enter the new 'H' (on hold) state which doesn't allow it to do anything until the minfill has been reached again ...&lt;br /&gt;
&lt;br /&gt;
While playing with this stuff I've run into situations where a context has no tokens left, at which point you cannot even kill the processes in it. Don't panic - you can always reenter the context and call vsched with new parameters.&lt;br /&gt;
&lt;br /&gt;
So the pacing example should really be:&lt;br /&gt;
 vcontext --create --       \&lt;br /&gt;
   vsched --fill-rate 30    \&lt;br /&gt;
          --interval 100    \&lt;br /&gt;
          --tokens 100      \&lt;br /&gt;
          --tokens_min 30   \&lt;br /&gt;
          --tokens_max 200  \&lt;br /&gt;
           --cpu_mask 0 --  \&lt;br /&gt;
      vattribute --flag sched_hard -- /bin/my_cpu_hog&lt;br /&gt;
A load of 30 is not a real problem (in terms of CPU, anyway), if those processes have such a low priority that everything else on the system is pretty much real time. What you are seeing is probably just due to the context not getting enough penalisation by the time the load hits 30, or some secondary effect like disk load or memory exhaustion. Try it with a smaller bucket size.&lt;br /&gt;
&lt;br /&gt;
When a context goes on hold with runnable processes, those processes might not contribute to the visible load factor, but they could be said to still be runnable. So all you're doing is hiding the problem and underutilising your CPUs.&lt;br /&gt;
&lt;br /&gt;
Having said that, because the cpu scheduler tries to avoid process starvation (where a process gets no CPU at all), then if a context has a *lot* of processes then it will `exploit' the anti-starvation code into getting more CPU than allocated, without hard scheduling. To give you an indication, this is around the number of minimum time slices (MIN_TIMESLICE, 5ms) than fit into the starvation limit (MAX_SLEEP_AVG, 2.5s) - ie, a per-second CPU load of 500.&lt;br /&gt;
&lt;br /&gt;
Turning on the hard scheduling means letting processes starve. If you're happy to let processes starve then you can make the scheduler perform better in other ways - that is a classic trade-off in CPU scheduling.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Heh. I don't know if this is current behaviour or not, but I think the signals should really queue and the context will close as soon as the processes wake up and receive enough cycles to process them and exit. Sending -KILL signals would clean it up pretty quickly (as soon as enough tokens are allocated for the processes to run), as chances are they won't consume any tokens to receive a KILL signal. Though, it would be nice if they didn't need tokens allocated to be stopped via KILL.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* http://list.linux-vserver.org/archive/vserver/msg08134.html - and the rest of the thread&lt;br /&gt;
* [[Scheduler Parameters]]&lt;br /&gt;
* [[Paper]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Linux-VServer:Visual_Aids</id>
		<title>Linux-VServer:Visual Aids</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Linux-VServer:Visual_Aids"/>
				<updated>2009-03-27T16:09:58Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki VisualAids&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;No this is not about yet another anti-AIDS campaign, this is about creating things that are nice too look at and that can help explain to somebody what VServer does.&lt;br /&gt;
&lt;br /&gt;
I (Milf) made one slide at Linuxtag 2006 (actually I wanted to make more, but so much to do at a tradeshow: drink Jolt cola, talk to people, grab agoogle-pen each hour ...)&lt;br /&gt;
&lt;br /&gt;
So here it is: [http://www.ipsi.fraunhofer.de/~mikeschneider/Vserver/VergleichEmulation.pdf Comparison of emulation techniques (pdf)] [http://www.ipsi.fraunhofer.de/~mikeschneider/Vserver/VergleichEmulation.fig xfig-source].&lt;br /&gt;
&lt;br /&gt;
What else do we need to explain in pictures or graphs?&lt;br /&gt;
* the different jails that make up a VServer: chroot, chbind, chcontext&lt;br /&gt;
* how these jails combine to create an impenetrable capsule&lt;br /&gt;
* benchmarks that show the little overhead compared to unpatched kernel and compared to VMware et al.&lt;br /&gt;
* feature-comparison between, for example, vServer versions, different virtualisation-solutions and so on (BenBen?)&lt;br /&gt;
* Roadmap (BenBen?)&lt;br /&gt;
* handy handout which can be printed as dinA0 or something (has anyone connections to get some cheap print-stuff?) (BenBen?)&lt;br /&gt;
* that we are not a subset of anything :)&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Loop_Device</id>
		<title>Loop Device</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Loop_Device"/>
				<updated>2009-03-27T16:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki HowtoGuestLoopDevice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This mini HOWTO explains how to set up loopback devices inside a virtual server. With some work you will be able to mount loop-AES based cryptoloops too. To repeat the steps described here, you're going to fulfill some prerequisites.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
* root-access on the host-machine &lt;br /&gt;
* The kernel 2.6.16 (or newer) kernel source &lt;br /&gt;
* The 2.1.1-rc14 (or newer) vserver-patch &lt;br /&gt;
* If you intend to use loop-AES: loop-AES-v3.1c or newer&lt;br /&gt;
* some patches, see below&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please keep in mind that you will need, as of the time I write this, some patches to get this working. If you are using newer vserver-patches than 2.1.1-rc14 and/or a newer kernel than 2.6.16 chances are, you don't need some of them. &lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
Keep in mind that doing the changes described later weaken the security of your server. Don't use it on guest hosts you don't trust. If you intend to use loop-AES note that root on the host-machine will still be able to read your crypted filesystem if its mounted. &lt;br /&gt;
&lt;br /&gt;
== Setting up the host environment ==&lt;br /&gt;
I expect here, you know how to set up a running linux vserver environment. If not, consult other manuals and HOWTO's. Just patch and configure your vserver kernel as usual. Ensure that you chose to activate loopback devices (CONFIG_BLK_DEV_LOOP). If you plan to use loop-AES deactivate CONFIG_BLK_DEV_LOOP, or build it as module. Therefore you'll need some additional patches to get this feature running inside vserver guests. Depending on your configuration you have to use more or less additional patches. Just answer the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Do you use kernel 2.6.16 or older ===&lt;br /&gt;
Yes: Apply this patch: http://lkml.org/lkml/2006/3/24/370&lt;br /&gt;
&lt;br /&gt;
=== Do you use vserver 2.1.1-rc14 or older? ===&lt;br /&gt;
Yes: Apply this patches: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -NurpP linux-2.6.16-vs2.1.1-rc14.3/kernel/fork.c linux-2.6.16-vs2.1.1-rc14.4/kernel/fork.c&lt;br /&gt;
--- linux-2.6.16-vs2.1.1-rc14.3/kernel/fork.c   2006-03-20 18:09:05 +0100&lt;br /&gt;
+++ linux-2.6.16-vs2.1.1-rc14.4/kernel/fork.c   2006-03-25 02:22:55 +0100&lt;br /&gt;
@@ -1348,6 +1348,7 @@ long do_fork(unsigned long clone_flags,&lt;br /&gt;
        if ((clone_flags &amp;amp; CLONE_KTHREAD) &amp;amp;&amp;amp; !vx_check(0, VX_ADMIN)) {&lt;br /&gt;
                vxwprintk(1, &amp;quot;xid=%d tried to spawn a kernel thread.&amp;quot;,&lt;br /&gt;
                        vx_current_xid());&lt;br /&gt;
+               free_pidmap(pid);&lt;br /&gt;
                return -EPERM;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -NurpP --minimal linux-2.6.16-vs2.1.1-rc14.1/drivers/block/loop.c linux-2.6.16-vs2.1.1-rc14.2/drivers/block/loop.c&lt;br /&gt;
--- linux-2.6.16-vs2.1.1-rc14.1/drivers/block/loop.c    2006-03-20 17:32:31 +0100&lt;br /&gt;
+++ linux-2.6.16-vs2.1.1-rc14.2/drivers/block/loop.c    2006-03-24 03:37:07 +0100&lt;br /&gt;
@@ -943,7 +943,7 @@ loop_set_status(struct loop_device *lo, &lt;br /&gt;
        struct loop_func_table *xfer;&lt;br /&gt;
 &lt;br /&gt;
        if (lo-&amp;gt;lo_encrypt_key_size &amp;amp;&amp;amp; lo-&amp;gt;lo_key_owner != current-&amp;gt;uid &amp;amp;&amp;amp;&lt;br /&gt;
-           !capable(CAP_SYS_ADMIN))&lt;br /&gt;
+           !capable(CAP_SYS_ADMIN) &amp;amp;&amp;amp; !vx_ccaps(VXC_CRYPTO_LOOP))&lt;br /&gt;
                return -EPERM;&lt;br /&gt;
        if (lo-&amp;gt;lo_state != Lo_bound)&lt;br /&gt;
                return -ENXIO;&lt;br /&gt;
@@ -1023,7 +1023,8 @@ loop_get_status(struct loop_device *lo, &lt;br /&gt;
        memcpy(info-&amp;gt;lo_crypt_name, lo-&amp;gt;lo_crypt_name, LO_NAME_SIZE);&lt;br /&gt;
        info-&amp;gt;lo_encrypt_type =&lt;br /&gt;
                lo-&amp;gt;lo_encryption ? lo-&amp;gt;lo_encryption-&amp;gt;number : 0;&lt;br /&gt;
-       if (lo-&amp;gt;lo_encrypt_key_size &amp;amp;&amp;amp; capable(CAP_SYS_ADMIN)) {&lt;br /&gt;
+       if (lo-&amp;gt;lo_encrypt_key_size &amp;amp;&amp;amp;&lt;br /&gt;
+               (capable(CAP_SYS_ADMIN) || vx_ccaps(VXC_CRYPTO_LOOP))) {&lt;br /&gt;
                info-&amp;gt;lo_encrypt_key_size = lo-&amp;gt;lo_encrypt_key_size;&lt;br /&gt;
                memcpy(info-&amp;gt;lo_encrypt_key, lo-&amp;gt;lo_encrypt_key,&lt;br /&gt;
                       lo-&amp;gt;lo_encrypt_key_size);&lt;br /&gt;
diff -NurpP --minimal linux-2.6.16-vs2.1.1-rc14.1/include/linux/vserver/context.h linux-2.6.16-vs2.1.1-rc14.2/include/linux/vserver/context.h&lt;br /&gt;
--- linux-2.6.16-vs2.1.1-rc14.1/include/linux/vserver/context.h 2006-03-20 18:09:05 +0100&lt;br /&gt;
+++ linux-2.6.16-vs2.1.1-rc14.2/include/linux/vserver/context.h 2006-03-24 03:35:26 +0100&lt;br /&gt;
@@ -76,6 +76,7 @@&lt;br /&gt;
 #define VXC_BINARY_MOUNT       0x00040000&lt;br /&gt;
 &lt;br /&gt;
 #define VXC_QUOTA_CTL          0x00100000&lt;br /&gt;
+#define VXC_CRYPTO_LOOP                0x00200000&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 /* context state changes */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once this patches are commited to your kernel source, (re)compile and boot it.&lt;br /&gt;
&lt;br /&gt;
=== change capabilities files ===&lt;br /&gt;
You have to make some changes in the capabilities files too. If they don't exist already, just create them. Usually they can be found under &amp;lt;tt&amp;gt;/etc/vservers/&amp;lt;guest name&amp;gt;/bcapabilities&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/etc/vservers/&amp;lt;guest name&amp;gt;/ccapabilities. &amp;lt;/tt&amp;gt;&lt;br /&gt;
==== ccapabilities ====&lt;br /&gt;
 ^21&lt;br /&gt;
 secure_mount&lt;br /&gt;
 secure_remount&lt;br /&gt;
&lt;br /&gt;
^21 is VXC_CRYPTO_LOOP, but as of version 0.30.210 the util-vserver don't recognize this flag (yet). &lt;br /&gt;
&lt;br /&gt;
==== bcapabilities ====&lt;br /&gt;
 CAP_IPC_LOCK&lt;br /&gt;
&lt;br /&gt;
== Building loop-AES ==&lt;br /&gt;
If you plan to use loop-AES you have to apply an additional patch. Since loop-AES replaces the kernels loopback device you have to tell loop-AES about the changes in your vserver kernel. It's a quite simple patch, apply it to your loop-AES source.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -ruN loop-AES-v3.1c-orig/loop.c-2.6.patched loop-AES-v3.1c/loop.c-2.6.patched&lt;br /&gt;
--- loop-AES-v3.1c-orig/loop.c-2.6.patched      2006-01-12 19:22:48.000000000 +0100&lt;br /&gt;
+++ loop-AES-v3.1c/loop.c-2.6.patched   2006-03-25 03:09:59.000000000 +0100&lt;br /&gt;
@@ -102,6 +102,8 @@&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;asm/uaccess.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;linux/vserver/context.h&amp;gt;&lt;br /&gt;
+#include &amp;lt;linux/vs_context.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 #if !defined(LO_FLAGS_DO_BMAP)&lt;br /&gt;
 # define LO_FLAGS_DO_BMAP 0x20000&lt;br /&gt;
@@ -1267,6 +1269,7 @@&lt;br /&gt;
        struct file     *file;&lt;br /&gt;
        struct inode    *inode;&lt;br /&gt;
        struct block_device *lo_device = NULL;&lt;br /&gt;
+       struct vx_info_save vxis;&lt;br /&gt;
        int             lo_flags = 0;&lt;br /&gt;
        int             error;&lt;br /&gt;
&lt;br /&gt;
@@ -1412,7 +1415,9 @@&lt;br /&gt;
&lt;br /&gt;
        loop_set_softblksz(lo, bdev);&lt;br /&gt;
&lt;br /&gt;
+       __enter_vx_admin(&amp;amp;vxis);&lt;br /&gt;
        error = kernel_thread(loop_thread, lo, CLONE_KERNEL);&lt;br /&gt;
+       __leave_vx_admin(&amp;amp;vxis);&lt;br /&gt;
        if(error &amp;lt; 0)&lt;br /&gt;
                goto out_mapping;&lt;br /&gt;
        wait_for_completion(&amp;amp;LDE_lo_done);&lt;br /&gt;
@@ -1527,7 +1532,7 @@&lt;br /&gt;
        struct loop_func_table *xfer = NULL;&lt;br /&gt;
&lt;br /&gt;
        if (lo-&amp;gt;lo_encrypt_key_size &amp;amp;&amp;amp; lo-&amp;gt;lo_key_owner != current-&amp;gt;uid &amp;amp;&amp;amp;&lt;br /&gt;
-           !capable(CAP_SYS_ADMIN))&lt;br /&gt;
+       !capable(CAP_SYS_ADMIN) &amp;amp;&amp;amp; !vx_ccaps(VXC_CRYPTO_LOOP))&lt;br /&gt;
                return -EPERM;&lt;br /&gt;
        if ((unsigned int) info-&amp;gt;lo_encrypt_key_size &amp;gt; LO_KEY_SIZE)&lt;br /&gt;
                return -EINVAL;&lt;br /&gt;
@@ -1607,7 +1612,8 @@&lt;br /&gt;
        memcpy(info-&amp;gt;lo_file_name, lo-&amp;gt;lo_file_name, LO_NAME_SIZE);&lt;br /&gt;
        memcpy(info-&amp;gt;lo_crypt_name, lo-&amp;gt;lo_crypt_name, LO_NAME_SIZE);&lt;br /&gt;
        info-&amp;gt;lo_encrypt_type = lo-&amp;gt;lo_encryption ? lo-&amp;gt;lo_encryption-&amp;gt;number : 0;&lt;br /&gt;
-       if (lo-&amp;gt;lo_encrypt_key_size &amp;amp;&amp;amp; capable(CAP_SYS_ADMIN)) {&lt;br /&gt;
+       if (lo-&amp;gt;lo_encrypt_key_size &amp;amp;&amp;amp;&lt;br /&gt;
+               (capable(CAP_SYS_ADMIN) || vx_ccaps(VXC_CRYPTO_LOOP))) {&lt;br /&gt;
                info-&amp;gt;lo_encrypt_key_size = lo-&amp;gt;lo_encrypt_key_size;&lt;br /&gt;
                memcpy(info-&amp;gt;lo_encrypt_key, lo-&amp;gt;lo_encrypt_key,&lt;br /&gt;
                       lo-&amp;gt;lo_encrypt_key_size);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once done, just (re)compile loop-AES with &amp;lt;tt&amp;gt;make clean &amp;amp;&amp;amp; make&amp;lt;/tt&amp;gt;. You should now be able to load the loop-AES module. Simply type modprobe loop. If you want to do make tests ensure, you have installed the patched aes utils on your host system.&lt;br /&gt;
&lt;br /&gt;
==Setting up the guest environment==&lt;br /&gt;
You have to create some devices on your guest host, namely /dev/loop* and, if you set-up loop-AES even /dev/zero} and {{/dev/null. If /dev/loop0 to /dev/loop7 does not already exist on your host, just create them with&lt;br /&gt;
  mknod -m 600 /dev/loop0 b 7 0&lt;br /&gt;
  mknod -m 600 /dev/loop0 b 7 0&lt;br /&gt;
  mknod -m 600 /dev/loop1 b 7 1&lt;br /&gt;
  mknod -m 600 /dev/loop2 b 7 2&lt;br /&gt;
  mknod -m 600 /dev/loop3 b 7 3&lt;br /&gt;
  mknod -m 600 /dev/loop4 b 7 4&lt;br /&gt;
  mknod -m 600 /dev/loop5 b 7 5&lt;br /&gt;
  mknod -m 600 /dev/loop5 b 7 6&lt;br /&gt;
  mknod -m 600 /dev/loop6 b 7 6&lt;br /&gt;
  mknod -m 600 /dev/loop7 b 7 7&lt;br /&gt;
&lt;br /&gt;
then copy all the necessary devices to your guest system:&lt;br /&gt;
  cp -a /dev/null /dev/zero /dev/loop* /path/to/your/vhost/images/dev&lt;br /&gt;
&lt;br /&gt;
You're now done in the host system. Change to your guest image, e.g. with vserver imagename enter. &lt;br /&gt;
&lt;br /&gt;
Using loop-AES you'll now need to install the loop-aes-utils on your guest system. Check your distributions packages for prebuilt images. On Debian use&lt;br /&gt;
 apt-get install loop-aes-utils&lt;br /&gt;
&lt;br /&gt;
== Setting up a simple loopback ==&lt;br /&gt;
Follow the usual steps. Note, that you have to be logged in as root user (the example will create a 5M loopback):&lt;br /&gt;
 dd if=/dev/zero of=/container bs=1024 count=5120&lt;br /&gt;
 mkfs.ext2 /container&lt;br /&gt;
 mount -t ext2 -o ro,loop=/dev/loop0 container /mnt/&lt;br /&gt;
&lt;br /&gt;
== Setting up a loop-AES loopback ==&lt;br /&gt;
Even loop-AES is not different from a generic set up. Ensure, you are logged in as root&lt;br /&gt;
 dd if=/dev/zero of=/container bs=1024 count=5120&lt;br /&gt;
 losetup -e AES128 /dev/loop0 /container&lt;br /&gt;
 mkfs -t ext2 /dev/loop0&lt;br /&gt;
 losetup -d /dev/loop0&lt;br /&gt;
 mount -t ext2 -o loop=/dev/loop0,encryption=AES128 /container  /mnt/&lt;br /&gt;
&lt;br /&gt;
== Using loopback devices on multiple guests ==&lt;br /&gt;
Keep in mind, that you can't use the same loopback device twice or more. Therefore your guests will be unable to mount any content to /dev/loopX if this device is already mounted in any other context, including the host filesystem. If you have multiple guests it might be a good idea assigning them just one device, not all, so guests can block only one. Without any furhter work you can use up to 8 devices, the driver supports up to 255 though. &lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Networking_vserver_guests</id>
		<title>Networking vserver guests</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Networking_vserver_guests"/>
				<updated>2009-03-27T15:59:04Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Setting up network access to and from your vserver guests.&lt;br /&gt;
__TOC__&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Lets imagine, you have only one external IP -- &amp;lt;code&amp;gt;$EXTIP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You want to have several vservers running without worrying about port overlapping.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Two vservers run a default webserver, running on port 80. If each &amp;quot;guest&amp;quot; vserver shares an IP with the host, then the two webservers will conflict.&lt;br /&gt;
&lt;br /&gt;
One solution is:&lt;br /&gt;
&lt;br /&gt;
* All vservers are contained in a &amp;quot;virtual lan&amp;quot;, say 192.168.1.x&lt;br /&gt;
* Each vserver has its own IP&lt;br /&gt;
* Control port forwarding on &amp;quot;parent&amp;quot; host. That is, run a router.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
===Host===&lt;br /&gt;
Set up &amp;lt;code&amp;gt;dummy0&amp;lt;/code&amp;gt; interface on the parent host&lt;br /&gt;
 # /etc/network/interfaces on a Debian box, &lt;br /&gt;
 # configure on other distros with your preferred way&lt;br /&gt;
 auto dummy0&lt;br /&gt;
 iface dummy0 inet static&lt;br /&gt;
     address 192.168.1.250&lt;br /&gt;
     netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
===Guests===&lt;br /&gt;
Set up each guest vserver:&lt;br /&gt;
 cd /etc/vservers/$VSERVER/interfaces/0&lt;br /&gt;
 echo dummy0 &amp;gt; dev&lt;br /&gt;
 echo 192.168.1.1 &amp;gt; ip&lt;br /&gt;
 echo 1 &amp;gt; name&lt;br /&gt;
 echo 24 &amp;gt; prefix&lt;br /&gt;
Consider using a value of &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; equal to the last digit of the IP for easy separation.&lt;br /&gt;
&lt;br /&gt;
===Host as router===&lt;br /&gt;
Configure the host to act as a router.&lt;br /&gt;
&lt;br /&gt;
For internal packets going outside, pretend each packet came from our external IP (put it in one line without backslash):&lt;br /&gt;
 # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 \ &lt;br /&gt;
   -d ! 192.168.1.0/24 -j SNAT --to-source $EXTIP&lt;br /&gt;
For each service that runs on a vserver, map it to an external port. Vserver local address &amp;lt;code&amp;gt;$VHOST&amp;lt;/code&amp;gt; and port &amp;lt;code&amp;gt;$INTPORT&amp;lt;/code&amp;gt; you select one external port &amp;lt;code&amp;gt;$EXTPORT&amp;lt;/code&amp;gt; and run the following (put it in one line without backslash):&lt;br /&gt;
 # iptables -t nat -A PREROUTING -s ! 192.168.1.0/24 \&lt;br /&gt;
   -m tcp -p tcp --dport $EXTPORT &lt;br /&gt;
   -j DNAT --to-destination $VHOST:$INTPORT&lt;br /&gt;
That's all!&lt;br /&gt;
&lt;br /&gt;
==Verifying==&lt;br /&gt;
Try &amp;lt;code&amp;gt;ping pool.ntp.org&amp;lt;/code&amp;gt; from your vserver -- it should ping fine.&lt;br /&gt;
&lt;br /&gt;
Try to connect to your &amp;lt;code&amp;gt;$EXTIP:$EXTPORT&amp;lt;/code&amp;gt; (from another external host) -- you will successfully connect to service running on a guest vserver.&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Frequently_Asked_Questions#If_my_host_has_only_one_a_single_public_IP.2C_can_I_use_RFC1918_IP_.28e.g._192.168.foo.bar.29_for_the_guest_vservers.3F |FAQ on private networking]]&lt;br /&gt;
* [[Frequently_Asked_Questions#When_I_try_to_ssh_to_the_guest.2C_I_log_into_the_host.2C_even_if_I_installed_sshd_on_the_guest._What.27s_wrong_here.3F |Permit guest sshd to bind to its IP address's port 22]]&lt;br /&gt;
* [[Networking_vserver_guests_RHEL|Networking_vserver_guests_RHEL]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:Network]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Howto_HostAuth</id>
		<title>Howto HostAuth</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Howto_HostAuth"/>
				<updated>2009-03-27T15:58:42Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is this? ==&lt;br /&gt;
&lt;br /&gt;
nss_vserver is a nss authentication module for linux-vserver powered systems which allows processes running on the host (sshd, getty) to authenticate users that exist on guests.&lt;br /&gt;
&lt;br /&gt;
The module should almost transparently drop in to a modern Linux system: PAM would call its pam_unix module, which would in turn look through the nss modules to complete the process.&lt;br /&gt;
&lt;br /&gt;
If you want to complete the guest login process, you should also get a modified version of vslogin linked to below. vslogin will pick up after authentication and deliver the user to a shell on his guest.&lt;br /&gt;
&lt;br /&gt;
Note that with nss_vserver you don't need the syncshadows included in the vserverauth tarball.&lt;br /&gt;
&lt;br /&gt;
== Why would I use it? ==&lt;br /&gt;
&lt;br /&gt;
Using nss_vserver and vslogin you could run a single instance of sshd on the host. This host-based server would verify the credentials of a user on a guest and then vslogin would take care of presenting the user a guest-based shell.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
1. Get the appropriate version. On x86 versions you need to use the pthread version, on amd64 (and possible x86_64) you need the cthreads version (listed as nss_vserver_64). Also, on amd64 it's in /lib/, not in /lib/tls/.&lt;br /&gt;
&lt;br /&gt;
2. On linux, just run&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
3. After, try to run&lt;br /&gt;
 make test&lt;br /&gt;
To see if it works.&lt;br /&gt;
&lt;br /&gt;
== How to remove it from system? ==&lt;br /&gt;
&lt;br /&gt;
Just run&lt;br /&gt;
&lt;br /&gt;
 make uninstall&lt;br /&gt;
&lt;br /&gt;
== Use with vslogin ==&lt;br /&gt;
&lt;br /&gt;
After you have installed module, (and have vslogin copied to /sbin/ and suid-root) you are ready: try to login into a guest, say one named &amp;quot;test&amp;quot; with user &amp;quot;user&amp;quot;, by loggin in into the host with username &amp;quot;test-user&amp;quot; or &amp;quot;user@test.&amp;quot; You should find yourself logged into the guest.&lt;br /&gt;
&lt;br /&gt;
Note: vslogin requires vservers root too be at /vservers, so make it as symlink to your location. For example, for debian systems need to do&lt;br /&gt;
 ln -s var/lib/vservers /vservers&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
WARNING! If you have installed vslogin, NEVER give shell access to your host to users -- any user on host, who able to execute programs and modify environment will be able to log into guests as anybody he wants!&lt;br /&gt;
&lt;br /&gt;
=== Usernames and guest names with dashes ===&lt;br /&gt;
&lt;br /&gt;
Avoid using usernames or guest names with dashes.&lt;br /&gt;
&lt;br /&gt;
The current version only tries one configuration while searching for the user in guest databases, which can cause problems:&lt;br /&gt;
&lt;br /&gt;
* User &amp;quot;user&amp;quot; on guest &amp;quot;ser-ver&amp;quot; when written as &amp;quot;user@ser-ver&amp;quot; will work fine, while &amp;quot;ser-ver-user&amp;quot; will be threated as user &amp;quot;ver-user&amp;quot; on vserver &amp;quot;ser&amp;quot;.&lt;br /&gt;
* User &amp;quot;us-er&amp;quot; on guest &amp;quot;server&amp;quot; when written as &amp;quot;guest-us-er&amp;quot; will work fine, while &amp;quot;us-er@guest&amp;quot; will be threated as user &amp;quot;er@guest&amp;quot; on vserver &amp;quot;us&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you must have dashes, use the syncshadows method instead.&lt;br /&gt;
&lt;br /&gt;
== Download links ==&lt;br /&gt;
&lt;br /&gt;
nss_vserver: http://dev.call2ru.com/vs/nss_vserver.tar.bz2&lt;br /&gt;
&lt;br /&gt;
nss_vserver_64 (for use on 64bit systems): http://dev.call2ru.com/vs/nss_vserver_64.tar.bz2&lt;br /&gt;
&lt;br /&gt;
modified vslogin: http://dev.call2ru.com/vs/vserverauth.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Authors and copyright ==&lt;br /&gt;
&lt;br /&gt;
nss_vserver was written by Anton Fedorov &amp;lt;datacompboy@call2ru.com&amp;gt; 19 march 2006 and is public domain; feel free to use it as you want.&lt;br /&gt;
&lt;br /&gt;
vslogin was written by Alec Thomas (http://swapoff.org/LinuxVServer)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
 vslogin:chroot: No such file or directory&lt;br /&gt;
indicates that vslogin can't access the vserver set in the GECOS field (i.e. you possibly have a typo in the GECOS field).&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-03-27T13:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
! advanced+DRBD+mount+issues&lt;br /&gt;
| http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
|-&lt;br /&gt;
! alpha+util-vserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
|-&lt;br /&gt;
! ArchVserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ArchVserver&lt;br /&gt;
|-&lt;br /&gt;
! BeginnerFAQ&lt;br /&gt;
| http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
|-&lt;br /&gt;
! BeginnerHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
|-&lt;br /&gt;
! breve-presentacion&lt;br /&gt;
| http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
|-&lt;br /&gt;
! Cacti+configuration&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
|-&lt;br /&gt;
! CentOS_HowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
|-&lt;br /&gt;
! CentOS_min_install&lt;br /&gt;
| http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
|-&lt;br /&gt;
! chroot-barrier-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
|-&lt;br /&gt;
! CommonProblems&lt;br /&gt;
| http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
|-&lt;br /&gt;
! ConfigConverters&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
|-&lt;br /&gt;
! DebianVserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
|-&lt;br /&gt;
! DebianVserverVirtualHosting&lt;br /&gt;
| http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
|-&lt;br /&gt;
! DemoBrainStorming&lt;br /&gt;
| http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
|-&lt;br /&gt;
! Disk+Limits&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
|-&lt;br /&gt;
! Distribution+specific+stuff&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
|-&lt;br /&gt;
! distro_hints&lt;br /&gt;
| http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
|-&lt;br /&gt;
! FC3_min_install&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
|-&lt;br /&gt;
! FC4+patched+rpm%27s&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
|-&lt;br /&gt;
! Fedora2Vserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
|-&lt;br /&gt;
! FedoraCore3_HowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
|-&lt;br /&gt;
! FedoraHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
|-&lt;br /&gt;
! FedoraHowToFrench&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
|-&lt;br /&gt;
! Gathered+Ideas&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
|-&lt;br /&gt;
! GettingStarted&lt;br /&gt;
| http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
|-&lt;br /&gt;
! grsecurityHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
|-&lt;br /&gt;
! HowTo+Read+ProcFS&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
|-&lt;br /&gt;
! HowTo+Read+ProcFS-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
|-&lt;br /&gt;
! HowtoCloneVserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
|-&lt;br /&gt;
! HowtoGuestLoopDevice&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoGuestLoopDevice&lt;br /&gt;
|-&lt;br /&gt;
! HowtoHostAuth&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoHostAuth&lt;br /&gt;
|-&lt;br /&gt;
! HowtoPrivateNetworking&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoPrivateNetworking&lt;br /&gt;
|-&lt;br /&gt;
! HowToRegisterNewDistributions&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
|-&lt;br /&gt;
! HowtoSSHLogin&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoSSHLogin&lt;br /&gt;
|-&lt;br /&gt;
! initscript-default-debian&lt;br /&gt;
| http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
|-&lt;br /&gt;
! InitStyles&lt;br /&gt;
| http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
|-&lt;br /&gt;
! IpCopInAvserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
|-&lt;br /&gt;
! IPv6&lt;br /&gt;
| http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
|-&lt;br /&gt;
! IrcQuestions&lt;br /&gt;
| http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
|-&lt;br /&gt;
! Kernel-Knowledge&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
|-&lt;br /&gt;
! KernelHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
|-&lt;br /&gt;
! KernelHowto-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
|-&lt;br /&gt;
! Legacy-To-Newstyle-Config&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
|-&lt;br /&gt;
! Linux-Vserver+FAQ&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
|-&lt;br /&gt;
! Linux-Vserver+FAQ-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-00-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-00-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-01-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-01-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-02-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-02-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-03-espaniol&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-espaniol&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-03-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-04-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-04-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-05-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-05-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-06-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-06-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-07-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-07-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-08-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-08-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-09-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-09-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-10-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-10-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-11-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-11-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-12-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-12-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-13-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-13-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-14-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-14-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-15-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-15-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-French&lt;br /&gt;
|-&lt;br /&gt;
! linux-vserver_administrators_gide&lt;br /&gt;
| http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
|-&lt;br /&gt;
! linux-vserver_administrators_guide&lt;br /&gt;
| http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
|-&lt;br /&gt;
! Memory+Allocation&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
|-&lt;br /&gt;
! Memory+Management&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
|-&lt;br /&gt;
! MoreUbuntu&lt;br /&gt;
| http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
|-&lt;br /&gt;
! New-Howto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
|-&lt;br /&gt;
! NFS+and+portmap&lt;br /&gt;
| http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
|-&lt;br /&gt;
! OpenVPN&lt;br /&gt;
| http://oldwiki.linux-vserver.org/OpenVPN&lt;br /&gt;
|-&lt;br /&gt;
! OpenwallHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/OpenwallHowto&lt;br /&gt;
|-&lt;br /&gt;
! PartsList&lt;br /&gt;
| http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
|-&lt;br /&gt;
! Per+Context+Quota&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
|-&lt;br /&gt;
! ProblematicPrograms-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
|-&lt;br /&gt;
! Quota+and+Disk+Limits&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
|-&lt;br /&gt;
! Recipes&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
|-&lt;br /&gt;
! Release+FAQ-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
|-&lt;br /&gt;
! Remote+Server+Repartitioning&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
|-&lt;br /&gt;
! Scheduler&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Scheduler&lt;br /&gt;
|-&lt;br /&gt;
! Scheduler+Parameters&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Scheduler+Parameters&lt;br /&gt;
|-&lt;br /&gt;
! Security&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
|-&lt;br /&gt;
! short+presentation-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
|-&lt;br /&gt;
! SlackwareVserverHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
|-&lt;br /&gt;
! Snapshots&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
|-&lt;br /&gt;
! some_hints_from_john&lt;br /&gt;
| http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
|-&lt;br /&gt;
! sparc64&lt;br /&gt;
| http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
|-&lt;br /&gt;
! Standard+non-shared+quota&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
|-&lt;br /&gt;
! Step-by-Step+Guide&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
|-&lt;br /&gt;
! Step-by-Step+Guide+2.6&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
|-&lt;br /&gt;
! SuseVserverHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
|-&lt;br /&gt;
! Syscall+Switch+Info&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
|-&lt;br /&gt;
! TestScripts&lt;br /&gt;
| http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
|-&lt;br /&gt;
! TestWorkingPrograms&lt;br /&gt;
| http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
|-&lt;br /&gt;
! ttyHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
|-&lt;br /&gt;
! UbuntuVserverHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
|-&lt;br /&gt;
! Util-VServer+for+RH9&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
|-&lt;br /&gt;
! util-vserver+on+sarge&lt;br /&gt;
| http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
|-&lt;br /&gt;
! Virtual+Context+Separation&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
|-&lt;br /&gt;
! Virtual+Init+Task&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
|-&lt;br /&gt;
! VirtualiseNTP&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
|-&lt;br /&gt;
! VirtualizeHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
|-&lt;br /&gt;
! VisualAids&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VisualAids&lt;br /&gt;
|-&lt;br /&gt;
! vsched+explained&lt;br /&gt;
| http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
|-&lt;br /&gt;
! Vserver+Completion&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
|-&lt;br /&gt;
! Vserver+DRBD&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
|-&lt;br /&gt;
! VServer+installation+Fedora+Core+4&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
|-&lt;br /&gt;
! VServer+installation+Fedora+Core+5&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
|-&lt;br /&gt;
! vserver-autostart&lt;br /&gt;
| http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
|-&lt;br /&gt;
! VServerBook&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
|-&lt;br /&gt;
! VserverDocumentationProject&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
|-&lt;br /&gt;
! VServerKernelInstall&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
|-&lt;br /&gt;
! VServerManual&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
|-&lt;br /&gt;
! VServerUtilitiesInstall&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
|-&lt;br /&gt;
! VSkel&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
|-&lt;br /&gt;
! VSkel-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VSkel-French&lt;br /&gt;
|-&lt;br /&gt;
! WorkingPrograms&lt;br /&gt;
| http://oldwiki.linux-vserver.org/WorkingPrograms&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Network_Bandwidth_Management</id>
		<title>Network Bandwidth Management</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Network_Bandwidth_Management"/>
				<updated>2009-03-27T13:47:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Network Bandwidth Management for Guests is most easily achieved via iptables and tc -- see the [http://www.lartc.org/howto Linux Advanced Routing &amp;amp; Traffic Control HOWTO] for details ...&lt;br /&gt;
&lt;br /&gt;
Future network implementations (ngnet) will aid with the context tagging of network packets but will not duplicate features already present in the mainline kernels (like traffic shaping and such)&lt;br /&gt;
&lt;br /&gt;
==Accounting==&lt;br /&gt;
The amount of sent/received data at the socket level is already accounted, the actual network traffic has to be accounted by utilizing iptable accounting rules (this will change with ngnet)&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Documentation</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Documentation"/>
				<updated>2009-03-27T13:47:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: /* Lists &amp;amp;amp; Theory */ Network Bandwidth Management&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin: 2em auto 2em auto; padding: 10px; background-color: #F9ECCD; border: 1px solid #004433; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Icon-Caution.png|left]]&lt;br /&gt;
We are currently migrating to MediaWiki from our old system, but not all content has been migrated yet. Take a look at the [[Wiki Team]] page for instructions how to help or look at the [http://oldwiki.linux-vserver.org old wiki] to find the information not migrated yet.&lt;br /&gt;
&lt;br /&gt;
'''To ease migration we created a [[List of old Documentation pages]].'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
* [[Overview|Virtualization Overview]]&lt;br /&gt;
* [[Usage Scenarios]]&lt;br /&gt;
* [[Feature Matrix]]&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation Considerations]]&lt;br /&gt;
* [[Installation on Linux 2.6]]: from source, both the kernel and util-vserver&lt;br /&gt;
* [[Installation on ArchLinux]]&lt;br /&gt;
* [[Installation on CentOS]]&lt;br /&gt;
* [[Installation on Debian]]&lt;br /&gt;
* [[Installation on Fedora]]&lt;br /&gt;
* [[Installation on Gentoo]]&lt;br /&gt;
* [[Installation on Mandrake]]&lt;br /&gt;
* [http://pld-linux.org/Vserver Installation on PLD-Linux]&lt;br /&gt;
* [[Installation on Redhat]]&lt;br /&gt;
* [[Installation on Slackware]]&lt;br /&gt;
* [[Installation on SuSE/OpenSUSE]]&lt;br /&gt;
* [[Installation on Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
* [[Util-vserver:Documentation|util-vserver Documentation]]&lt;br /&gt;
* [[vcd:Documentation|VServer Control Daemon Documentation]]&lt;br /&gt;
* [[Share a directory among multiple guests]]&lt;br /&gt;
&lt;br /&gt;
== Guides and Howtos ==&lt;br /&gt;
&lt;br /&gt;
* [[Building Guest Systems]]&lt;br /&gt;
* [[util-vserver:Howto virtualize an exisiting Linux server|Howto virtualize an existing Linux server]]&lt;br /&gt;
* [[VCMD HowTo]]&lt;br /&gt;
* [[Howto make bsd-style init sysv-compatible|Howto make Bsd-style init sysv-compatible (archlinux guest system)]]&lt;br /&gt;
* [[Installing 32-bit Fedora on 64-bit Debian]]&lt;br /&gt;
* [[Installing Ubuntu on Debian]]&lt;br /&gt;
* [[Installing an openSUSE vserver guest]]&lt;br /&gt;
* [[Networking vserver guests]]&lt;br /&gt;
* [[Howto HostAuth]]&lt;br /&gt;
* [[Fuse_GlusterFS| Fuse and GlusterFS]]&lt;br /&gt;
* [[yum-patch|How to patch vyum]]&lt;br /&gt;
* [[yum-upgrade-3.2.4|Upgrading existing installations to yum-3.2.4]]&lt;br /&gt;
* [[Migrating from OpenVZ to Linux-Vserver]]&lt;br /&gt;
* [[Getting_high_with_lenny]]&lt;br /&gt;
* [[Installing_Ubuntu_Hoary_as_guest| Installing Ubuntu Hoary as guest]]&lt;br /&gt;
* [[Applying CPU Limits]]&lt;br /&gt;
&lt;br /&gt;
== Lists &amp;amp;amp; Theory ==&lt;br /&gt;
&lt;br /&gt;
* Basic configuration&lt;br /&gt;
** [[Capabilities and Flags]]&lt;br /&gt;
** [[CPU Scheduler]]&lt;br /&gt;
** [[Disk Limits and Quota]]&lt;br /&gt;
** [[Resource Limits]]&lt;br /&gt;
*** [[Memory Limits]]&lt;br /&gt;
*** [[Network Bandwidth Management]]&lt;br /&gt;
** [[Virtual System Information]]&lt;br /&gt;
** [[Unification]]&lt;br /&gt;
&lt;br /&gt;
* Security Considerations&lt;br /&gt;
** [[Secure Capabilities]]&lt;br /&gt;
** [[Secure chroot Barrier]]&lt;br /&gt;
** [[Secure Device Nodes]]&lt;br /&gt;
** [[Secure ProcFS Entries]]&lt;br /&gt;
&lt;br /&gt;
* Performance and Stability&lt;br /&gt;
** [[Virtualization Overhead]]&lt;br /&gt;
&lt;br /&gt;
* Implementation Details&lt;br /&gt;
** [[Context Accounting]]&lt;br /&gt;
** [[Filesystem Attributes]]&lt;br /&gt;
** [[Filesystem Tagging]]&lt;br /&gt;
** [[Filesystem Namespaces]]&lt;br /&gt;
** [[Kernel Userspace Helper]]&lt;br /&gt;
** [[Mainline Kernel Virtualization]]&lt;br /&gt;
** [[ProcFS]]&lt;br /&gt;
** [[Syscall Command Switch]]&lt;br /&gt;
&lt;br /&gt;
== External Resources ==&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Category:French</id>
		<title>Category:French</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Category:French"/>
				<updated>2009-03-27T13:46:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Translation]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Secure_ProcFS_Entries/fr</id>
		<title>Secure ProcFS Entries/fr</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Secure_ProcFS_Entries/fr"/>
				<updated>2009-03-27T13:46:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: New page: Depuis les versions stable 1.23 et développement 1.3.5, vous pouvez protéger les entrées du système de fichier /proc, de manière à ce qu'elles ne soient pas visibles dans tous les co...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depuis les versions stable 1.23 et développement 1.3.5, vous pouvez protéger les entrées du système de fichier /proc, de manière à ce qu'elles ne soient pas visibles dans tous les contextes. Le système est constitué de trois drapeaux: admin, watch et hide (caché). Pour les activer ou les consulter, vous devez utiliser une version récente du paquet util-vserver, qui contient setattr et showattr. (Un autre outil existe, vproc, mais ne sera pas détaillé ici). La logique derrière ces drapeaux a été modifiée dans la release expérimentale 0.09, et les nouvelles releases stable et devel utilisent aussi cette logique. Nous ne parlerons pas de l'ancienne logique.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Pour faire allusion aux drapeaux, j'utiliserai la syntaxe de l'outil showattr du paquet util-vserver, ou '''a''' est mis pour admin, '''w''' pour watch et '''h''' pour hide (caché). De plus, une minuscule signifie désactivé alors qu'une majuscule signifie activé.&lt;br /&gt;
&lt;br /&gt;
== Flag logic (Linux-VServer 2.4 branch &amp;gt; 1.3.7 / 2.6 branch &amp;gt; 0.08) ==&lt;br /&gt;
Les drapeaThe flags have the following meanings:&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
!Drapeau&lt;br /&gt;
! Signification&lt;br /&gt;
|-&lt;br /&gt;
|admin&lt;br /&gt;
|    toujours visible dans le contexte 0&lt;br /&gt;
|-&lt;br /&gt;
|watch&lt;br /&gt;
|    toujours visible dans le contexte 1&lt;br /&gt;
|-&lt;br /&gt;
|hide&lt;br /&gt;
|    caché&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
La correspondance entre drapeaux et visibilité est donnée par la table suivante:&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
!Drapeau&lt;br /&gt;
!Signification&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;* * h&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Visible partout (les drapeaux admin et watch n'ont pas d'effet)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;A w H&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Visible seulement dans le contexte 0&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;a W H &amp;lt;/tt&amp;gt;   &lt;br /&gt;
|Visible seulement dans le contexte 1&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;A W H &amp;lt;/tt&amp;gt;   &lt;br /&gt;
|Visible dans les contextes 0 et 1&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;a w H&amp;lt;/tt&amp;gt;    &lt;br /&gt;
|Totalement invisible (irreversible sans reboot!)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Drapeaux par Default ==&lt;br /&gt;
Les drapeaux sont mis par défaut à:&lt;br /&gt;
*toutes les entrées de /proc sont visibles partout (branche stable)&lt;br /&gt;
*toutes les entrées de /proc sont visibles seulement dans le contexte 0 (branches devel et expérimentale)&lt;br /&gt;
&lt;br /&gt;
==Activation des drapeaux==&lt;br /&gt;
Pour activer ces drapeaux vous devez utiliser l'outil setattr (à partir de util-vserver &amp;gt;= 0.30.193), dont l'usage est assez clair d'après l'aide en ligne de commande. Pour faire en sorte que l'entrée /proc/loadavg soit visible partout, désactivez par exemple le drapeau hide (caché):&lt;br /&gt;
 setattr --~hide /proc/loadavg&lt;br /&gt;
&lt;br /&gt;
Peu importe la position des drapeaux admin et watch, puisque hide n'est controlé que par le drapeau hide.&lt;br /&gt;
Pour éviter aux vservers d'avoir accès aux informations à propos des interruptions, vous devez cacher l'entrée /proc/interrupts. Si vous voulez pouvoir y accéder depuis le context admin uniquement (contexte 0), utilisez simplement:&lt;br /&gt;
 setattr --hide --admin --~watch /proc/interrupts&lt;br /&gt;
&lt;br /&gt;
==vprocunhide==&lt;br /&gt;
Les outils alpha util-vserver sont livrés avec un outil appelé vprocunhide qui attribue des drapeaux raisonnables pour un certain nombre d'entrées proc, dont on a généralement besoin. Un script d'init est aussi fourni, situé en principe dans &amp;lt;tt&amp;gt;/usr/local/etc/init.d/vprocunhide&amp;lt;/tt&amp;gt;, et que vous pouvez include dans votre séquence de démarrage.&lt;br /&gt;
&lt;br /&gt;
[[Category:French]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/List_of_pages_not_migrated_yet</id>
		<title>List of pages not migrated yet</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/List_of_pages_not_migrated_yet"/>
				<updated>2009-03-27T13:42:58Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of pages which are either not yet migrated or have not yet been invalidated or excluded from migration.&lt;br /&gt;
&lt;br /&gt;
If you think a page listed in here has already been migrated or should be excluded please contact our [[Wiki Team]].&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [[Wiki Relocation]]&lt;br /&gt;
* [[List of migrated pages]]&lt;br /&gt;
* [[List of invalid old pages]]&lt;br /&gt;
* [[List of pages excluded from migration]]&lt;br /&gt;
* [[List of old Documentation pages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
! Old page name&lt;br /&gt;
! Current URL&lt;br /&gt;
|-&lt;br /&gt;
! advanced+DRBD+mount+issues&lt;br /&gt;
| http://oldwiki.linux-vserver.org/advanced+DRBD+mount+issues&lt;br /&gt;
|-&lt;br /&gt;
! alpha+util-vserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/alpha+util-vserver&lt;br /&gt;
|-&lt;br /&gt;
! ArchVserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ArchVserver&lt;br /&gt;
|-&lt;br /&gt;
! BeginnerFAQ&lt;br /&gt;
| http://oldwiki.linux-vserver.org/BeginnerFAQ&lt;br /&gt;
|-&lt;br /&gt;
! BeginnerHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/BeginnerHowTo&lt;br /&gt;
|-&lt;br /&gt;
! breve-presentacion&lt;br /&gt;
| http://oldwiki.linux-vserver.org/breve-presentacion&lt;br /&gt;
|-&lt;br /&gt;
! Cacti+configuration&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Cacti+configuration&lt;br /&gt;
|-&lt;br /&gt;
! CentOS_HowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/CentOS_HowTo&lt;br /&gt;
|-&lt;br /&gt;
! CentOS_min_install&lt;br /&gt;
| http://oldwiki.linux-vserver.org/CentOS_min_install&lt;br /&gt;
|-&lt;br /&gt;
! chroot-barrier-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/chroot-barrier-French&lt;br /&gt;
|-&lt;br /&gt;
! CommonProblems&lt;br /&gt;
| http://oldwiki.linux-vserver.org/CommonProblems&lt;br /&gt;
|-&lt;br /&gt;
! ConfigConverters&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ConfigConverters&lt;br /&gt;
|-&lt;br /&gt;
! DebianVserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/DebianVserver&lt;br /&gt;
|-&lt;br /&gt;
! DebianVserverVirtualHosting&lt;br /&gt;
| http://oldwiki.linux-vserver.org/DebianVserverVirtualHosting&lt;br /&gt;
|-&lt;br /&gt;
! DemoBrainStorming&lt;br /&gt;
| http://oldwiki.linux-vserver.org/DemoBrainStorming&lt;br /&gt;
|-&lt;br /&gt;
! Disk+Limits&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Disk+Limits&lt;br /&gt;
|-&lt;br /&gt;
! Distribution+specific+stuff&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Distribution+specific+stuff&lt;br /&gt;
|-&lt;br /&gt;
! distro_hints&lt;br /&gt;
| http://oldwiki.linux-vserver.org/distro_hints&lt;br /&gt;
|-&lt;br /&gt;
! FC3_min_install&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FC3_min_install&lt;br /&gt;
|-&lt;br /&gt;
! FC4+patched+rpm%27s&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FC4+patched+rpm%27s&lt;br /&gt;
|-&lt;br /&gt;
! Fedora2Vserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Fedora2Vserver&lt;br /&gt;
|-&lt;br /&gt;
! FedoraCore3_HowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FedoraCore3_HowTo&lt;br /&gt;
|-&lt;br /&gt;
! FedoraHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FedoraHowTo&lt;br /&gt;
|-&lt;br /&gt;
! FedoraHowToFrench&lt;br /&gt;
| http://oldwiki.linux-vserver.org/FedoraHowToFrench&lt;br /&gt;
|-&lt;br /&gt;
! Gathered+Ideas&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Gathered+Ideas&lt;br /&gt;
|-&lt;br /&gt;
! GettingStarted&lt;br /&gt;
| http://oldwiki.linux-vserver.org/GettingStarted&lt;br /&gt;
|-&lt;br /&gt;
! grsecurityHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/grsecurityHowto&lt;br /&gt;
|-&lt;br /&gt;
! HowTo+Read+ProcFS&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS&lt;br /&gt;
|-&lt;br /&gt;
! HowTo+Read+ProcFS-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowTo+Read+ProcFS-French&lt;br /&gt;
|-&lt;br /&gt;
! HowtoCloneVserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoCloneVserver&lt;br /&gt;
|-&lt;br /&gt;
! HowtoGuestLoopDevice&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoGuestLoopDevice&lt;br /&gt;
|-&lt;br /&gt;
! HowtoHostAuth&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoHostAuth&lt;br /&gt;
|-&lt;br /&gt;
! HowtoPrivateNetworking&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoPrivateNetworking&lt;br /&gt;
|-&lt;br /&gt;
! HowToRegisterNewDistributions&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowToRegisterNewDistributions&lt;br /&gt;
|-&lt;br /&gt;
! HowtoSSHLogin&lt;br /&gt;
| http://oldwiki.linux-vserver.org/HowtoSSHLogin&lt;br /&gt;
|-&lt;br /&gt;
! initscript-default-debian&lt;br /&gt;
| http://oldwiki.linux-vserver.org/initscript-default-debian&lt;br /&gt;
|-&lt;br /&gt;
! InitStyles&lt;br /&gt;
| http://oldwiki.linux-vserver.org/InitStyles&lt;br /&gt;
|-&lt;br /&gt;
! IpCopInAvserver&lt;br /&gt;
| http://oldwiki.linux-vserver.org/IpCopInAvserver&lt;br /&gt;
|-&lt;br /&gt;
! IPv6&lt;br /&gt;
| http://oldwiki.linux-vserver.org/IPv6&lt;br /&gt;
|-&lt;br /&gt;
! IrcQuestions&lt;br /&gt;
| http://oldwiki.linux-vserver.org/IrcQuestions&lt;br /&gt;
|-&lt;br /&gt;
! Kernel-Knowledge&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Kernel-Knowledge&lt;br /&gt;
|-&lt;br /&gt;
! KernelHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/KernelHowto&lt;br /&gt;
|-&lt;br /&gt;
! KernelHowto-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/KernelHowto-French&lt;br /&gt;
|-&lt;br /&gt;
! Legacy-To-Newstyle-Config&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Legacy-To-Newstyle-Config&lt;br /&gt;
|-&lt;br /&gt;
! Linux-Vserver+FAQ&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ&lt;br /&gt;
|-&lt;br /&gt;
! Linux-Vserver+FAQ-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-Vserver+FAQ-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-00-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-00-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-01-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-01-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-02-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-02-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-03-espaniol&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-espaniol&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-03-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-03-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-04-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-04-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-05-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-05-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-06-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-06-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-07-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-07-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-08-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-08-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-09-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-09-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-10-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-10-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-11-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-11-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-12-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-12-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-13-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-13-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-14-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-14-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-15-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-15-French&lt;br /&gt;
|-&lt;br /&gt;
! Linux-VServer-Paper-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Linux-VServer-Paper-French&lt;br /&gt;
|-&lt;br /&gt;
! linux-vserver_administrators_gide&lt;br /&gt;
| http://oldwiki.linux-vserver.org/linux-vserver_administrators_gide&lt;br /&gt;
|-&lt;br /&gt;
! linux-vserver_administrators_guide&lt;br /&gt;
| http://oldwiki.linux-vserver.org/linux-vserver_administrators_guide&lt;br /&gt;
|-&lt;br /&gt;
! Memory+Allocation&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Memory+Allocation&lt;br /&gt;
|-&lt;br /&gt;
! Memory+Management&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Memory+Management&lt;br /&gt;
|-&lt;br /&gt;
! MoreUbuntu&lt;br /&gt;
| http://oldwiki.linux-vserver.org/MoreUbuntu&lt;br /&gt;
|-&lt;br /&gt;
! Network+Bandwidth+Management&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Network+Bandwidth+Management&lt;br /&gt;
|-&lt;br /&gt;
! New-Howto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/New-Howto&lt;br /&gt;
|-&lt;br /&gt;
! NFS+and+portmap&lt;br /&gt;
| http://oldwiki.linux-vserver.org/NFS+and+portmap&lt;br /&gt;
|-&lt;br /&gt;
! OpenVPN&lt;br /&gt;
| http://oldwiki.linux-vserver.org/OpenVPN&lt;br /&gt;
|-&lt;br /&gt;
! OpenwallHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/OpenwallHowto&lt;br /&gt;
|-&lt;br /&gt;
! PartsList&lt;br /&gt;
| http://oldwiki.linux-vserver.org/PartsList&lt;br /&gt;
|-&lt;br /&gt;
! Per+Context+Quota&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Per+Context+Quota&lt;br /&gt;
|-&lt;br /&gt;
! ProblematicPrograms-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ProblematicPrograms-French&lt;br /&gt;
|-&lt;br /&gt;
! Quota+and+Disk+Limits&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Quota+and+Disk+Limits&lt;br /&gt;
|-&lt;br /&gt;
! Recipes&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Recipes&lt;br /&gt;
|-&lt;br /&gt;
! Release+FAQ-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Release+FAQ-French&lt;br /&gt;
|-&lt;br /&gt;
! Remote+Server+Repartitioning&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Remote+Server+Repartitioning&lt;br /&gt;
|-&lt;br /&gt;
! Scheduler&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Scheduler&lt;br /&gt;
|-&lt;br /&gt;
! Scheduler+Parameters&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Scheduler+Parameters&lt;br /&gt;
|-&lt;br /&gt;
! Security&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Security&lt;br /&gt;
|-&lt;br /&gt;
! short+presentation-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/short+presentation-French&lt;br /&gt;
|-&lt;br /&gt;
! SlackwareVserverHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/SlackwareVserverHowto&lt;br /&gt;
|-&lt;br /&gt;
! Snapshots&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Snapshots&lt;br /&gt;
|-&lt;br /&gt;
! some_hints_from_john&lt;br /&gt;
| http://oldwiki.linux-vserver.org/some_hints_from_john&lt;br /&gt;
|-&lt;br /&gt;
! sparc64&lt;br /&gt;
| http://oldwiki.linux-vserver.org/sparc64&lt;br /&gt;
|-&lt;br /&gt;
! Standard+non-shared+quota&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Standard+non-shared+quota&lt;br /&gt;
|-&lt;br /&gt;
! Step-by-Step+Guide&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Step-by-Step+Guide&lt;br /&gt;
|-&lt;br /&gt;
! Step-by-Step+Guide+2.6&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Step-by-Step+Guide+2.6&lt;br /&gt;
|-&lt;br /&gt;
! SuseVserverHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/SuseVserverHowTo&lt;br /&gt;
|-&lt;br /&gt;
! Syscall+Switch+Info&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Syscall+Switch+Info&lt;br /&gt;
|-&lt;br /&gt;
! TestScripts&lt;br /&gt;
| http://oldwiki.linux-vserver.org/TestScripts&lt;br /&gt;
|-&lt;br /&gt;
! TestWorkingPrograms&lt;br /&gt;
| http://oldwiki.linux-vserver.org/TestWorkingPrograms&lt;br /&gt;
|-&lt;br /&gt;
! ttyHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/ttyHowto&lt;br /&gt;
|-&lt;br /&gt;
! UbuntuVserverHowTo&lt;br /&gt;
| http://oldwiki.linux-vserver.org/UbuntuVserverHowTo&lt;br /&gt;
|-&lt;br /&gt;
! Util-VServer+for+RH9&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Util-VServer+for+RH9&lt;br /&gt;
|-&lt;br /&gt;
! util-vserver+on+sarge&lt;br /&gt;
| http://oldwiki.linux-vserver.org/util-vserver+on+sarge&lt;br /&gt;
|-&lt;br /&gt;
! Virtual+Context+Separation&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Virtual+Context+Separation&lt;br /&gt;
|-&lt;br /&gt;
! Virtual+Init+Task&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Virtual+Init+Task&lt;br /&gt;
|-&lt;br /&gt;
! VirtualiseNTP&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VirtualiseNTP&lt;br /&gt;
|-&lt;br /&gt;
! VirtualizeHowto&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VirtualizeHowto&lt;br /&gt;
|-&lt;br /&gt;
! VisualAids&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VisualAids&lt;br /&gt;
|-&lt;br /&gt;
! vsched+explained&lt;br /&gt;
| http://oldwiki.linux-vserver.org/vsched+explained&lt;br /&gt;
|-&lt;br /&gt;
! Vserver+Completion&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Vserver+Completion&lt;br /&gt;
|-&lt;br /&gt;
! Vserver+DRBD&lt;br /&gt;
| http://oldwiki.linux-vserver.org/Vserver+DRBD&lt;br /&gt;
|-&lt;br /&gt;
! VServer+installation+Fedora+Core+4&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+4&lt;br /&gt;
|-&lt;br /&gt;
! VServer+installation+Fedora+Core+5&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServer+installation+Fedora+Core+5&lt;br /&gt;
|-&lt;br /&gt;
! vserver-autostart&lt;br /&gt;
| http://oldwiki.linux-vserver.org/vserver-autostart&lt;br /&gt;
|-&lt;br /&gt;
! VServerBook&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerBook&lt;br /&gt;
|-&lt;br /&gt;
! VserverDocumentationProject&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VserverDocumentationProject&lt;br /&gt;
|-&lt;br /&gt;
! VServerKernelInstall&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerKernelInstall&lt;br /&gt;
|-&lt;br /&gt;
! VServerManual&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerManual&lt;br /&gt;
|-&lt;br /&gt;
! VServerUtilitiesInstall&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VServerUtilitiesInstall&lt;br /&gt;
|-&lt;br /&gt;
! VSkel&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VSkel&lt;br /&gt;
|-&lt;br /&gt;
! VSkel-French&lt;br /&gt;
| http://oldwiki.linux-vserver.org/VSkel-French&lt;br /&gt;
|-&lt;br /&gt;
! WorkingPrograms&lt;br /&gt;
| http://oldwiki.linux-vserver.org/WorkingPrograms&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Secure_ProcFS_Entries</id>
		<title>Secure ProcFS Entries</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Secure_ProcFS_Entries"/>
				<updated>2009-03-27T13:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Proc-Security&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Linux-VServer project provides a mechanism to protect entries in the proc filesystem from being seen in every context, this has been introduced in development release 1.3.5 and stable release 1.23. &lt;br /&gt;
&lt;br /&gt;
The system consists of three flags: admin, watch and hide. To view/set these, a recent version of the util-vserver package, containing setattr and showattr, is required. (There is another tool called vproc, but this won't be discussed here). The logic behind these flags has been changed in experimental release 0.09, and new devel / stable releases that also use this logic, are coming soon, so the old logic won't be explained here (if you're running an older version of Linux-VServer, you probably already figured it out yourself anyways).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When referring to the flags, I'll follow the syntax used by the showattr tool of the util-vserver package, where '''a''' means admin, '''w''' means watch and '''h''' means hide, also lower case means disabled and upper case means enabled.&lt;br /&gt;
&lt;br /&gt;
== Flag logic (Linux-VServer 2.4 branch &amp;gt; 1.3.7 / 2.6 branch &amp;gt; 0.08) ==&lt;br /&gt;
The flags have the following meanings:&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
!Flag&lt;br /&gt;
!Meaning &lt;br /&gt;
|-&lt;br /&gt;
|admin&lt;br /&gt;
|    always visible in context 0 &lt;br /&gt;
|-&lt;br /&gt;
|watch&lt;br /&gt;
|    always visible in context 1 &lt;br /&gt;
|-&lt;br /&gt;
|hide&lt;br /&gt;
|    hidden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This means a mapping of flagging to visibility according to this table:&lt;br /&gt;
{|class=&amp;quot;wikitablenowrap&amp;quot;&lt;br /&gt;
!Flags&lt;br /&gt;
!Visibility &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;* * h&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Visible everwhere (admin and watch flags don't matter) &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;A w H&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Visible only in context 0 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;a W H &amp;lt;/tt&amp;gt;   &lt;br /&gt;
|Visible only in context 1 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;A W H &amp;lt;/tt&amp;gt;   &lt;br /&gt;
|Visible in contexts 0 and 1 &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;a w H&amp;lt;/tt&amp;gt;    &lt;br /&gt;
|Totally invisible (cannot be reverted without rebooting!)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Default flagging ==&lt;br /&gt;
As of now the stable vs1.2.x (2.4 kernel defaults to all proc entries visible everywhere, stable vs2.0.x (2.6 kernel), development and experimental versions default to all proc entries only visible in context 0 and 1.&lt;br /&gt;
&lt;br /&gt;
==Setting flags==&lt;br /&gt;
To set those flags you'll need the setattr tool from a recent util-vserver package (0.30.193 works), the usage is pretty much self-explanatory from the command-line help. To make the /proc/loadavg entry visible everywhere, you have to unset the hide flag:&lt;br /&gt;
 setattr --~hide /proc/loadavg&lt;br /&gt;
&lt;br /&gt;
The admin and watch flag can be in any state as hiding is controlled by the hide flag only.&lt;br /&gt;
&lt;br /&gt;
To keep vservers from reading the interrupt information, you need to hide the /proc/interrupts entry. If you want this to be accessible in the admin context (0) only use:&lt;br /&gt;
 setattr --hide --admin --~watch /proc/interrupts&lt;br /&gt;
&lt;br /&gt;
==vprocunhide ==&lt;br /&gt;
With alpha util-vserver comes a tool called vprocunhide that sets reasonable flags for a number of proc entries that are generally needed to be visible. There is also an init script, normally located at /usr/local/etc/init.d/vprocunhide that you can use to include it in your boot process.&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Memory_Management</id>
		<title>Memory Management</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Memory_Management"/>
				<updated>2009-03-27T13:34:39Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: migrated from old wiki Memory+Management&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic intro to virtual memory ==&lt;br /&gt;
When folks talk about Memory, they usually mean the expensive modules they buy and plug into the (typically x86) based machines. The operating system, in our case Linux, handles that physical memory according to the mechanisms of the architecture (in this case x86). Most architectures used nowadays have the concept of '''virtual memory''' which basically is ''linear'' address space, in units of pages, which can be real pages in memory or just not there. The operating system now knows about several types of such '''page'''s, for example, there is the file system based page, which can be a file or an executable (of course, such a file will usually require several such pages) and, an important detail here is, the pages do not necessarily have to be in RAM. Then there are anonymous pages, which are used by some application (those are usually read-write) and if there is swapping enabled, those pages can also be written to some swap area. In addition to those types, there are a bunch of special pages and methods to handle those pages: for example, the so called '''zero page''', which is (at least) a page just containing read-only zeros. It will usually be used if you request some memory area from the [http://en.wikipedia.org/wiki/Memory_management memory management system (mm)]. The read-only property causes a trap (page fault) once you write to that page, which then will be replaced by actual memory. A similar thing happens with shared memory pages, which are basically marked read-only and copied on write. Pages which get swapped out (to swap space) will not be freed immediately, they are kept as swap cache; similar happens to file caches (inode cache): they are marked as 'unused' but will not be freed until somebody requires a page. &lt;br /&gt;
&lt;br /&gt;
Now, on x86, the total addressable space is 4GB and this is also the maximum of virtual address space an application (or the kernel) can see. To simplify the transition of memory from userspace to kernelspace, the address space is divided between kernel and userspace.&lt;br /&gt;
&lt;br /&gt;
== The application's point of view ==&lt;br /&gt;
:'''Q.''' OK, I think I understand all that. But i'm not sure about it from the other perspective - i.e. what happens when i run a program. So, say i run something - editing a text file, for example (something simple to start with) then that will use some pages to keep track of what i am doing, correct?&lt;br /&gt;
&lt;br /&gt;
That's actually quite complex, maybe lets start with something like 'true' first! Let's further assume the binary (program) is not compiled dynamically but is static and fits into 4k and it does not have any data section (usually not true, but it's simpler). When it is executed, the kernel 'maps' the executable into memory, and creates an userspace task, with a stack page, and starts executing the just mapped memory. The file will be read into real memory (i.e. RAM), marked as read-only but executable and it will be added to the inode cache; the virtual address will be at some fixed address coded into the executable and it will call the kernel via syscalls requesting things like exit() &lt;br /&gt;
&lt;br /&gt;
When you execute it a second time, the file is already in the inode cache, so all that happens is a new mapping into the virtual adress space of that task. Now, I mentioned already that the address space is shared by userspace and kernel. Typically, the split is 3/1 - where userspace gets 3GB of &amp;quot;space&amp;quot; and the kernel only 1GB; there are now split patches and recent changes to mainline which allow for other splits too such as 2/2 or 1/3. In whichever case, the userspace is allocated first, starting at 0, and (normally), the kernel starts at 0xc0000000 - which is 3GB. &lt;br /&gt;
&lt;br /&gt;
Now usually this leads to the question: ''but what if I have only 1GB of RAM?'' The answer is simple, it will still be 3GB userspace and 1GB kernel space: as mentioned before, the virtual space does not have to be backed by any real RAM. You could, for example, fill the entire 3GB space with mappings of the zero page, using only a single 4k RAM area at any location. This also means that a physical address can be mapped at different virtual addresses and, of course, several times - even in the same task space. Also, the 3GB (or actually 4GB) address space is ''per process'' so the processes do not have to share that space in any way. &lt;br /&gt;
&lt;br /&gt;
Now to get back to the editor example: this will cause &lt;br /&gt;
* the executable pages to be mapped somewhere,&lt;br /&gt;
* the file you 'open' to be mapped too (which will be done via the inode cache).&lt;br /&gt;
&lt;br /&gt;
Then it will require stack and data pages to do the actual work (editing) and it will request a writeback to the file, which will make those pages buffer caches for write back I/O, which in turn might update the inode cache once it is written. If, for some reason, the editor is very large (i.e has many executable pages), it might happen that when you are low on physical RAM (or the swap system is tuned to do optimistic swap out) that some pages of your editor (which are not used right now) will simply be dropped and some of the data pages (editor memory) will be swapped out.&lt;br /&gt;
&lt;br /&gt;
So, as you can see, the relation between processes and physical RAM is not straightforward and simple :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The size of the word depends on the architecture==&lt;br /&gt;
:'''Q.''' This may be stupid, but why isn't the virtual memory size equivalent to the available physical memory plus swap space? It seems it is larger than the hardware can handle (unless you have 4gigs of physical memory). But I guess when you say 3GB of virtual memory, its more of a page of pointers or something, rather than actual memory. &lt;br /&gt;
&lt;br /&gt;
Yes, that is right, but let me answer that with another question: why is an int 32-bit and not just ld(N) ? That is, to represent the value 20 you need just 5 bits (10100 in binary), so why 'waste' 32 bits for that? IMHO the answer is simple and straight forward: the hardware has to have certain limits, for the int this is 32bit; for the address space that is 4GB on x86.&lt;br /&gt;
&lt;br /&gt;
:'''Q.''' Is that due to the instruction set on the CPU itself? &lt;br /&gt;
&lt;br /&gt;
Well, actually the 32bit address space and the [http://en.wikipedia.org/wiki/Memory_management_unit Memory Management Unit MMU)]: { 2^32 = 4294967296 = 4GB }. The x86_64 has a much larger address space (as it is 64-bit based) and the MMU there usually has 48bits at least.&lt;br /&gt;
&lt;br /&gt;
:'''Q.''' So if there's more than 4 gigs, does that mean it is or isn't used? &lt;br /&gt;
As I said before, a mapping is required between virtual adresses and physical RAM. Without 'dirty' tricks (read [http://www.microsoft.com/whdc/system/platform/server/PAE/pae_os.mspx PAE]) 4GB is the maximum on x86. Beyond that, it is the dreaded HIGHMEM support (which is a special case below the 4GB). To access those &amp;gt;4gigs you do so at a cost, so its slower. Even with 4GB RAM, the kernel can only address 1GB (in the default split) directly. The thing here is, changing the mapping from virtual to physical memory is expensive and a kernel which can address 1GB will have to reserve a certain area for mapping in and out the remaining 3GB (on a 4GB system). This &amp;quot;mapping window,&amp;quot; where the &amp;quot;high&amp;quot; memory pages are mapped in and out is called high mem so with the default 3/1 split, you can get roughly 970MB of memory. even with 2GB RAM this will not change, only enabling the dynamic mapping (highmem) will give you access to that&lt;br /&gt;
&lt;br /&gt;
:'''Q.''' you said the virtual memory isn't backed by RAM, but is it backed by anything?&lt;br /&gt;
 &lt;br /&gt;
Sometimes, it depends on the mapping.&lt;br /&gt;
&lt;br /&gt;
==Applying this to vservers==&lt;br /&gt;
:'''Q.''' So how does this all map onto VSZ and RSS (in vserver-stat) or VIRT/RES/SHR in top/vtop stats? &lt;br /&gt;
&lt;br /&gt;
Good questions, and well, they are simply answered for a task:&lt;br /&gt;
* the VSZ for a task is the amount of pages which have a mapping&lt;br /&gt;
* the RSS (resident set size) is the amount of pages which are currently in RAM (physical memory)&lt;br /&gt;
* shared is memory that is mapped between two applications&lt;br /&gt;
&lt;br /&gt;
 VSZ=VIRT = number of pages currently mapped&lt;br /&gt;
 RSS=RES  = number of pages currently in RAM&lt;br /&gt;
&lt;br /&gt;
This accounting is a little more problematic if you want to do it for, let's say two processes. First, what do you do about the address space? look for identical mappings and count them only once, or take the maximum of both? or just add them up? And it's even more complicated for the RSS because we can have shared RAM (e.g. inode caches, executables and we can have shared but copy on write pages and we can also have purely anonymous pages, that only belong to a single task. well, actually shared memory can belong to no task, but that probably complicates things for now, so let's say a single task.&lt;br /&gt;
&lt;br /&gt;
Linux-Vserver tries to be as unintrusive as possible here and, of course, we try to keep it simple and efficient too. So what we do is mainly accounting the allocations and deallocations of those pages per context, which gives values (and if limited limits) which might not be directly mappable to physical RAM (or swap space, which we didn't even mention yet). We decided to 'simply add up' the address space of all tasks and call that VM/AS.&lt;br /&gt;
 VM/AS = virtual memory pages (total) in a context&lt;br /&gt;
&lt;br /&gt;
=== swap ===&lt;br /&gt;
We also decided not to account the shared pages special as [OVZ] does, instead we simply add them up in separate counters. A currently missing accounting/limit is the swap space because accounting the swap space properly would require a 'tag' on each memory page to know which context it belongs to, which is something I don't want to do without good reason, as there are &lt;br /&gt;
* many pages, and &lt;br /&gt;
* this stuff is really performance critical!&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/User:Jze</id>
		<title>User:Jze</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/User:Jze"/>
				<updated>2009-03-27T13:15:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Real Name: Jesper Zedlitz&lt;br /&gt;
;Location: Kiel, Germany&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/User_talk:Hollow</id>
		<title>User talk:Hollow</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/User_talk:Hollow"/>
				<updated>2009-03-27T13:14:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: Extension:ParserFunctions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Haha, I guess that I'm not the only one deleting spam from this Wiki anymore :P --[[User:Daniel15|Daniel15]] 13:22, 20 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Migrated pages ==&lt;br /&gt;
&lt;br /&gt;
I have migrated these pages from the old to the new wiki:&lt;br /&gt;
* [[Namespaces/fr]]&lt;br /&gt;
* [[Namespaces]]&lt;br /&gt;
* [[Installation on Slackware]]&lt;br /&gt;
* [[Vservers and X]]&lt;br /&gt;
--[[User:Jze|Jze]] 13:47, 27 March 2009 (CET)&lt;br /&gt;
&lt;br /&gt;
== Syntax highlighting ==&lt;br /&gt;
It would be nice if you could install this extension in the VServer-Wiki: http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi&lt;br /&gt;
&lt;br /&gt;
Scripts would be much better readable with very little effort. --[[User:Jze|Jze]] 13:47, 27 March 2009 (CET)&lt;br /&gt;
&lt;br /&gt;
== SVG support ==&lt;br /&gt;
Is it possible to activate SVG support for this wiki? I have redrawn the &amp;quot;computer-memory-pyramid&amp;quot; figure from the old wiki. Visualization is always helpfull and much easier to editable with vector graphics. --[[User:Jze|Jze]] 13:47, 27 March 2009 (CET)&lt;br /&gt;
&lt;br /&gt;
== Extension:ParserFunctions ==&lt;br /&gt;
&lt;br /&gt;
Can you also install the Extension:ParserFunctions?&lt;br /&gt;
http://www.mediawiki.org/wiki/Extension:ParserFunctions&lt;br /&gt;
&lt;br /&gt;
It can be used to generate language selection boxes like this [[Template:Language]] with the existing languages automatically shown. --[[User:Jze|Jze]] 14:14, 27 March 2009 (CET)&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Template:Language</id>
		<title>Template:Language</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Template:Language"/>
				<updated>2009-03-27T13:14:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: Language moved to Template:Language: It is a template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-top: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; style=&amp;quot;clear: both;border: 1px solid #807060;border-collapse: collapse;padding: 0.2em;margin: 0;font-size: 85%;margin: 0 1px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #f5e5d0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 25px; padding-left: 0.5em;&amp;quot;&amp;gt;[[Image:Geographylogo.png|25px|Languages]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10px; white-space: nowrap; padding: 4px 1em 0 0.5em; border-right: 1px solid #807060;&amp;quot;&amp;gt;'''Languages:'''&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding: 1px 1em 0; background: #f5e5d0;&amp;quot;&amp;gt;&lt;br /&gt;
'''[[{{{1|:{{NAMESPACE}}:{{BASEPAGENAME}}}}}|English]]'''&lt;br /&gt;
{{Languages/Lang|de|{{{1|}}}}}&lt;br /&gt;
{{Languages/Lang|fr|{{{1|}}}}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Language templates]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Language</id>
		<title>Language</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Language"/>
				<updated>2009-03-27T13:14:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: Language moved to Template:Language: It is a template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Language]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Template:Language</id>
		<title>Template:Language</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Template:Language"/>
				<updated>2009-03-27T12:58:31Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: adjusted colors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-top: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; style=&amp;quot;clear: both;border: 1px solid #807060;border-collapse: collapse;padding: 0.2em;margin: 0;font-size: 85%;margin: 0 1px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #f5e5d0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 25px; padding-left: 0.5em;&amp;quot;&amp;gt;[[Image:Geographylogo.png|25px|Languages]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10px; white-space: nowrap; padding: 4px 1em 0 0.5em; border-right: 1px solid #807060;&amp;quot;&amp;gt;'''Languages:'''&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding: 1px 1em 0; background: #f5e5d0;&amp;quot;&amp;gt;&lt;br /&gt;
'''[[{{{1|:{{NAMESPACE}}:{{BASEPAGENAME}}}}}|English]]'''&lt;br /&gt;
{{Languages/Lang|de|{{{1|}}}}}&lt;br /&gt;
{{Languages/Lang|fr|{{{1|}}}}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Language templates]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/File:Geographylogo.png</id>
		<title>File:Geographylogo.png</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/File:Geographylogo.png"/>
				<updated>2009-03-27T12:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: This file is from the Open Clip Art Library, which released it explicitly into the public domain, using the Creative Commons Public Domain Dedication&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This file is from the Open Clip Art Library, which released it explicitly into the public domain, using the Creative Commons Public Domain Dedication&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Template:Language</id>
		<title>Template:Language</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Template:Language"/>
				<updated>2009-03-27T12:52:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: New page: &amp;lt;div class=&amp;quot;LanguageLinks&amp;quot;&amp;gt; &amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt; &amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #EEF3E2&amp;quot;&amp;gt; &amp;lt;td style=&amp;quot;width: 25px; padding-left: 0.5em;&amp;quot;&amp;gt;Languages&amp;lt;/td&amp;gt;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;LanguageLinks&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #EEF3E2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 25px; padding-left: 0.5em;&amp;quot;&amp;gt;[[Image:Geographylogo.png|25px|Languages]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10px; white-space: nowrap; padding: 4px 1em 0 0.5em; border-right: 1px solid #aaaaaa;&amp;quot;&amp;gt;'''Languages:'''&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding: 1px 1em 0; background: #F6F9ED;&amp;quot;&amp;gt;&lt;br /&gt;
'''[[{{{1|:{{NAMESPACE}}:{{BASEPAGENAME}}}}}|English]]'''&lt;br /&gt;
{{Languages/Lang|de|{{{1|}}}}}&lt;br /&gt;
{{Languages/Lang|fr|{{{1|}}}}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Language templates]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/Template:Languages/Lang</id>
		<title>Template:Languages/Lang</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/Template:Languages/Lang"/>
				<updated>2009-03-27T12:51:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jze: New page: &amp;lt;includeonly&amp;gt;{{#ifexist: {{#if: {{{2|}}} | {{{2}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}:}}{{BASEPAGENAME}}}}/{{{1}}} | &amp;amp;nbsp;&amp;amp;bull;&amp;amp;nbsp;&amp;lt;span lang=&amp;quot;{{{1}}}&amp;quot;&amp;gt;{{#if: {{{2|}}}|[[{{{2}}}/{{...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#ifexist: {{#if: {{{2|}}} | {{{2}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}:}}{{BASEPAGENAME}}}}/{{{1}}} | &amp;amp;nbsp;&amp;amp;bull;&amp;amp;nbsp;&amp;lt;span lang=&amp;quot;{{{1}}}&amp;quot;&amp;gt;{{#if: {{{2|}}}|[[{{{2}}}/{{{1}}}|{{#language:{{{1}}}}}]]| [[:{{NAMESPACE}}:{{BASEPAGENAME}}/{{{1}}}|{{#language:{{{1}}}}}]]}}&amp;lt;/span&amp;gt;|&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;}}&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:Language templates]]&lt;/div&gt;</summary>
		<author><name>Jze</name></author>	</entry>

	</feed>