UbuntuHelp:LiveCDCustomizationFromScratch
来自Ubuntu中文
点击翻译: |
English |
请不要直接编辑翻译本页,本页将定期与来源同步。 |
This procedure works and can create an ugly, but bootable Ubuntu live cd (along with the hardware autodetection and configuration) from scratch. You do not need to start from an already-made live cd. You may wish to create an Ubuntu remix and distribute it as a live cd. Here is a way to do that without having to start from an existing Ubuntu Desktop cd.
目录
Overview
There are three different areas to think about: The host system, the disk image and the chroot. 1- The host system. This is your current Ubuntu install. You will need to install syslinux squashfs-tools and mkisofs to be able to build the live cd with your current system. 2- The disk image. The disk image is a directory that we will burn to a cd. You will copy the isolinux bootloader (from the syslinux package) onto the disk image (into the folder, for now). You will include an isolinux configuration file which will allow you to show a menu at boot time. You will also copy the kernel from the chroot onto the disk image (folder). The disk image will be created in the host environment (outside of the chroot) 3- The chroot environment. This is the system that will run from the disk. It does not need a kernel, nor a bootloader unless you are planning on installing it back onto a hard disk (using Ubiquity). It is useful to install Casper into the chroot and then install a kernel which you will copy out into the disk image. The initrd that is then created when the kernel is installed will contain the casper boot scripts. Otherwise, you will need to create an initrd (with the casper scripts) for your disk image in the host system. The chroot will end up inside the disk image in the form of a squashed (compressed) file. For right now, it will be just another folder on your host system. The basic steps are to 1- Create a chroot and install your packages there. 2- Compress the chroot system into a file. 3- Create and configure the disk image which will have the bootloader (isolinux), the kernel and the compressed filesystem image. And other stuff. 4- Burn the cd and test it out.
Make the chroot environment
install debootstrap. (Note, the latest version of debootstrap is available here. Run
mkdir work cd work mkdir chroot sudo debootstrap --arch i386 gutsy chroot http://archive.ubuntu.com/ubuntu
That will create a directory with a chroot directory within it. It will then install a bare ubuntu system there.
sudo cp /etc/resolv.conf chroot/etc/resolv.conf sudo cp /etc/apt/sources.list chroot/etc/apt/sources.list sudo chroot chroot mount /proc mount /sys apt-get update locale-gen en_CA.UTF-8 apt-get install ubuntu-standard casper (and whatever other packages you want) apt-get install discover1 laptop-detect os-prober apt-get install linux-generic apt-get clean rm -rf /tmp/* rm /etc/resolv.conf umount -l -f /proc umount -l -f /sys exit
That will allow you to enter that chroot and install packages, then clean up and leave. This is where you build your custom system using packages from the Ubuntu archives.
Create the cd image directory and populate it
Install syslinux squashfs-tools mkisofs sbm You need these packages to work on the cd image (syslinux contains isolinux which is what makes the cd bootable. Squashfs-tools will compress the image. SBM is a tool which is useful to have on the cd if you cannot get it to boot. Make the image directory and the needed subdirectories.
mkdir image image/casper image/isolinux image/install
You will need a kernel and an initrd that was build with the casper scripts. Grab them from your chroot.
cp chroot/boot/vmlinuz-2.6.22-14-generic image/casper/vmlinuz cp chroot/boot/initrd.img-2.6.22-14-generic image/casper/initrd.gz
You need the isolinux binary and the sbm binary.
cp /usr/lib/syslinux/isolinux.bin image/isolinux/ cp /boot/memtest86+.bin image/install/memtest cp /boot/sbm.img image/install/
Create an isolinux.txt file in image/isolinux to display at boot time: Example:
This is an Ubuntu Remix Live CD. For the default live system, enter "live". To verify the CD for errors, enter "check". To run memtest86+, enter "memtest"
Create an isolinux.cfg file in image/isolinux/ Read usr/share/doc/syslinux/syslinux.doc on configuration options. Here is an example of what could be in the file:
DEFAULT live LABEL live menu label ^Start or install Ubuntu kernel /casper/vmlinuz append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.gz quiet splash -- LABEL check menu label ^Check CD for defects kernel /casper/vmlinuz append boot=casper integrity-check initrd=/casper/initrd.gz quiet splash -- LABEL memtest menu label ^Memory test kernel /install/memtest append - LABEL hd menu label ^Boot from first hard disk localboot 0x80 append - DISPLAY isolinux.txt TIMEOUT 300 PROMPT 1
Now your disk image can boot. Create manifest:
sudo chroot chroot dpkg-query -W --showformat='${Package} ${Version}\n' > image/casper/filesystem.manifest sudo cp image/casper/filesystem.manifest image/casper/filesystem.manifest-desktop sudo sed -ie '/ubiquity/d' image/casper/filesystem.manifest-desktop
Compress the chroot:
sudo mksquashfs chroot image/casper/filesystem.squashfs
Create a diskdefines:
nano image/README.diskdefines
example:
#define DISKNAME Ubuntu 7.04 "Feisty Fawn" - Release i386 **Remix** #define TYPE binary #define TYPEbinary 1 #define ARCH i386 #define ARCHi386 1 #define DISKNUM 1 #define DISKNUM1 1 #define TOTALNUM 0 #define TOTALNUM0 1
Calculate MD5
sudo -s (cd image && find . -type f -print0 | xargs -0 md5sum > md5sum.txt) exit
Turn the image directory into an iso image
Create iso
cd image sudo mkisofs -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-remix.iso .
The boot.cat file will be automatically created.
To Do
-Graphical boot -Can you install the system back onto a hard drive with ubiquity?