如何自定义Ubuntu Live CD?

我想通过安装一些额外的软件包来定制Ubuntu Live CD。我已经按照Ubuntu帮助维基指南进行了操作,但似乎没有成功。有人能提供清晰的说明吗?
我不太喜欢使用Remastersys;我更倾向于手动方式。
定制化
我想要安装的软件包:
- Thunderbird - Samba - SSH
我需要的更改:
- 从应用菜单中删除游戏菜单 - 在桌面上创建Firefox快捷方式 - 将Radiance设置为默认主题 - 更换默认的Ubuntu壁纸
配置文件更改:
- 我希望将面板放在底部 - 我想粘贴我的Samba配置文件,而不是默认的Samba配置 - 我有一些Firefox快捷方式和文件夹,我希望它们显示在桌面上 - 如果您告诉我如何更改图标集,那就太好了
最近更新
  • 我已经定制了Ubuntu 10.10,并在桌面上添加了Firefox快捷方式和几个文件夹。一切进行得很顺利。但是,在选择时区后,安装程序崩溃了。我该如何解决这个问题?
  • 此外,设置壁纸会影响登录界面。我设置的壁纸也显示在登录界面上。我只想要登录界面的默认壁纸。

相关链接:http://askubuntu.com/q/83617/62483 - Lucio
1我投票关闭这个问题,因为它涉及到标准支持结束或生命周期结束的版本。这个问题是关于11.04版本的。大多数答案使用过时、废弃、不受支持的应用程序,并且链接已经失效,比如Remastersys。在现代世界中,没有一个高声誉的答案对用户有任何用处。这可能是一个很好的历史课,但这不是用户所寻求的。 - C.S.Cameron
17个回答

创建自定义的Live CD - 手动方式。

