我的问题是关于测试它

我的问题是关于测试它

我想制作一个可以实时运行但也可以安装的 Ubuntu 混音版。我正在使用以下教程从头开始定制现场 CD现场 CD 定制。我也曾使用过(4.0.5-1) 脚本ubuntu的模式live-build,但无法让它具有安装选项。我想从头开始,所以我不想使用uck我在尝试安装该发行版时遇到了一些问题。实时选项运行良好。首先,我在 Xubunutu 14.04 上完成所有这些操作。

我将从一开始就逐步介绍我的步骤:

ARCH=i386
RELEASE=trusty
# make chroot environment
mkdir -p work/chroot && cd work
sudo debootstrap --arch=$ARCH $RELEASE chroot
# Copy Files For Internet
sudo cp /etc/hosts chroot/etc/hosts
sudo cp /etc/resolv.conf chroot/etc/resolv.conf
sudo cp /etc/apt/sources.list chroot/etc/apt/sources.list
# Copy A text file with a list of packages (packages.txt) to the chroot environment
sudo mkdir -p chroot/usr/share/initialinstall
grep -vE '^\s*(#|$)' packages.txt >> packages-list.txt
sudo cp packages-list.txt chroot/usr/share/initialinstall/packages
rm packages-list.txt
sudo mount --bind /dev chroot/dev

现在我已经成功设置了 chroot 环境。现在我可以 chroot 进入该环境了。

sudo chroot ./chroot
mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts
HOME=/root
export LC_ALL=C
apt-get update
apt-get install --yes dbus
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
apt-get install --yes casper lupin-casper
apt-get install --yes discover laptop-detect os-prober
apt-get install --yes linux-generic
apt-get install --yes ubiquity-frontend-gtk

在安装这些先前的软件包时,grub-pc会出现一个配置。我不认为这会影响我的主机系统,因为我处于 chroot 环境中。所以我点击 [确定],然后将其安装到dev/sda

然后,当仍然处于 chroot 环境中时,我会安装之前移入 chroot 环境的文本文件中的所有包。

# Install new packages from the list from before
apt-get install $(grep -vE "^\s*#" /usr/share/initialinstall/packages  | tr "\n" " ")
# Prepare to exit chroot environment
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
apt-get clean
rm -rf /tmp/*
rm /etc/resolv.conf
umount -lf /proc
umount -lf /sys
umount -lf /dev/pts
exit
sudo umount /path/to/chroot/dev

我已经有了syslinux squashfs-tools genisoimage,所以现在我必须设置 cd 映像目录。

mkdir -p image/{casper,isolinux,install}
cp chroot/boot/vmlinuz-* image/casper/vmlinuz
cp chroot/boot/initrd.img-* image/casper/initrd.lz
cp /usr/lib/syslinux/isolinux.bin image/isolinux/
cp /boot/memtest86+.bin image/install/memtest
cp /usr/lib/syslinux/menu.c32 image/isolinux/

然后我制作isolinux.cfg并放入了image/isolinux/。它包含以下内容:

UI menu.c32
PROMPT 1

MENU TITLE Boot Menu
DEFAULT live
LABEL live
  menu label ^Start or install Ubuntu Remix
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash --
LABEL live-install
  menu label ^Install Uubuntu Remix
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash ---
LABEL check
  menu label ^Check CD for defects
  kernel /casper/vmlinuz
  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash --
LABEL memtest
  menu label ^Memory test
  kernel /install/memtest
  append -
LABEL hd
  menu label ^Boot from first hard disk
  localboot 0x80
  append -
TIMEOUT 50

然后我创建了清单

sudo chroot chroot dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee image/casper/filesystem.manifest
sudo cp -v image/casper/filesystem.manifest image/casper/filesystem.manifest-desktop
REMOVE='ubiquity ubiquity-frontend-gtk ubiquity-frontend-kde casper lupin-casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4'
for i in $REMOVE 
do
        sudo sed -i "/${i}/d" image/casper/filesystem.manifest-desktop
done

之后压缩 chroot

sudo mksquashfs chroot image/casper/filesystem.squashfs 
printf $(sudo du -sx --block-size=1 chroot | cut -f1) > image/casper/filesystem.size

创建磁盘定义

touch image/README.diskdefines

它包含了:

#define DISKNAME  Ubuntu 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

识别为 Ubuntu Remix

touch image/ubuntu
mkdir image/.disk
cd image/.disk
touch base_installable
echo "full_cd/single" > cd_type
echo "Ubuntu Remix 14.04" > info  # Update version number to match your OS version
echo "http//your-release-notes-url.com" > release_notes_url
cd ../..

计算 MD5

sudo -s
(cd image && find . -type f -print0 | xargs -0 md5sum | grep -v "\./md5sum.txt" > md5sum.txt)
exit

创建 ISO 映像

IMAGE_NAME=UBUNTUREMIX
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 .
cd ..

现在我尝试使用 VirtualBox 进行测试。我使用以下设置创建了一个虚拟机:

设置

我的问题是关于测试它

当我启动它时,我会看到我想要的菜单,我可以尝试实时选项,效果很好。我关闭机器并尝试将其安装到虚拟硬盘上,ubiquity 安装程序运行正常,直到最后,我收到以下错误:An attempt to configure apt to install additional packages from the CD failed

apt 配置错误

它将我引导到实时版本,以便我可以尝试修复该问题。我尝试使用 lsblk 查看它是否看到 cdrom 设备,结果似乎看到了:

lsblk

如果有人有任何提示或指示,我将不胜感激。这是我在这个项目上要克服的最后一个问题,我真的很困惑。2012 年的一个 debian 错误有一个解决方法来删除/usr/lib/ubiquity/apt-setup/generators/40cdrom。我验证了我的发行版有该文件,并且我解压了一个 Xubuntu iso,它也有该文件。所以我不知道删除它是否是正确的做法,或者我的 Virtual Box 设置是否错误。

顺便说一下,这里是我安装的文本文件中的软件包:

xorg
xinit
xterm
xserver-xorg
xserver-xorg-core
xfonts-base
x11-xserver-utils
x11-apps
x11-session-utils
x11-utils
xinput 
openbox
obconf
obmenu
tint2
volti
clipit
gmrun
lightdm
lightdm-gtk-greeter
light-locker
light-locker-settings
laptop-detect
spacefm
synaptic
libnotify4
dkms
gvfs
gvfs-backends
policykit-1
unzip
zip
p7zip
unrar-free

我可能也丢失了一个重要的包裹。

相关内容