ubuntu下如何在从盘创建启动分区并重启从该从盘引导(UEFI启动)?
Step1:
使用 tar 备份根目录和EFI 分区(仅需做一次,假定当前linux根目录在sda2, EFI 分区在sda1, 无其他分区)
tar --exclude /boot/efi -cvpf ~/boot.tar /boot
Step2:
在当前unbutu环境下,对从盘建立分区表; 假定目标从盘为/dev/nvme1n1
Sudo parted /dev/nvme1n1 mklabel gpt
Step3:
在当前unbutu环境下,对从盘建立一个分区,并设置为ESP分区; 假定目标从盘为/dev/nvme1n1
Sudo parted /dev/nvme1n1 mkpart primary 1M 100%
Sudo parted /dev/nvme1n1 set 1 esp on
Step4:
在当前unbutu环境下,将启动img写入从盘的ESP分区; 假定目标从盘ESP分区为/dev/nvme1n1p1; (注意:dd命令会把文件系统的UUID也拷贝了,可能会造成困扰)
Sudo dd if=~/sda1.img of=/dev/nvme1n1p1
使用sudo blkid查看uuid, 进一步的,可以修改重复uuid
uuidgen | xargs tune2fs /dev/nvme1n1p1 -U
Sudo tar -xvf ~/boot.tar -C /mnt/disk_new2
Step5:
在当前ubuntu环境下,使用efibootmgr查看和添加启动项
5.1查看: efibootmgr -v
可以看出当前启动项的编号,以及各启动项所在的分区,分区UUID,和启动文件. ubuntu系统启动文件为\EFI\UBUNTU\SHIMX64.EFI
5.2 创建启动项
efibootmgr -c -d /dev/nvme1n1 -p 1 -L "new" -l '\efi\ubuntu\shimx64.efi'
Step6:
更新grub
# 挂载新分区的efi /
mount /dev/sdc3 /mnt
mount /dev/sdc1 /mnt/boot/efi
# 挂在虚拟文件系统
mount --o bind /dev /mnt/dev
mount --o bind /proc /mnt/proc
mount --o bind /sys /mnt/sys
# 切换根目录为新分区的/
chroot /mnt
# 修改对应uuid
nano /etc/fstab
nano /boot/grub/grub.cfg
在grub.cfg中只会出现根分区的uuid,所以直接用“ctrl+\”找出所有表中原根目录uuid的地方替换为新根目录uuid。
替换全部A,ctrl+x,回车
# grub安装到efi分区
grub-install /dev/sdc1
Installing for x86_64-efi platform.
Installation finished. No error reported.
#更新grub
update-grub
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-49-generic
Found initrd image: /boot/initrd.img-5.4.0-49-generic
Found linux image: /boot/vmlinuz-5.4.0-48-generic
Found initrd image: /boot/initrd.img-5.4.0-48-generic
Found Ubuntu 18.04.5 LTS (18.04) on /dev/sda7
Adding boot menu entry for EFI firmware configuration
done
# 同步
sync
# 退出根目录
exit
# 取消挂载
umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /media/ubuntu/*
umount /mnt/boot/efi
# 退出root
exit
# 重启,屏幕无信号后拔出U盘
reboot
来自 <https://pabebezz.github.io/article/2f7fc36c/>
-------------------------------------------------------------------------------------------------------------------------------------------
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /run /mnt/run
$ sudo chroot /mnt/
$ sudo mount --types=proc proc /proc
$ sudo mount --types=sysfs sys /sys
来自 <https://blog.shell909090.org/blog/archives/2881/>
-------------------------------------------------------------------------------------------------------------------------------------------
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt/$i; done
来自 <https://help.ubuntu.com/community/Grub2/Installing>
-------------------------------------------------------------------------------------------------------------------------------------------
复制MBR
dd if=/dev/sdc of=/tmp/mbr.bin bs=446 count=1
watch -n 1 pkill -USR1 -x dd
sudo update-initramfs -u
来自 <https://jiajunhuang.com/articles/2020_05_22-linux_clone_sys.md.html>
-------------------------------------------------------------------------------------------------------------------------------------------
Step6:
使用命令重启, 重启后应该就是从指定的盘引导了
shutdown -r now
-------------------------------------------------------------------------------------------------------------------------------------------
linux不需要全盘拷贝,tar, cpio, rsync可以搞定一切。最后更新grub, lilo, syslinux就可以了。
来自 <https://groups.google.com/g/shlug/c/lQL3dKtWszo>
-------------------------------------------------------------------------------------------------------------------------------------------
哪些 Linux 数据具有备份的意义:
• /etc/ 整个目录 -->“帐号与系统配置文件
• /home/ 整个目录 -->使用者主文件夹
• /var/spool/mail/ -->邮件
• /var/spoll/{at|cron}/ -->定时任务
• /boot/ -->linux核心
• /root/ -->管理员主目录
² 如果你自行安装过其他的软件,那么 /usr/local/ 或 /opt 也最好备份一下!
• /usr/local/ -->用于自我,内部,编译和维护的软件
• /opt -->用于非自我,外部,预打包的二进制/应用程序捆绑包安装区域
-------------------------------------------------------------------------------------------------------------------------------------------
备份
tar cvp --exclude=/boot/efi/* --exclude=/proc/* --exclude=/lost+found/* --exclude=/mnt/* --exclude=/sys/* --exclude=/home/* -f ~/system_backup.tar /
恢复
tar xvpf ~/system_backup.tar -C /
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
修改/etc/fstab
来自 <https://zhuanlan.zhihu.com/p/335035901>
-------------------------------------------------------------------------------------------------------------------------------------------
Grub2 命令行操作:
• Grub>ls 列出磁盘和分区,输出示例:(proc) (memd **isk) (hd0) (hd0,gpt2) (hd0,gpt1) (hd1,gpt2) (hd2,gpt1)
• Grub>ls (hd2,2) 或者ls(hd2,gpt2) 显示hd2第二分区信息,输出示例:partition hd2,2: Filesystem type ext* -Last moficication time ****, UUID **** -Partition start at ***KiB -Total Size ***KiB
• Grub>ls(hd2,2)/ 或者ls(hd2,gpt2) 列出hd2第二分区的目录,输出示例: lost+found/ boot/
• Grub>root=(hd2,2) 设置根目录为 hd2第二分区
• Grub>ls -l /boot/ 显示根目录下的boot文件夹详细信息
• Grub> linux /boot/vmlinuz-2.6.31-9-386 root=UUID=f255285a-5ad4-4eb8-93f5-4f767190d3b3
• Grub> initrd /boot/initrd.img-2.6.31-9-386
• Grub> boot
-------------------------------------------------------------------------------------------------------------------------------------------
rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found", "/backup"} --delete / /backup
mount -o remount,ro /tmp
-------------------------------------------------------------------------------------------------------------------------------------------
Failed to start Process error reports when automatic reporting is enabled
sudo nano /etc/default/apport
Then change 1 to 0
来自 <https://vitux.com/how-to-disable-enable-automatic-error-reporting-in-ubuntu/>
-------------------------------------------------------------------------------------------------------------------------------------------
登陆窗口不可见:
• You can get to a text terminal using alt-ctrl-F1.
• Check the LightDM logs in /var/log/lightdm.
来自 <https://wiki.ubuntu.com/LightDM>
edit the /etc/X11/default-display-manager file and set the new display manager.
来自 <https://tecadmin.net/switching-display-manager-in-ubuntu-gdm-lightdm-sddm/>
-------------------------------------------------------------------------------------------------------------------------------------------
无法找到/home/用户名的处理方法: 复制~/.pam_environment