1. 准备工作

  • 首先下载Live CD ISO。在下载过程中安装一些重建所需的软件:sudo apt-get install squashfs-tools schroot
  • Squashfs Install squashfs-tools 是用于Linux的压缩只读文件系统。
  • schroot Install schroot 允许用户在不同的chroot中执行命令或交互式shell。
  • 挂载Live CD:
    mkdir /tmp/livecd
    sudo mount -o loop ~/Downloads/ubuntu-11.04-desktop-i386.iso /tmp/livecd
    
    如果您使用其他ISO或其他位置进行下载,请相应地进行调整。
  • 创建一个工作区并复制内容到工作区:
    mkdir -p ~/livecd/cd
    rsync --exclude=/casper/filesystem.squashfs -a /tmp/livecd/ ~/livecd/cd
    mkdir ~/livecd/squashfs  ~/livecd/custom
    sudo modprobe squashfs
    sudo mount -t squashfs -o loop /tmp/livecd/casper/filesystem.squashfs ~/livecd/squashfs/
    sudo cp -a ~/livecd/squashfs/* ~/livecd/custom
    
  • 如果在执行modprobe时遇到如下错误:
    sudo modprobe squashfs 
    WARNING: Deprecated config file /etc/modprobe.conf, 
    all config files belong into /etc/modprobe.d/
    
    请移动modprobe.conf文件:mv /etc/modprobe.conf /etc/modprobe.conf.OLD,然后再试一次!
  • 网络访问:
    sudo cp /etc/resolv.conf /etc/hosts ~/livecd/custom/etc/
    
  • 创建一个伪文件系统:
    sudo chroot ~/livecd/custom /bin/bash -l
    mount -t proc none /proc/
    mount -t sysfs none /sys/
    
2. 定制化
  • 你可以使用dpkg-query -W --showformat='${Package}\n' | less命令获取所有软件包的列表。

  • 你可以使用apt-get remove --purge gnome-games命令删除游戏。

  • 使用sudoedit /etc/apt/sources.list更新你的源。注释掉你不想要的行,取消注释你想要的行,如果需要添加PPA,则需要使用apt-get update && apt-get dist-upgrade命令进行更新。

  • 添加像Thunderbird、Samba、Samba系统配置和SSH这样的软件包与在命令行中正常安装的方式相同。因此,sudo apt-get install thunderbird samba system-config-samba ssh将添加这些软件包。

  • 如果你手动从网上下载了软件包,可以使用sudo dpkg -i {file_name}.deb命令进行安装。

    • 如果需要安装更多软件包,请查看Ubuntu软件中心、Synaptic或packages website上的名称。
    • 你可能考虑添加(无线)网络工具。
    • 你很快就会超过800MB;如果超过了这个限制,你要么删除更多软件包以使其低于800MB,要么在刻录时使用DVD。如果你不需要它,删除Libre Office将释放出33+MB的空间。
  • 在桌面上创建一个AskUbuntu快捷方式:

    mkdir -p /etc/skel/Desktop && printf '[Desktop Entry]\nVersion=1.0\nName=Ask Ubuntu\nComment=Ask Questions About Ubuntu\nGenericName=Question and Answers\nExec=xdg-open http://askubuntu.com\nTerminal=false\nX-MultipleArgs=false\nType=Application\nIcon=firefox\nCategories=Internet;\n' > /etc/skel/Desktop/askubuntu.desktop && chmod a+x /etc/skel/Desktop/askubuntu.desktop
    

    你可以通过编辑URL来添加更多快捷方式(跳过mkdir部分)。

    由dv3500ea提供
  • 更改gconf-editor中的设置。

    如果你知道选项的路径、想要的值以及值的类型,你可以更改任何gconf选项。

    enter image description here

    更改壁纸是使用我指向箭头的路径:/desktop/gnome/background/,它是一个字符串值,并且使用picture_filename作为选项。它当前在我的桌面上的值是/discworld2/Downloads/fantasticwall_2.jpg。背景本身应该复制到/usr/share/backgrounds/。确保设置权限和所有者。

    示例:

    • 要更改壁纸(将第一个命令中的文件名更改为你自己的图像文件名)并将主题更改为Radiance,你可以使用此信息创建命令以为你的Live CD设置这些:

      gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --set -t string /desktop/gnome/background/picture_filename  /discworld2/Downloads/fantasticwall_2.jpg
      
      gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --set -t string /desktop/gnome/interface/gtk_theme Radiance
      

      由dv3500ea提供

    • 启用远程桌面:

      gconft
      
      

      3. 清理

      apt-get clean
      rm -rf /tmp/*
      rm -f /etc/hosts /etc/resolv.conf
      umount /proc/
      umount /sys/
      exit
      

      这将删除所有临时文件,而不是我们创建的文件。`~/livecd/`是只读的,所以普通的`rm`命令无法删除这些文件。您需要以可写方式挂载它(或者像我一样使用新的live cd引导并挂载home和`rm`它)。

      4. 设置ISO

      • 清单文件。

        chmod +w ~/livecd/cd/casper/filesystem.manifest
        sudo chroot ~/livecd/custom dpkg-query -W --showformat='${Package} ${Version}\n' > ~/livecd/cd/casper/filesystem.manifest
        sudo cp ~/livecd/cd/casper/filesystem.manifest ~/livecd/cd/casper/filesystem.manifest-desktop
        
      • 重新生成 squashfs 文件。

        sudo mksquashfs ~/livecd/custom ~/livecd/cd/casper/filesystem.squashfs
        
      • 更新 md5 校验和。

        sudo rm ~/livecd/cd/md5sum.txt
        sudo bash -c 'cd ~/livecd/cd && find . -type f -exec md5sum {} +' > md5sum.txt
        
      5. 创建ISO文件。
      cd ~/livecd/cd
      sudo mkisofs -r -V "Ubuntu-Live" -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/Downloads/ubuntu-11.04-desktop-i386.iso .
      

      6. 卸载和清理
      sudo umount ~/livecd/squashfs/
      sudo umount /tmp/livecd
      sudo rm -fr ~/livecd/
      

      7. 评论:
      • 一切都是使用Ubuntu 11.04 Live CD进行测试的。唯一出错的地方是chrooting:我添加了dchroot到需要安装的文件中以执行此操作。

      • 关于“应该在桌面上创建一些Firefox快捷方式”,“应该将默认主题更改为Radiance”和“应该更改默认的Ubuntu壁纸”。这些是在dv3500ea将其放入评论后我进行编辑的;我在创建11.04 Live CD时没有测试过这些。


apt-get update && apt-get dist-upgrade命令会升级Live CD中使用的内核/ initrd吗?我指的是用于启动过程的内核,由Syslinux加载的那个,而不是已安装的内核。 - gertvdijk
apt-get dist-upgrade的运行非常顺利,除了一些warning: could not determine root device from /etc/fstab的提示信息之外。这会成为一个问题吗? - Sopalajo de Arrierez
不。但为了确保,你可以看一下你的/是如何安装的。 - Rinzwind
@Rinzwind我已成功从自定义的Live CD中安装了Ubuntu,即使在UEFI系统上进行双重引导也能顺利完成。使用apt-get updateupgrade安装了新软件包并更新了所有软件包以及内核。一切都进行得很完美。但是(通过自定义的Live CD安装的系统)没有/etc/resolv.conf文件(需要注意的是/etc/hosts像往常一样创建了)。在chmod环境中删除/etc/resolv.conf是否正确?无论如何,这不是什么大问题,我使用dpkg-reconfigure resolvconf创建了一个resolv.conf文件。非常感谢。 - sourav c.
1根据help.ubuntu.com上的说明,在12.04和14.04版本中,/etc/resolv.conf文件可能不会在cleanup过程中被删除。 - sourav c.
感谢你的报告,@souravc。我已经编辑了第3章“清理工作”以修复它。 - Sopalajo de Arrierez
@sopalajodearrierez 你明白这是关于<=11.04而不是12.04+吗? - Rinzwind
@Rinzwind 这个答案仍然有效和相关,可能只需要进行一些小的编辑,为什么我们不这样做呢。在问题中,OP没有提到任何特定的发行版。 - sourav c.
@souravc每个版本都有一个答案。那个编辑应该在12.04的答案中完成:http://askubuntu.com/a/157562/15811 我测试了这个答案长达3周,以使其完美适用于11.04及以下版本。我怀疑这个修改对于11.04来说是否正确,但我已经没有11.04的安装文件来测试了。 - Rinzwind
好的,@Rinzwind,我已经把事情恢复到了最初的状态,抱歉。但是我建议添加一些参考内容,比如 (*) if [[ -L "/etc/resolv.conf" ]]; then rm -f /etc/hosts; else rm -f /etc/hosts /etc/resolv.conf; fi 或者简单地说 (*) 如果 /etc/resolv.conf 是一个链接而不是文件,则不要删除它。我的 if-then 结构的目的就是这样:不删除 /etc/resolv.conf 如果它是一个链接,所以它应该适用于任何版本 - Sopalajo de Arrierez
@Rinzwind,我已经测试了你的方法(除了桌面、gconf-editor和远程桌面部分),在Ubuntu v14.04.1 LTS(创建后进行了更新)和Xubuntu v14.02.2 LTS上,它们似乎都工作得很好:安装的程序、额外用户、地区设置、互联网......等等。考虑更新标题。 - Sopalajo de Arrierez
@souravc - 很棒的指南!我正在尝试将xubuntu 15.04 live cd内核升级到最新的4.1-unstable,以便在迄今为止不支持的硬件上使用它,但是到目前为止我还无法做到。按照你的指南一步一步操作,并使用dpkg安装了所需的内核包,然后使用apt-get删除了原有的内核。但是当我使用生成的ISO时,它仍然报告使用的是原有的3.19内核(uname -a)- 我错过了什么吗? - Praveen
@souravc - 我在某个地方看到需要将新的内核和initrd.img复制到casper文件夹中,我也照做了...但是还是没有成功...这里是我整个过程的详细信息 - http://pastebin.com/3WG4syS4 - Praveen
@Praveen 也许你搞错了。实际上,这个回答是Rinzwind写的,不是我。在特殊情况下,我曾经按照指示操作过。最好你去问一下作者。我也可以调查一下这个问题,但需要一些时间。你也可以提一个新的问题。 - sourav c.
为此提出了一个新问题 - http://askubuntu.com/questions/641179/how-to-upgrade-the-kernel-of-xubuntu-15-04-live-cd-to-latest-4-1-4-0-6-version - Praveen
我正在尝试自动启动 PPTP VPN(pptp-linux 包),但对 /etc/network/interfaces 的更改未保存。有什么变通方法吗?暂时,我只是在 /etc/rc.local 中添加了一个 pon 命令。 - Sopalajo de Arrierez
这在最新版本的Ubuntu上还能用吗?而且,它支持EFI计算机(比如Mac)吗? - William
没问题。而且efi对此也不是个问题。 - Rinzwind
2这个方法仍然有效:在Kubuntu 18.04.2上进行了测试。请注意:我只能使用unetbootin使.ISO文件可启动(etcher不起作用)。将.ISO文件刻录到DVD时没有启动问题。 - Nmath

对于最新版本的Ubuntu,请参考这个答案

注意:Ubuntu Builder项目已经停止维护

##使用Ubuntu-Builder创建一个带有Gnome-Classic的自定义12.04 CD (目前,这只适用于Karthik的需求;我稍后会更新答案,加入更一般/Unity特定的内容)

###1. 获取Ubuntu Builder和源ISO

Ubuntu Builder自动化了许多之前需要手动完成的初步步骤(挂载ISO、提取squashfs、创建chroot等)。它还提供了Synaptic和一个“图形化”的chroot(Unity用户界面)。

添加PPA以安装Ubuntu Builder:

sudo add-apt-repository ppa:kamilion/ubuntu-builder
sudo apt-get update
sudo apt-get install ubuntu-builder

同样下载你计划使用的Ubuntu桌面ISO。

###2. Ubuntu Builder基础知识

  • 从启动器中启动Ubuntu Builder。我建议你将所有三个字段都设置为"Ubuntu"(就像实际的LiveCD一样),因为设置自定义字段会导致软件中心崩溃。安装时,你可以像往常一样选择自己的用户名、机器名等。

    enter image description here

  • 加载你的ISO;我加载了64位的带有本地磁盘选项,尽管如果你想的话,Ubuntu Builder应该可以下载ISO。

  • 右侧的按钮是不言而喻的。Console给你一个CLI chroot,而Desktop给你一个图形化界面!,即一个LiveCD会话本身(这可能需要一些时间来加载)。请注意,Select DE/WM有时会做得不完整,所以最好通过apt-get/Synaptic进行安装。

###3. 更新,添加Gnome Classic和其他软件包管理
注意:如果您更习惯使用Synaptic,所有这些操作也可以在Synaptic中完成。
您可以通过按钮(或通过控制台)编辑sources.list文件,以添加自己的镜像、ppa等。
让我们开始吧:
1. 删除游戏: ``` apt-get remove --purge aisleriot gnome-games-data gnomine mahjongg -y ```
2. 进行一次常规更新和升级,以获取最新的软件版本(可选,但建议进行,因为您添加的Gnome Classic和其他软件包将是最新版本)- 在12.04上,此步骤还会安装Thunderbird和核心Samba组件。这样做还可以节省实际安装的时间。 ``` apt-get update && apt-get dist-upgrade ```
3. 安装Gnome Classic(gnome-shell用于引入指示器等)、Samba和SSH: ``` apt-get install gnome-shell samba ssh ```
###4. 自定义1:文件、配置和移除顶部面板
注意:除非另有说明(通常是在从您自己的系统复制文件时),所有命令都必须从Ubuntu Builder的chroot控制台中运行。chroot的绝对路径为/home/ubuntu-builder/FileSystem。
1. 替换Samba配置文件(从您自己的系统终端,即chroot之外!)
sudo cp /path/to/mysmb.conf /home/ubuntu-builder/FileSystem/etc/samba/smb.conf
2. 在桌面上放置Firefox快捷方式:
mkdir -p /etc/skel/Desktop && cd /etc/skel/Desktop cp /usr/share/applications/firefox.desktop . chmod +x firefox.desktop 3. 从chroot之外复制自定义快捷方式和文件夹到桌面
sudo cp -r /path/to/mydesktopitems/ /home/ubuntu-builder/FileSystem/etc/skel/Desktop/
4. 将gnome-classic设置为默认shell:
/usr/lib/lightdm/lightdm-set-defaults -s gnome-classic
删除顶部的Gnome-Classic面板,并将顶部项目移动到底部面板:
打开默认的面板布局: nano /usr/share/gnome-panel/panel-default-layout.layout
通过删除1-4行来删除顶部面板: [Toplevel top-panel]
expand=true orientation=top size=24
通过修改下面的参数中的粗体值,将开始菜单移动到左下角: [Object menu-bar] object-iid=PanelInternalFactory::MenuBar toplevel-id=bottom-panel pack-index=0
通过修改下面的参数中的粗体值,将指示器移动到右下角,就在工作区切换器的左侧:
【对象指示器】 object-iid=IndicatorAppletCompleteFactory::IndicatorAppletComplete toplevel-id=bottom-panel pack-type=end pack-index=1
  • 从左下角删除“显示桌面”按钮;我更喜欢开始菜单是第一个出现的,你可以保留它或将其移动到右下角等。删除以下行:
【对象显示桌面】 object-iid=WnckletFactory::ShowDesktopApplet toplevel-id=bottom-panel pack-index=0
  • 保存并退出。
###5. 自定义2:背景和主题

注意:/usr/share/glib-2.0/schemas包含大部分默认的背景/主题设置;我发现直接修改这些设置对于LiveCD来说更容易,而不必处理复杂的事情,例如防止登录屏幕背景与桌面背景相同。

禁用登录界面(lightdm)从“复制”桌面背景和其他更改:
打开nano /usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
如果需要,您可以在此处更改默认的登录背景: '/usr/share/backgrounds/warty-final-ubuntu.png' 通过将其设置为false来禁用“复制”桌面背景: false 将登录主题设置为Radiance: 'Radiance' 更改默认壁纸;在这里,我们将把它设置为包含的"Tie My Boat"/usr/share/backgrounds/Tie_My_Boat_by_Ray_García.jpg):
打开nano /usr/share/glib-2.0/schemas/10_gsettings-desktop-schemas.gschema.override,并将下面的行更改为您文件的路径:

picture-uri='file:///usr/share/backgrounds/warty-final-ubuntu.png'

  • 将主题更改为Radiance
  • [org.gnome.desktop.interface] gtk-theme="Ambiance" ... [org.gnome.desktop.wm.preferences] theme="Ambiance"

  • 重要:编译修改后的模式!
  • 现在我们已经完成了定制,使用以下命令编译修改后的模式:
    glib-compile-schemas /usr/share/glib-2.0/schemas 
    ###6. 构建、测试和安装!
    在Ubuntu Builder中点击“构建”按钮开始构建自定义的Live-CD ISO。UB会自动处理以前需要手动完成的清理等工作。
    ISO文件可以在/home/ubuntu-builder目录下找到,您可以使用内置的QEMU或其他虚拟机进行测试。
    我的最终CD大小为778 MB(删除旧的.23内核后),如果用户希望,Unity和Gnome 3D仍然可用,所以这对于定制来说非常好! :) 应该得到以下结果: 开机后,您会看到“尝试Ubuntu”或“安装Ubuntu”的选项。

    enter image description here

    点击“尝试”按钮,我们就能获得我们定制的桌面!

    enter image description here

    登出后(使用ubuntu登录,空密码),可以看到登录壁纸仍保持默认状态。

    enter image description here

    安装程序在时区选择时不会崩溃。

    enter image description here

    选择用户名等进行安装:

    enter image description here

    安装的登录界面:

    enter image description here

    已安装的桌面:

    enter image description here


    1如何更新/安装需要系统重启的软件包(例如内核或dbus)?当我尝试更新时,它会安装;但在图形界面模式下,会话指示器变为红色并显示“重新启动以完成更新”。 - Khurshid Alam
    我该如何用自己的艺术作品替换Ubuntu的艺术作品? - Roshan George
    这个不起作用。我不知道为什么。我不确定这是否只发生在我身上。当我在虚拟机中运行它时,会弹出一个窗口显示“/casper/vmlinuz.efi: 文件未找到”。如何纠正这个问题?http://s24.postimg.org/jbez8svx1/Untitled.png - Roshan George
    @izx 请问你能告诉我如何为ubuntu-builder设置工作目录吗?它在/home/ubuntu-builder中创建目录。我以root权限运行它。 - shantanu
    只是为了澄清一下,这样做不仅会改变实时会话,还会更改将要安装的默认软件包集合,对吗? - Oxwivi
    6这个项目已经停止了。PPA不起作用,网站上也没有下载链接。我建议在你的回答开头加上这些信息,以帮助其他来到这里的人不浪费时间。 - Sopalajo de Arrierez
    很遗憾,如果你尝试安装这个软件,在16.04版本中打开下拉菜单时会导致崩溃。 - Dominic Hayes
    1Ubuntu Builder在2014年停止开发;Ubuntu Customization Kit可以安装但无法正常工作,并于2015年停止开发;System Imager在2016年停止开发。这个回答确实需要更新。在2019年,是否有官方支持的方法呢? - allquixotic

    从现有/新安装创建Live CD

    编辑:这种方法似乎不再起作用。建议您尝试本问答中提供的其他方法。

    一个好方法是从当前安装中制作Live CD。这可以使用虚拟机完成(只需不在客户操作系统内安装任何VM工具即可)。

    因此,首先我们需要一个新的安装(如果您无法真正安装它,则尝试使用虚拟机),只包含您需要的内容(在您的情况下为Thunderbird、Samba和SSH)。然后我们调整系统并记录调整的位置(例如,更改桌面背景,设置在~/.gconf中或添加Firefox快捷方式,它们位于~/Desktop中)。这对第4步是必要的。

    设置一些变量: export WORK=~/temp export CD=~/livecd export FORMAT=squashfs export FS_DIR=casper 将~/temp替换为临时目录的路径,我们将在其中进行工作。 将~/livecd替换为CD树的路径。
    创建文件夹结构。sudo mkdir -p ${CD}/{${FS_DIR},boot/grub} ${WORK}/rootfs
    现在我们需要安装一些软件包:sudo apt-get install grub2 xorriso squashfs-tools
    现在我们将复制当前安装,并修改排除标志以适应您的需求:sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/* --exclude=/sys/* --exclude=/tmp/* --exclude=/home/* --exclude=/lost+found --exclude=/var/tmp/* --exclude=/boot/grub/* --exclude=/root/* --exclude=/var/mail/* --exclude=/var/spool/* --exclude=${WORK}/rootfs --exclude=/etc/fstab --exclude=/etc/mtab --exclude=/etc/hosts --exclude=/etc/timezone --exclude=/etc/shadow* --exclude=/etc/gshadow* --exclude=/etc/X11/xorg.conf* --exclude=/etc/gdm/custom.conf / ${WORK}/rootfs 如果您有单独的引导分区,请执行以下操作:sudo cp -av /boot/* ${WORK}/rootfs/boot 在您的情况下,您希望从主目录中复制设置和一些文件。首先,定义我们要复制的目录: CONFIG='.config .gconf Desktop someotherfolder andanotherfolder' 现在我们复制它们: cd ~ && for i in $CONFIG do sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel done 现在我们进入新系统并对其进行修改。 sudo mount --bind /dev/ ${WORK}/rootfs/dev sudo mount -t proc proc ${WORK}/rootfs/proc sudo mount -t sysfs sysfs ${WORK}/rootfs/sys sudo mount -t devpts devpts ${WORK}/rootfs/dev/pts sudo chroot ${WORK}/rootfs /bin/bash
    接下来的命令在chroot中执行: LANG= apt-get update apt-get install casper Casper包含实时脚本。 如果您还想要一个安装程序,请运行以下命令: apt-get install ubiquity ubiquity-frontend-gtk 或者如果您想要KDE: apt-get install ubiquity ubiquity-frontend-kde 更新modules.dep和initramfs: depmod -a $(uname -r) update-initramfs -u -k $(uname -r)
    删除非系统用户 - 不用担心,我们已经将设置和数据复制到用户的“骨架”中。这意味着所有新用户都会有它们。 for i in `cat /etc/passwd | awk -F":" '{print $1}'` do uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'` [ "$uid" -gt "999" -a "$uid" -ne "65534" ] && userdel --force ${i} 2>/dev/null done 清理: apt-get clean find /var/log -regex '.*?[0-9].*?' -exec rm -v {} \; find /var/log -type f | while read file do cat /dev/null | tee $file done rm /etc/resolv.conf /etc/hostname 退出chroot。exit
    现在,我们复制内核: export kversion=`cd ${WORK}/rootfs/boot && ls -1 vmlinuz-* | tail -1 | sed 's@vmlinuz-@@'` sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-${kversion} ${CD}/boot/vmlinuz sudo cp -vp ${WORK}/rootfs/boot/initrd.img-${kversion} ${CD}/boot/initrd.img sudo cp -vp ${WORK}/rootfs/boot/memtest86+.bin ${CD}/boot
    如果您安装了安装程序,则需要执行以下操作,以便安装程序不会安装诸如casper之类的东西: sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo
    所有的功劳归给capink,因为这个指南来自这里

    我有一个关于 grub.cfg 的问题。 这个文件 grub.cfg 只在安装过程中使用,还是在安装后的系统中也是持久存在的? 如果我不编辑 grub.cfg 会怎样? - Roshan George
    @RoshanGeorge 这将配置CD上的GRUB。安装完成后,它不应该持续存在。 - nickguletskii
    我们能不能像Ubuntu正常安装那样,只显示Ubiquity安装程序,而不是显示Grub菜单?也就是说,在Ubuntu安装过程中,当我们插入并运行光盘时,会出现Ubiquity界面,而不是Grub菜单。我们能不能做到这样? - Roshan George
    @RoshanGeorge 可以通过添加菜单项 linux /boot/vmlinuz boot=casper only-ubiquity quiet splash 来实现。我会进行测试和验证。 - nickguletskii
    @RoshanGeorge 我已成功添加了一个选项,可以从启动菜单中启动Ubiquity。然而,我需要修复指南 - 有一些Ubiquity步骤缺失。明天我会尝试修复它。 - nickguletskii
    谢谢尼克的快速回复。我满怀期待地等待着这个。 你上面提到的“edits”是指安装Ubiquity和其他一切吗? - Roshan George
    @RoshanGeorge 看起来我昨天做错了什么。这次我不需要编辑任何东西。我为您方便添加了一步。 - nickguletskii
    仍然显示 grub 菜单。有没有办法跳过它? 当我选择 ubuntu gui 时,它会显示 lighdm 登录界面并要求输入用户名和密码。我应该在那里输入什么? - Roshan George
    @RoshanGeorge 我尝试修复这个问题,但没有成功。我已经达到了登录可以工作的程度,但实际上并没有 - 系统没有创建临时用户。考虑到有更好的方法可以实现相同的目标,我暂时将此方法标记为“不可行”。 - nickguletskii

    你可以使用uck或者live-magic来定制你的Live CD。 uck可以从Ubuntu官方软件源获取,在自10.04 LTS Lucid Lynx以来的所有Ubuntu版本中都可用。你可以通过软件中心安装uck,也可以通过命令行上的apt-get进行安装,或者通过点击这里 Install uck进行安装。

    1看起来UCK已经停产了 :( - amc
    Ubuntu Builder在2014年停止更新;Ubuntu Customization Kit可以安装但无法工作,并于2015年停止更新;System Imager在2016年停止更新。这个回答真的需要更新。2019年是否有官方支持的方法? - allquixotic
    @allquixotic uck 在18.04宇宙软件源中。这个版本不起作用吗? - mchid

    Ubuntu定制工具包

    这是一个由脚本组成的集合,可以更轻松地从现有的.iso镜像创建自定义的LiveCD。它与Remastersys非常相似,不同之处在于它得到了积极的维护。它有一个图形界面来帮助进行定制,但也可以使用命令行完成相同的操作。

    1. 它将要求选择要包含在CD中的语言包。
    2. 然后,它将要求选择作为新CD基础的.iso镜像文件。
    3. 为将要创建的新.iso镜像提供一个名称。
    4. 然后,它将要求添加/删除要在LiveCD中添加/删除的软件包。您可以选择使用命令行或默认的图形界面(Ubuntu软件中心)。注意:您应该选择命令行。通过命令行,您可以使用apt-get或Ubuntu软件中心(在命令行中键入software-center)来添加/删除软件包。您还可以修改所有软件/应用程序的配置设置。
    5. 完成后(可能需要一些时间下载所需的软件包),请继续。
    6. 现在,只需坐下来放松。过一段时间,您的定制LiveCD将准备就绪。

    2看起来UCK项目已经停止了 :( - amc

    复制Ubuntu系统以进行分发

    当前页面上的所有答案都已经失效了。至少在Ubuntu 20.04或20.10上不再适用。所有的应用程序都已被废弃。使用镜像文件来复制操作系统是简单且始终有效的方法。

    1) 从现有操作系统创建镜像文件。

    • 启动Live Ubuntu USB并插入要复制的完整安装(或持久化)USB。

    • 使用GNOME Disks创建完整安装(或持久化)USB的镜像文件。

      GNOME Disks

      Create disk image dialog

    2) 对镜像进行截断以进行分发,删除镜像文件末尾的不需要的空间。

    示例:删除驱动器末尾的NTFS Microsoft基本数据分区。

    输入:

    cd /media/ubuntu/DATA/
    fdisk -l DiskImageofsdd.img
    

    输出:

    Disk DiskImageofsdd.img: 28.66 GiB, 30752636928 bytes, 60063744 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: 82741D01-6511-4A8A-8FDF-52D8C165C178
    
    Device                 Start      End  Sectors   Size Type
    DiskImageofsdd.img1     1953     3906     1954   977K BIOS boot
    DiskImageofsdd.img2     3907   503906   500000 244.1M EFI System
    DiskImageofsdd.img3   505856 44578815 44072960    21G Linux filesystem
    DiskImageofsdd.img4 44578816 60061695 15482880   7.4G Microsoft basic data
    

    输入:

    truncate --size=$[(44578815+1)*512] DiskImageofsdd.img
    

    3) 压缩图像以便分发。

    • 对于xz压缩,如果您使用的是Windows系统,请从https://www.7-zip.org/a/7z1900-x64.msi安装7-Zip,或者如果您使用的是Ubuntu系统,请从Ubuntu商店安装P7Zip。一旦在Windows或Ubuntu上安装了7-Zip,闪存工具应该可以直接使用xz文件,无需先解压缩。

    • 也可以使用PKZip压缩,但效果不如xz压缩好。

    4) 虚拟机:将.vdi文件转换为可用于刷写到可启动USB设备的.img文件。

    • 打开VirtualBox。

    • cd到包含ubuntu.vdi的文件夹,并运行:

      VBoxManage clonemedium --format RAW ubuntu.vdi ubuntu.img
      

    5) 将映像文件安装到目标驱动器。

    注意:目标驱动器将被覆盖。

    • 当您想要将映像恢复或克隆到另一个驱动器时,请使用Disks中的煎饼图标,或者使用EtcherRufusddmkusb

    6) 为映像文件创建安装程序驱动器。

    • 使用Etcher、Startup Disk Creator、dd、mkusb等工具制作一个可启动的USB。

    • 从另一个Linux驱动器上,使用以下命令将新的可写分区转换为NTFS分区:

      sudo mkfs.ntfs -f -L usbdata /dev/sdx

      其中sdx是可启动的驱动器。

    • 将操作系统镜像文件放置在可启动USB的NTFS分区中,以便在需要时可以从可启动USB闪存到目标驱动器。


    2只有20.04及以上版本的有效答案。 - Artur Meinild
    我对某些部分感到困惑:(1)“启动Live Ubuntu USB并插入Full install(或Persistent)USB进行复制。”这句话是指我需要在真实机器上的live boot中完成所有操作(根据照片中显示的磁盘),还是可以在虚拟机中完成(根据第4步)?或者这是一个步骤中的多个选项?无论如何,我认为在第1步之前应该自定义所有内容。 - MakisH
    1@MakisH:这是为了复制持久或完整安装的USB而编写的(作为Remastersys和其他不再起作用的方法的替代方案)。它也适用于复制安装在硬盘上的Ubuntu,但被复制的驱动器越大,所需时间就越长,所需磁盘空间也越大。它还可以在从硬盘或虚拟机启动到Ubuntu时使用(我尚未尝试从虚拟机启动)。第4步用于将.vdi文件转换为.img文件,以便在希望复制位于虚拟机文件而非物理驱动器上的Ubuntu时使用。 - C.S.Cameron

    如果您需要更多控制确切的变更,可以手动进行修改。

    该过程包括解压包含现场操作系统根文件系统的SquashFS数据文件,chrooting到提取的文件系统中,进行修改,退出chroot,重新打包SquashFS文件,然后重新生成ISO映像。

    有关详细信息,请参阅Ubuntu维基百科上的LiveCDCustomization页面。


    在Ubuntu软件中心中,
    编辑>软件源>其他软件>添加...
    将以下行粘贴到框中,然后点击添加源。
    deb http://www.geekconnection.org/remastersys/repository karmic
    重新加载源并从软件中心安装Remastersys。
    完成后,安装您想要的所有媒体编解码器和应用程序到您的自定义Ubuntu上。 从
    系统>管理>Remastersys
    启动Remastersys。
    选择dist模式,点击确定,等待过程完成。完成后,您将在以下位置找到您的自定义ISO文件。

    /home/remastersys/remastersys/custom.iso


    我按照你在这里描述的步骤进行了完全相同的操作,但不幸的是,在启动过程中显示出"无法找到ramdisk镜像:/ubninit",并且以10秒的间隔一次又一次地刷新。结果是:我无法启动我的自定义ISO。你能告诉我如何解决这个问题吗?拜托了。 - tuxtu

    您可以使用Cubic——此实用工具已经经过测试(由我)并在Ubuntu 18.04主机上与Ubuntu 18.04映像一起使用,这对于大多数其他无法运行或已停用的工具来说是不言而喻的。
    这里有一个使用指南可从网站Linoxide获得。
    大致步骤包括:
    • 确保您正在使用支持的Ubuntu版本(我尝试了18.04;它有效)
    • 为Cubic PPA安装GPG密钥
    • 将Cubic PPA添加到您的源中
    • 安装cubic工具
    • 运行它,并按照图形界面提示进行操作

    另外,请参考此答案 https://askubuntu.com/a/741770/100356 以获取指示。 - Enterprise
    因为这个答案,我尝试了20.04版本的Cubic,并且与本页面上大多数答案不同,它按照广告所说的正常工作了。谢谢你。 - C.S.Cameron
    2023年对我来说非常顺利,成功制作了一个定制的Ubuntu 22.04 Live USB。非常简单易用,文档和界面都很容易理解,维护者也非常负责任。绝对值得支持这个项目! - MakisH

    Remastersys可能是你需要的答案。你需要访问http://www.remastersys.com/ubuntu.html并按照说明进行操作。该程序可以从你正在运行的操作系统中创建一个包含所有设置和应用程序的iso文件。然后,你可以使用这个iso文件刻录一张光盘。不幸的是,过去存在一个问题,即无法将其作为live cd运行,但安装没有问题(我不知道现在是否仍然存在这个问题)。

    1或者使用图形用户界面(GUI)的UCK,更简单一些。 - Uri Herrera
    Remastersys已经不再存在。现在这个网站被一个域名抢注者拥有。 - allquixotic