由于内核版本不一样,所有做出来的 initrd.gz 不一定通用。
故将制作从硬盘起动 ubuntu live_cd 的initrd.gz的方法介绍如下:
原理:修改起动脚本,使其挂载硬盘上的分区,而不是光盘。
首先把光盘里的 casper 和 install 目录复制到根目录里:
代码: 全选
sudo mount */ubuntu.iso /mnt -o loop
sudo cp -R /mnt/casper /
sudo cp -R /mnt/install /
sudo umount /mnt
代码: 全选
sudo mount /casper/filesystem.squashfs /mnt -t squashfs -o loop
代码: 全选
sudo cp -R /mnt/usr/share/initramfs-tools /
代码: 全选
sudo gedit /initramfs-tools/scripts/casper
把它改为:(或者为自己的)
代码: 全选
find_cd() {
mounted=
for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do
devname=$(sys2dev "${sysblock}")
for dev in $(subdevices "${sysblock}"); do
devname=$(sys2dev "${dev}")
case $(get_fstype "${devname}") in
vfat|iso9660|ntfs|etx3|udf|reiserfs)
mount -t $(get_fstype "${devname}") -o ro "${devname}" $mountpoint || continue
if casper_path $mountpoint; then
echo $(casper_path $mountpoint)
return
else
umount $mountpoint
fi
;;
esac
done
done
}
sudo mount --bind /initramfs-tools /mnt/usr/share/initramfs-tools
由于 /mnt/tmp 不能写,所以也要挂载一个能写的过去:
mkdir /gaoxing
sudo mount --bind /gaoxing /mnt/tmp
好了准备好了就可以制作了:(很简单的)
代码: 全选
sudo chroot /mnt /bin/bash
mkinitramfs -o /tmp/initrd.gz /lib/modules/2.6*
从硬盘起动如下:(以前说过)
把 iso 里面的 casper 文件夹解压到一个盘的根目录下
再用光盘中的 inistall/vmlinuz 和我的这个 initrd.gz 起动
在 grub 的 menu.lst 配置文件中加入
代码:
*/ 为你自己的路径title Kubuntu livecd
kernel */vmlinuz append boot=casper ramdisk_size=1048576 root=/dev/ram rw quiet debian-installer/locale=zh_CN splash
initrd */kubuntu_initrd.gz
boot
重起就行了
已经成功的使很多live_cd 从硬盘起动了,包括 6.06 中文件制定版。
相关内容: 修改 initrd.gz 文件 (法二) viewtopic.php?p=98012#98012
.