我必须格式化整个磁盘并重新安装 Ubuntu。
我在当前系统上安装了很多软件。我还必须重新安装所有这些更新、驱动程序和应用程序。
有什么方法可以制作已安装的 Ubuntu 的 .iso 映像以及其中的所有软件、首选项、驱动程序等?
有什么方法可以备份我的整个操作系统及其所有软件、驱动器、更新等?
答案1
您可以做的是备份您的主目录并保存已安装的所有软件包的列表。要保存已安装软件的列表,请使用以下命令:
sudo dpkg --get-selections > package_list
这将创建一个文件,其中列出了此系统上安装的所有软件包/软件。您需要将此文件备份到安全的地方。
然后,当你在机器上重新安装 ubuntu 时,你可以使用以下命令来安装所有这些软件
sudo dpkg --set-selections < packages_list
此命令不会安装任何内容。它只会标记要安装的软件包。要安装它们,请运行以下命令:
sudo apt-get -u dselect-upgrade
这需要一些时间才能完成,因为您的系统将下载并安装所有软件包。此命令完成后,将您当前的主目录替换为您之前备份的目录。
希望这可以帮助
答案2
我回答了“如何自定义 Ubuntu Live CD?”,其中介绍了一种从当前安装创建 Live CD 的方法。这意味着您无需再次下载所有软件包。本指南可能看起来很长而且很难,但大部分都是“跟着做”和“复制粘贴”。以下是复制并稍加编辑的内容:
从现有/新安装创建 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
现在我们chroot到新的系统并进行修改。
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 包含实时脚本。现在安装程序(gnome 版本)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 tee ${CD}/${FS_DIR}/filesystem.manifest sudo cp -v ${CD}/${FS_DIR}/filesystem.manifest{,-desktop} REMOVE='ubiquity casper user-setup os-prober libdebian-installer4' for i in $REMOVE do sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop done
卸载我们已经安装的内容:
sudo umount ${WORK}/rootfs/proc sudo umount ${WORK}/rootfs/sys sudo umount ${WORK}/rootfs/dev/pts sudo umount ${WORK}/rootfs/dev
转换为 squashfs:
sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT}
制作文件系统.大小:
echo -n $(sudo du -s --block-size=1 ${WORK}/rootfs | tail -1 | awk '{print $1}') | sudo tee ${CD}/casper/filesystem.size
和 md5:
find ${CD} -type f -print0 | xargs -0 md5sum | sed "s@${CD}@.@" | grep -v md5sum.txt |sudo tee ${CD}/md5sum.txt
现在 grub.cfg:
sudo nano ${CD}/boot/grub/grub.cfg
(用你喜欢的文本编辑器替换 nano,没关系)粘贴并保存:
set default="0" set timeout=10 menuentry "Ubuntu GUI" { linux /boot/vmlinuz boot=casper quiet splash initrd /boot/initrd.img } menuentry "Ubuntu in safe mode" { linux /boot/vmlinuz boot=casper xforcevesa quiet splash initrd /boot/initrd.img } menuentry "Ubuntu CLI" { linux /boot/vmlinuz boot=casper textonly quiet splash initrd /boot/initrd.img } menuentry "Ubuntu GUI persistent mode" { linux /boot/vmlinuz boot=casper boot=casper persistent quiet splash initrd /boot/initrd.img } menuentry "Ubuntu GUI from RAM" { linux /boot/vmlinuz boot=casper nopersistent toram quiet splash initrd /boot/initrd.img } menuentry "Check Disk for Defects" { linux /boot/vmlinuz boot=casper integrity-check quiet splash initrd /boot/initrd.img } menuentry "Memory Test" { linux16 /boot/memtest86+.bin } menuentry "Boot from the first hard disk" { set root=(hd0) chainloader +1 }
制作 CD/DVD!
sudo grub-mkrescue -o ~/live-cd.iso ${CD}
使用虚拟机测试一下!
所有荣誉都归于 capink,因为指南来自这里。
答案3
有多种方法可以做到这一点。最简单的方法是使用 remastersys
sudo remastersys dist
在使用 remastersys 之前,你应该安装 ubiquity 包
或者你可以使用档案归档、重做备份(Live CD)
答案4
如果您在单个硬盘上安装了 Ubuntu,并且您有另一个具有相同或更大存储容量的硬盘,那么克隆磁盘非常简单:
sudo dd if=/<from disk> of=<to disk>
例如,如果您想将 sda 克隆到 sdb,则需要执行sudo dd if=/dev/sda of=/dev/sdb
。这将保留所有分区、启动管理器等。
注意使用正确的 if(输入文件)和 of(输出文件)。输入文件是您要复制的磁盘。如果您切换顺序,那么您将把空磁盘克隆到满磁盘上,这样您就会得到两个空白磁盘。:)
还要确保新磁盘有足够的空间来克隆第一个磁盘。否则它将在最后被切断。不会有任何警告。
如果您想创建图像,只需将其替换of=/dev/sdb
为of=/some_place/disk-image.raw
。 将其存储在另一个磁盘上。