个人工具

“UbuntuHelp:Installation/OnNFSDrive”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(New page: {{From|https://help.ubuntu.com/community/Installation/OnNFSDrive}} {{Languages|php5}} ==== Introduction & warning ==== This page describes installing Ubuntu on a NFS server. The client(s)...)
 
 
(未显示2个用户的12个中间版本)
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/Installation/OnNFSDrive}}
 
{{From|https://help.ubuntu.com/community/Installation/OnNFSDrive}}
{{Languages|php5}}
+
{{Languages|UbuntuHelp:Installation/OnNFSDrive}}
==== Introduction & warning ====
+
<<Include(Tag/ContentCleanup)>>
 
+
<<Include(Tag/StyleCleanup)>>
This page describes installing Ubuntu on a NFS server. The client(s) running Ubuntu don't need anything wroten on the harddisk. This configuration has some extra requirements:
+
This page describes installing Ubuntu on an NFS server. (''Actually I think it describes how to set up an Ubuntu Installation image (not the Ubuntu system itself, ie the server might be running another Linux) on an NFS server, so client machines can boot across the network into that Ubuntu Installation image via netboot, in order to install Ubuntu on their machine. If so, if would be more accurately named Installation/ViaNfsMount'') The client(s) running Ubuntu will not write anything onto the hard disk.
 
+
(OlivierLeThanhDuong In fact, it seems describes to describe the installation of a Ubuntu system on a NFS share (instead of a local hard drive) so that clients machines can boot on it as if it was installed locally. The instructions on this page are outdated and incoherent, I advice not following them unless you really know what you are doing.)
 +
This configuration has these requirements:
 
* A pre-configured NFS-server. GNU/Linux on a 500MHz/512MB computer will do fine.
 
* A pre-configured NFS-server. GNU/Linux on a 500MHz/512MB computer will do fine.
* 100Mbit/s network. System will work very slowly with 10MBit/s.
+
* 100Mbit/s network. The system will work very slowly with 10MBit/s.
* Client with atleast 256MB RAM, preferrably 512MB OR a harddisk for a swap partition.
+
* Client with at least 256MB RAM, preferably 512MB, or a hard disk for a swap partition.
 
* Some Linux experience and ability to compile your own kernel.
 
* Some Linux experience and ability to compile your own kernel.
 
 
==== Set up the install directory ====
 
==== Set up the install directory ====
 
+
Create a directory for Ubuntu on the NFS server. This directory will be the root for storing all files needed by the clients, eg:
Create a directory for Ubuntu on the NFS server. This directory will be the root for storing all files needed by the clients. I will use /ubuntu in this tutorial.
+
 
+
 
<pre><nowiki>
 
<pre><nowiki>
$ su
+
$ sudo mkdir /ubuntu
Password:
+
</nowiki></pre>
 
+
# mkdir /ubuntu
+
</nowiki></code>
+
 
+
 
==== Get debootstrap scripts ====
 
==== Get debootstrap scripts ====
 +
<ol><li>Grab the latest debootstrap_*.tar.gz from http://archive.ubuntulinux.org/ubuntu/pool/main/d/debootstrap/  Save the archive into the /tmp directory.
 +
</li><li>Uncompress and extract the archive, then cd into the newly created directory and build the program:</li></ol>
  
1. Grab the latest debootstrap_*.tar.gz from http://archive.ubuntulinux.org/ubuntu/pool/main/d/debootstrap/  Save the archive into the /tmp directory.
 
 
2. Uncompress and extract the archive, then cd into the newly created directory and build the program:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
# cd /tmp
 
# cd /tmp
第31行: 第24行:
 
# cd debootstrap-0.2.39ubuntu22
 
# cd debootstrap-0.2.39ubuntu22
 
# make
 
# make
</nowiki></code>
+
</nowiki></pre>
 
+
 
==== Run debootstrap ====
 
==== Run debootstrap ====
 
+
You should run the debootstrap you just built, which requires the following invocation:
You should run the debootstrap you just built, which requires a slightly odd invocation:
+
 
+
 
<pre><nowiki>
 
<pre><nowiki>
# DEBOOTSTRAP_DIR=`pwd` ./debootstrap --arch i386 hoary /ubuntu http://archive.ubuntulinux.org/ubuntu hoary
+
# DEBOOTSTRAP_DIR="`pwd` ./debootstrap --arch i386 hoary /ubuntu http://archive.ubuntulinux.org/ubuntu hoary"
</nowiki></code>
+
</nowiki></pre>
 
+
(JonathanLozinski notes that this did not seem to work on edgy-server, however simply "DEBOOTSTRAP_DIR=`pwd` ./debootstrap --arch i386 edgy /ubuntu" did seem to do as intended. )(''David Tangye notes that both the above commands look incorrect. Try the following perhaps, and change this section to reflect what is correct...'')<pre><nowiki>
(JonathanLozinski notes that this did not seem to work on edgy-server, however simply "DEBOOTSTRAP_DIR=`pwd` ./debootstrap --arch i386 edgy /ubuntu" did seem to do as intended. )
+
DEBOOTSTRAP_DIR="`pwd`"
 
+
./debootstrap --arch i386 feisty /ubuntu http://archive.ubuntulinux.org/ubuntu feisty
The Ubuntu debootstrap will now run the warty scripts.  If your network is unreliable, you may need to run debootstrap multiple times to get all the files.  It resumes where it left off.
+
</nowiki></pre>
 
+
The Ubuntu debootstrap will now run the warty scripts. ('' 'warty', 'hoary', 'edgy'? ! This page needs updating. Is this document still correct? Is it still relevant?'') If your network is unreliable, you may need to run debootstrap multiple times to get all the files.  It resumes where it left off.
Near the end of debootstrap's copious output, you should see "Base system installed successfully". If not, remove everything in /mnt/ubuntu apart from the lost+found directory and try again.
+
Near the end of debootstrap's copious output, you should see "Base system installed successfully". If not, remove everything in /mnt/ubuntu (?? you mean /ubuntu?) apart from the lost+found directory and try again.
 
+
(OlivierLeThanhDuong : On a Ubuntu server you can just "apt-get install debootstrap" and run : "debootstrap <version> <target dir> [<mirror>]" .
 +
For exemple  : "debootstrap hardy /ubuntu /localmirror"
 
==== Set up the host name ====
 
==== Set up the host name ====
 
+
You should replace HOSTNAME in the command below with the desired name for your machine.
Of course, you should replace HOSTNAME in the command below with the desired name for your machine.
+
 
+
 
<pre><nowiki>
 
<pre><nowiki>
 
# echo HOSTNAME > /ubuntu/etc/hostname
 
# echo HOSTNAME > /ubuntu/etc/hostname
</nowiki></code>
+
</nowiki></pre>
 
+
 
==== Set up fstab ====
 
==== Set up fstab ====
 
+
Create /ubuntu/etc/fstab. It should include procfs, sysfs and possibly cdrom and fd0. Root is not included.
Create your fstab. It should include procfs, sysfs and possibly cdrom and fd0. Root is not included.
+
 
+
<pre><nowiki>
+
# nano /ubuntu/etc/fstab
+
</nowiki></code>
+
 
+
 
Here is a decent fstab to get started with:
 
Here is a decent fstab to get started with:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
/proc    /proc    proc    defaults  0 0
 
/proc    /proc    proc    defaults  0 0
第71行: 第52行:
 
/dev/fd0  /mnt/floppy auto user,noauto,sync,exec,umask=000 0 0
 
/dev/fd0  /mnt/floppy auto user,noauto,sync,exec,umask=000 0 0
 
/dev/cdrom /mnt/cdrom auto user,noauto,exec,ro  0 0
 
/dev/cdrom /mnt/cdrom auto user,noauto,exec,ro  0 0
</nowiki></code>
+
</nowiki></pre>
 
+
 
==== Enter the install environment ====
 
==== Enter the install environment ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
# chroot /ubuntu
 
# chroot /ubuntu
 
# mount /proc
 
# mount /proc
</nowiki></code>
+
</nowiki></pre>
 
+
 
Set the root password:
 
Set the root password:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
# passwd
 
# passwd
 
Enter new UNIX password:
 
Enter new UNIX password:
 
Retype new UNIX password:
 
Retype new UNIX password:
</nowiki></code>
+
</nowiki></pre>
 
+
 
==== Compile kernel for your system ====
 
==== Compile kernel for your system ====
 
 
This step is not described fully here. I used kernel 2.6.10 with gentoo patches, just because I had it compiled for my system already. There are some important settings you have to make:
 
This step is not described fully here. I used kernel 2.6.10 with gentoo patches, just because I had it compiled for my system already. There are some important settings you have to make:
 
+
<ol><li>Compile your network card driver in the kernel, not as a module.
1. Compile your network card driver in the kernel, not as a module.
+
</li><li>Enable "IP: kernel level autoconfiguration" in Device Drivers -> Networking support -> Networking options
2. Enable "IP: kernel level autoconfiguration" in Device Drivers -> Networking support -> Networking options
+
</li><li>Enable NFS in Filesystems -> Network file systems: Enable "NFS File system support" and "Root file system on NFS"</li></ol>
3. Enable NFS in Filesystems -> Network file systems: Enable "NFS File system support" and "Root file system on NFS"
+
  
 
If you get "Warning: Unable to open initial console" on the boot and it hangs, try to also:
 
If you get "Warning: Unable to open initial console" on the boot and it hangs, try to also:
 
+
<ol><li>Enable "Preliminary device filesystem" in Filesystems -> Pseudo filesystems
1. Enable "Preliminary device filesystem" in Filesystems -> Pseudo filesystems
+
</li><li>Enable "Mount devfs automatically on boot"</li></ol>
2. Enable "Mount devfs automatically on boot"
+
  
 
===== kernel UPDATE: dapper & later users =====
 
===== kernel UPDATE: dapper & later users =====
 
 
Since dapper, it is not necessary to recompile the kernel, since initramfs is used on the initial ramdisk. Go to /etc/mkinitramfs/initramfs.conf (in the chroot) and change "BOOT=local" to "BOOT=nfs". Then install any linux-image, the initrd generated will be nfs-bootable. Alternatively, call update-initrd to regenerate initrd if you have kernel already installed.
 
Since dapper, it is not necessary to recompile the kernel, since initramfs is used on the initial ramdisk. Go to /etc/mkinitramfs/initramfs.conf (in the chroot) and change "BOOT=local" to "BOOT=nfs". Then install any linux-image, the initrd generated will be nfs-bootable. Alternatively, call update-initrd to regenerate initrd if you have kernel already installed.
 
+
Make sure to send '''both''' kernel image ("/boot/vmlinuz-VERSION") '''and''' initrd ("/boot/initrd.img-VERSION") when netbooting, in the next step.  
Make sure to send '''both''' kernel image ("/boot/vmliunuz-VERSION") '''and''' initrd ("/boot/initrd.img-VERSION") when netbooting, in the next step.  
+
 
+
 
===== Getting out of chroot =====
 
===== Getting out of chroot =====
 
 
In chrooted enviroment umount /proc and then exit:
 
In chrooted enviroment umount /proc and then exit:
 
<pre><nowiki>
 
<pre><nowiki>
 
# umount /proc
 
# umount /proc
 
# exit
 
# exit
</nowiki></code>
+
</nowiki></pre>
 
+
 
==== Get PXELinux, dhcpd and tftpd ====
 
==== Get PXELinux, dhcpd and tftpd ====
 
+
See [[UbuntuHelp:Installation/LocalNet|Installation/LocalNet]] for more up-to-date details. Old info follows.
This step is not described fully here. You need PXELinux from http://syslinux.zytor.com/pxe.php , a TFTPD or other tftp server and DHCPD or other dhcp server.
+
For PXELinux, download the Netboot image from the Ubuntu archives, extract it, copy the pxelinux.0 file and the pxelinux.cfg directory to your tftpd root (mine is /ubuntu) and edit the pxelinux.cfg/default file as described as follows.
* Alternatively you can download the Netboot image for Dapper from http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/netboot/netboot.tar.gz extract it, copy the pxelinux.0 file and the pxelinux.cfg directory to your tftpd root (mine is /ubuntu) and edit the pxelinux.cfg/default file as described as follows.
+
 
+
 
Configure PXELinux. A decent configuration file would be like:
 
Configure PXELinux. A decent configuration file would be like:
 
<pre><nowiki>
 
<pre><nowiki>
第126行: 第92行:
 
DEFAULT kernel-2.6.10
 
DEFAULT kernel-2.6.10
 
APPEND root=/dev/nfs nfsroot=192.168.0.150:/ubuntu ip=dhcp
 
APPEND root=/dev/nfs nfsroot=192.168.0.150:/ubuntu ip=dhcp
</nowiki></code>
+
</nowiki></pre>
 
+
You should at least replace the server address. It is the address of the NFS server. Put pxelinux.0 and kernel-2.6.10 in the tftp server root directory. Put the configuration file "default" in directory "pxelinux.cfg".
You should atleast replace the server address. It is the address of the NFS server. Put pxelinux.0 and kernel-2.6.10 in the tftp server root directory. Put the configuration file "default" in directory "pxelinux.cfg".
+
 
+
 
Configure dhcpd to provide the boot image. A decent configuration would be like:
 
Configure dhcpd to provide the boot image. A decent configuration would be like:
 
<pre><nowiki>
 
<pre><nowiki>
第137行: 第101行:
 
   filename "/pxelinux.0";
 
   filename "/pxelinux.0";
 
  }
 
  }
</nowiki></code>
+
</nowiki></pre>
 
+
I give a fixed address for this to set NFS exports more securely. You should replace the IP and the MAC address of the client. The MAC address can be seen with "ifconfig" on computers running Linux. Restart dhcp server to apply the changes.
I give a fixed address for this to set NFS exports more securitely. You should replace the IP and the MAC address of the client. The MAC address can be seen with "ifconfig" on computers running Linux. Restart dhcp server to apply the changes.
+
 
+
 
==== Configure NFS exports ====
 
==== Configure NFS exports ====
 
 
Add a suitable line in /etc/exports:
 
Add a suitable line in /etc/exports:
 
<pre><nowiki>
 
<pre><nowiki>
/ubuntu                     192.168.0.204(rw,no_root_squash,async)
+
/ubuntu       10.0.0.0/16(rw,sync,no_root_squash) 10.1.0.1/16(rw,sync,no_root_squash) 192.168.0.0/16(rw,sync,no_root_squash)
</nowiki></code>
+
</nowiki></pre>
 
+
 
Restart NFS-server to apply the changes.
 
Restart NFS-server to apply the changes.
 
 
==== Boot ====
 
==== Boot ====
 
 
Configure the client to "Boot from network". It should load PXELinux and in 5 seconds start loading Ubuntu.
 
Configure the client to "Boot from network". It should load PXELinux and in 5 seconds start loading Ubuntu.
 
+
=== (ToDo !!) - How To set up the Ubuntu Desktop on this System ===
==== How To Setup The Ubuntu Desktop on this System ====
+
How to set up the above system to be exactly like a Ubuntu Desktop Installation on the Client machine, as the above only installs a similar system without the xserver/gnome/etc, and apt-get install ubuntu-desktop does not work out of the box.
(ToDo !!) - this means how to setup the above system to be exactly like a Ubuntu Desktop Installation on the Client machine as the above only installs a similar system without the xserver/gnome/etc. and apt-get install ubuntu-desktop does not work out of the box.
+
A workaround for the time being :
workaroud for the time beeing :
+
 
* Setup NFS Server create the directory /ubuntu and export it described as above
 
* Setup NFS Server create the directory /ubuntu and export it described as above
 
* Install Ubuntu Desktop via NetbootImage/CD on Client machine
 
* Install Ubuntu Desktop via NetbootImage/CD on Client machine
 
* Boot into it mount the /ubuntu directory via NFS
 
* Boot into it mount the /ubuntu directory via NFS
* get a root shell and copy the entire / to the mounted NFS directory
+
* Get a root shell and copy the entire / to the mounted NFS directory
 
* chroot into the NFS dir, mount proc and uninstall all linux-image-...
 
* chroot into the NFS dir, mount proc and uninstall all linux-image-...
* edit /etc/mkinitramfs/initramfs.conf and /etc/fstab as described above
+
* Edit /etc/mkinitramfs/initramfs.conf and /etc/fstab as described above
* install linux-image
+
* Install linux-image
* configure pxelinux
+
* Configure pxelinux
* reboot via pxe
+
* Reboot via pxe
 
----
 
----
CategoryDocumentation
+
[[category:CategoryInstallation]] [[category:CategoryNetworking]]
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2009年11月17日 (二) 19:31的最新版本

<<Include(Tag/ContentCleanup)>> <<Include(Tag/StyleCleanup)>> This page describes installing Ubuntu on an NFS server. (Actually I think it describes how to set up an Ubuntu Installation image (not the Ubuntu system itself, ie the server might be running another Linux) on an NFS server, so client machines can boot across the network into that Ubuntu Installation image via netboot, in order to install Ubuntu on their machine. If so, if would be more accurately named Installation/ViaNfsMount) The client(s) running Ubuntu will not write anything onto the hard disk. (OlivierLeThanhDuong In fact, it seems describes to describe the installation of a Ubuntu system on a NFS share (instead of a local hard drive) so that clients machines can boot on it as if it was installed locally. The instructions on this page are outdated and incoherent, I advice not following them unless you really know what you are doing.) This configuration has these requirements:

  • A pre-configured NFS-server. GNU/Linux on a 500MHz/512MB computer will do fine.
  • 100Mbit/s network. The system will work very slowly with 10MBit/s.
  • Client with at least 256MB RAM, preferably 512MB, or a hard disk for a swap partition.
  • Some Linux experience and ability to compile your own kernel.

Set up the install directory

Create a directory for Ubuntu on the NFS server. This directory will be the root for storing all files needed by the clients, eg:

$ sudo mkdir /ubuntu

Get debootstrap scripts

  1. Grab the latest debootstrap_*.tar.gz from http://archive.ubuntulinux.org/ubuntu/pool/main/d/debootstrap/ Save the archive into the /tmp directory.
  2. Uncompress and extract the archive, then cd into the newly created directory and build the program:
# cd /tmp
# tar zxvf debootstrap_0.2.39ubuntu22.tar.gz
# cd debootstrap-0.2.39ubuntu22
# make

Run debootstrap

You should run the debootstrap you just built, which requires the following invocation:

# DEBOOTSTRAP_DIR="`pwd` ./debootstrap --arch i386 hoary /ubuntu http://archive.ubuntulinux.org/ubuntu hoary"
(JonathanLozinski notes that this did not seem to work on edgy-server, however simply "DEBOOTSTRAP_DIR=`pwd` ./debootstrap --arch i386 edgy /ubuntu" did seem to do as intended. )(David Tangye notes that both the above commands look incorrect. Try the following perhaps, and change this section to reflect what is correct...)
DEBOOTSTRAP_DIR="`pwd`"
./debootstrap --arch i386 feisty /ubuntu http://archive.ubuntulinux.org/ubuntu feisty

The Ubuntu debootstrap will now run the warty scripts. ( 'warty', 'hoary', 'edgy'? ! This page needs updating. Is this document still correct? Is it still relevant?) If your network is unreliable, you may need to run debootstrap multiple times to get all the files. It resumes where it left off. Near the end of debootstrap's copious output, you should see "Base system installed successfully". If not, remove everything in /mnt/ubuntu (?? you mean /ubuntu?) apart from the lost+found directory and try again. (OlivierLeThanhDuong : On a Ubuntu server you can just "apt-get install debootstrap" and run : "debootstrap <version> <target dir> [<mirror>]" . For exemple  : "debootstrap hardy /ubuntu /localmirror"

Set up the host name

You should replace HOSTNAME in the command below with the desired name for your machine.

# echo HOSTNAME > /ubuntu/etc/hostname

Set up fstab

Create /ubuntu/etc/fstab. It should include procfs, sysfs and possibly cdrom and fd0. Root is not included. Here is a decent fstab to get started with:

/proc    /proc    proc    defaults   0 0
/sys     /sys     sysfs   defaults   0 0

/dev/fd0  /mnt/floppy auto user,noauto,sync,exec,umask=000 0 0
/dev/cdrom /mnt/cdrom auto user,noauto,exec,ro   0 0

Enter the install environment

# chroot /ubuntu
# mount /proc

Set the root password:

# passwd
Enter new UNIX password:
Retype new UNIX password:

Compile kernel for your system

This step is not described fully here. I used kernel 2.6.10 with gentoo patches, just because I had it compiled for my system already. There are some important settings you have to make:

  1. Compile your network card driver in the kernel, not as a module.
  2. Enable "IP: kernel level autoconfiguration" in Device Drivers -> Networking support -> Networking options
  3. Enable NFS in Filesystems -> Network file systems: Enable "NFS File system support" and "Root file system on NFS"

If you get "Warning: Unable to open initial console" on the boot and it hangs, try to also:

  1. Enable "Preliminary device filesystem" in Filesystems -> Pseudo filesystems
  2. Enable "Mount devfs automatically on boot"
kernel UPDATE: dapper & later users

Since dapper, it is not necessary to recompile the kernel, since initramfs is used on the initial ramdisk. Go to /etc/mkinitramfs/initramfs.conf (in the chroot) and change "BOOT=local" to "BOOT=nfs". Then install any linux-image, the initrd generated will be nfs-bootable. Alternatively, call update-initrd to regenerate initrd if you have kernel already installed. Make sure to send both kernel image ("/boot/vmlinuz-VERSION") and initrd ("/boot/initrd.img-VERSION") when netbooting, in the next step.

Getting out of chroot

In chrooted enviroment umount /proc and then exit:

# umount /proc
# exit

Get PXELinux, dhcpd and tftpd

See Installation/LocalNet for more up-to-date details. Old info follows. For PXELinux, download the Netboot image from the Ubuntu archives, extract it, copy the pxelinux.0 file and the pxelinux.cfg directory to your tftpd root (mine is /ubuntu) and edit the pxelinux.cfg/default file as described as follows. Configure PXELinux. A decent configuration file would be like:

TIMEOUT 50

DEFAULT kernel-2.6.10
APPEND root=/dev/nfs nfsroot=192.168.0.150:/ubuntu ip=dhcp

You should at least replace the server address. It is the address of the NFS server. Put pxelinux.0 and kernel-2.6.10 in the tftp server root directory. Put the configuration file "default" in directory "pxelinux.cfg". Configure dhcpd to provide the boot image. A decent configuration would be like:

 host netbooted {
  hardware ethernet 00:0C:F1:98:1B:A6;
  fixed-address 192.168.0.204;
  filename "/pxelinux.0";
 }

I give a fixed address for this to set NFS exports more securely. You should replace the IP and the MAC address of the client. The MAC address can be seen with "ifconfig" on computers running Linux. Restart dhcp server to apply the changes.

Configure NFS exports

Add a suitable line in /etc/exports:

/ubuntu       10.0.0.0/16(rw,sync,no_root_squash) 10.1.0.1/16(rw,sync,no_root_squash) 192.168.0.0/16(rw,sync,no_root_squash)

Restart NFS-server to apply the changes.

Boot

Configure the client to "Boot from network". It should load PXELinux and in 5 seconds start loading Ubuntu.

(ToDo !!) - How To set up the Ubuntu Desktop on this System

How to set up the above system to be exactly like a Ubuntu Desktop Installation on the Client machine, as the above only installs a similar system without the xserver/gnome/etc, and apt-get install ubuntu-desktop does not work out of the box. A workaround for the time being :

  • Setup NFS Server create the directory /ubuntu and export it described as above
  • Install Ubuntu Desktop via NetbootImage/CD on Client machine
  • Boot into it mount the /ubuntu directory via NFS
  • Get a root shell and copy the entire / to the mounted NFS directory
  • chroot into the NFS dir, mount proc and uninstall all linux-image-...
  • Edit /etc/mkinitramfs/initramfs.conf and /etc/fstab as described above
  • Install linux-image
  • Configure pxelinux
  • Reboot via pxe