AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1073470
Accepted
Uyghur Lives Matter
Uyghur Lives Matter
Asked: 2018-09-09 12:46:01 +0800 CST2018-09-09 12:46:01 +0800 CST 2018-09-09 12:46:01 +0800 CST

将 Grub 完全移动到新分区

  • 772

如何将 Grub 完全移动到新分区?当我安装 Ubuntu (Kubuntu) 时,我只为/boot分区分配了 256 MiB,这似乎还不够。每次安装新内核时,由于空间不足,安装会中途失败,因此我必须手动干预。因此,我试图将 grub 从我的旧引导分区 . 移动/dev/sdb5到我的新 512 MiB 分区/dev/sdb7.

我编辑/etc/fstab点使用新的引导分区。

# /boot was on /dev/sdb5 during installation
#UUID=f1fcbfbe-7943-4e48-9796-8d0c42076c0b      /boot   ext4    defaults        0       2
# /boot is now on /dev/sdb7
UUID=70d8be3a-6b6c-4722-ab0d-e79d93e6dd1c       /boot   ext4    defaults        0       2

我卸载了/boot/efi( /dev/sdb2) 和/boot( /dev/sdb5)。然后挂载/dev/sdb7为/boot,重新挂载/boot/efi,重新挂载/dev/sdb5为/mnt/boot。

我跑了:

$ sudo grub-install /dev/sdb7
Installing for x86_64-efi platform.
Installation finished. No error reported.

和:

$ sudo update-grub
Generating grub configuration file ...
Found Windows Boot Manager on /dev/sdb2@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done

但是,Linux 映像缺少/boot:

$ ls -1 /boot
efi
grub
lost+found

虽然旧/boot有:

$ ls -1 /mnt/boot/
abi-4.15.0-32-generic
abi-4.15.0-33-generic
config-4.15.0-32-generic
config-4.15.0-33-generic
efi
grub
initrd.img-4.15.0-33-generic
lost+found
memtest86+.bin
memtest86+.elf
memtest86+_multiboot.bin
retpoline-4.15.0-32-generic
retpoline-4.15.0-33-generic
System.map-4.15.0-32-generic
System.map-4.15.0-33-generic
vmlinuz-4.15.0-33-generic

我一定是错过了一步。执行此操作的正确过程是什么?我是否缺少重建 Linux 映像的命令?

注意:我想/boot成为一个单独的分区的/原因是因为/它是一个 LUKS 加密的 ext4 分区。


输出sudo fdisk -l:

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: CFE364AE-6B98-4A85-BE10-7E8A8833426F

Device         Start       End   Sectors   Size Type
/dev/sda1       2048 976762879 976760832 465.8G Microsoft basic data
/dev/sda2  976762880 977287167    524288   256M Linux filesystem


Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 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: 1AB601E6-CACA-4A3F-828A-A334CC3564DF

Device          Start        End    Sectors   Size Type
/dev/sdb1        2048     923647     921600   450M Windows recovery environment
/dev/sdb2      923648    1128447     204800   100M EFI System
/dev/sdb3     1128448    1161215      32768    16M Microsoft reserved
/dev/sdb4     1161216 1534093311 1532932096   731G Microsoft basic data
/dev/sdb5  1534093312 1534617599     524288   256M Linux filesystem
/dev/sdb6  1534617600 1952475135  417857536 199.3G Linux filesystem
/dev/sdb7  1952475136 1953523711    1048576   512M Linux filesystem




Disk /dev/mapper/sdb6_crypt: 199.3 GiB, 213940961280 bytes, 417853440 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

输出lsblk -lf:

NAME       FSTYPE      LABEL          UUID                                 MOUNTPOINT
sda                                                                        
sda1       ntfs        Extra Disk     54186D8E186D7042                     
sda2       ext4                       fae6b821-6644-4883-a2f1-da5c42485431 
sdb                                                                        
sdb1       ntfs        Recovery       44F21BC7F21BBC5C                     
sdb2       vfat                       941C-5A1E                            /boot/efi
sdb3                                                                       
sdb4       ntfs                       6C32289F3228706E                     
sdb5       ext4        Linux Boot Old f1fcbfbe-7943-4e48-9796-8d0c42076c0b /boot
sdb6       crypto_LUKS                b2d73541-783b-4336-a62c-1e11d0cc2b47 
sdb7       ext4        Linux Boot     70d8be3a-6b6c-4722-ab0d-e79d93e6dd1c 
sr0                                                                        
sdb6_crypt ext4        Linux Root     1e8b2b29-1857-4b38-84ee-d3c386f5085e /
grub2 boot 18.04
  • 3 3 个回答
  • 10881 Views

3 个回答

  • Voted
  1. Best Answer
    UnKNOWn
    2018-10-27T12:45:41+08:002018-10-27T12:45:41+08:00

    我可以通过以下方式实现它。

    下面是我将/boot分区从 sda7 更改为 sda9时的实际命令行视图

    kubuntu@kubuntu:~$ sudo blkid
    /dev/sda2: UUID="BCB3-3DA0" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="e5db3aba-af70-4112-8858-1aff620887a0"
    /dev/sda3: UUID="F2B6E7A8B6E76C13" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="02c16852-6715-42db-ac16-c9007d86934a"
    /dev/sda4: UUID="2d2846e3-4382-4dec-bad3-ec27c9f3311d" TYPE="ext4" PARTUUID="67dd28fb-4a80-4deb-aa25-8f1b93f1a4ba"
    /dev/sda5: LABEL="SAS DI" UUID="605EEA015EE9D038" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="82da16ec-8c57-41b8-9f8b-e2d2bdc3b183"
    /dev/sda6: LABEL="MADURI" UUID="C4F8CC63F8CC54F8" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="6c75ef1c-376c-4ede-9072-3a888b0bf94d"
    /dev/sda7: UUID="4eab37c8-7d22-4580-b53e-47e8768318c8" TYPE="ext4" PARTUUID="8d49090a-7495-4f10-a83d-3e4f4abca525"
    /dev/sda8: UUID="e569a993-a701-4b1f-acc1-ba0e862ba0de" TYPE="ext4" PARTLABEL="Kubuntu 18.04" PARTUUID="af772c38-570b-4e9b-a5ce-ca26b28bec1a"
    /dev/sda9: UUID="360b1c4c-b6f8-49fd-93e2-c9c086e95e4c" TYPE="ext4" PARTUUID="3327a153-0c8a-46c1-a23d-ef4774564875"
    /dev/loop0: TYPE="squashfs"
    /dev/sda1: PARTLABEL="Microsoft reserved partition" PARTUUID="c2ca0fe9-67db-468a-bf0f-8d9ce78cf129"
    /dev/sdb1: UUID="2018-07-25-03-28-48-00" LABEL="Kubuntu 18.04.1 LTS amd64" TYPE="iso9660" PTUUID="418c5dc0" PTTYPE="dos" PARTUUID="418c5dc0-01"
    /dev/sdb2: SEC_TYPE="msdos" UUID="0D5F-1DB6" TYPE="vfat" PARTUUID="418c5dc0-02"
    kubuntu@kubuntu:~$ sudo mount /dev/sda8 /mnt
    kubuntu@kubuntu:~$ sudo mount /dev/sda9 /mnt/boot
    kubuntu@kubuntu:~$ sudo chroot /mnt
    root@kubuntu:/# sudo nano /etc/fstab
    sudo: unable to resolve host kubuntu: Resource temporarily unavailable
    root@kubuntu:/# exit
    exit
    kubuntu@kubuntu:~$ sudo mkdir /mnt/home/OBP
    kubuntu@kubuntu:~$ sudo mount /dev/sda7 /mnt/home/OBP
    kubuntu@kubuntu:~$ sudo cp -r /mnt/home/OBP/* /mnt/boot/
    kubuntu@kubuntu:~$ sudo mount /dev/sda2 /mnt/boot/efi
    kubuntu@kubuntu:~$ for i in /sys /proc /dev /run; do sudo mount --bind "$i" "/mnt$i"; done
    kubuntu@kubuntu:~$ sudo chroot /mnt                                                                                                                                                             
    root@kubuntu:/# update-grub                                                                                                                                                                     
    Generating grub configuration file ...                                                                                                                                                          
    Found linux image: /boot/vmlinuz-4.15.0-29-generic                                                                                                                                              
    Found initrd image: /boot/initrd.img-4.15.0-29-generic                                                                                                                                          
    grub-probe: error: cannot find a GRUB drive for /dev/sdb1.  Check your device.map.                                                                                                              
    Found Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi                                                                                                                        
    Found Ubuntu 18.10 (18.10) on /dev/sda4                                                                                                                                                         
    Adding boot menu entry for EFI firmware configuration                                                                                                                                           
    done                                                                                                                                                                                            
    root@kubuntu:/# grub-install /dev/sda                                                                                                                                                           
    Installing for x86_64-efi platform.                                                                                                                                                             
    Installation finished. No error reported.                                                                                                                                                       
    root@kubuntu:/# update-grub                                                                                                                                                                     
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-4.15.0-29-generic
    Found initrd image: /boot/initrd.img-4.15.0-29-generic
    grub-probe: error: cannot find a GRUB drive for /dev/sdb1.  Check your device.map.
    Found Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi
    Found Ubuntu 18.10 (18.10) on /dev/sda4
    Adding boot menu entry for EFI firmware configuration
    done
    root@kubuntu:/# ls -1 /boot
    abi-4.15.0-29-generic
    config-4.15.0-29-generic
    efi
    grub
    initrd.img-4.15.0-29-generic
    lost+found
    memtest86+.bin
    memtest86+.elf
    memtest86+_multiboot.bin
    retpoline-4.15.0-29-generic
    System.map-4.15.0-29-generic
    vmlinuz-4.15.0-29-generic
    root@kubuntu:/# lsblk -lf
    NAME  FSTYPE   LABEL                     UUID                                 MOUNTPOINT
    loop0 squashfs                                                                
    sda                                                                           
    sda1                                                                          
    sda2  vfat                               BCB3-3DA0                            /boot/efi
    sda3  ntfs                               F2B6E7A8B6E76C13                     
    sda4  ext4                               2d2846e3-4382-4dec-bad3-ec27c9f3311d 
    sda5  ntfs     SAS DI                    605EEA015EE9D038                     
    sda6  ntfs     MADURI                    C4F8CC63F8CC54F8                     
    sda7  ext4                               4eab37c8-7d22-4580-b53e-47e8768318c8 /home/OBP
    sda8  ext4                               e569a993-a701-4b1f-acc1-ba0e862ba0de /
    sda9  ext4                               360b1c4c-b6f8-49fd-93e2-c9c086e95e4c /boot
    sdb   iso9660  Kubuntu 18.04.1 LTS amd64 2018-07-25-03-28-48-00               
    sdb1  iso9660  Kubuntu 18.04.1 LTS amd64 2018-07-25-03-28-48-00               
    sdb2  vfat     Kubuntu 18.04.1 LTS amd64 0D5F-1DB6                            
    sr0                                                                           
    root@kubuntu:/# exit
    exit
    kubuntu@kubuntu:~$ shutdown now
    

    登录“试用 Kubuntu”之前需要了解的事项。

    1. 根分区;就我而言,它是/dev/sda8。
    2. EFI分区;就我而言,它是/dev/sda2。
    3. /boot旧分区;就我而言,它是/dev/sda7。
    4. 新/boot分区;就我而言,它是/dev/sda9。
    5. 硬盘盘符;就我而言,它是 sda。

    我要将启动分区从 sda7 更改为 sda9

    在此处输入图像描述

    使用 Kubuntu 18.04 “试用 Kubuntu”会话登录。

    打开 Konsole 并运行命令

    1. sudo blkid并复制将成为新 /boot 分区的分区的 UUID,即 sda9

    2. sudo mount /dev/sda8 /mnt# 挂载根分区

    3. sudo mount /dev/sda9 /mnt/boot# 挂载新的 /boot 分区

    4. sudo chroot /mnt

    5. nano /etc/fstab# 打开 fstab 文件

    通过箭头键手动向下滚动到文件/boot中的 UUID 部分。/etc/fstab

    通过删除旧引导分区的 UUID 粘贴复制的 UUID(来自步骤 1)。

    要保存文件,请按 Ctrl+ X,Y然后Enter

    1. exit# 退出 chroot

    在挂载/boot/efi分区之前,我们必须将旧引导分区中的数据复制到新引导分区。

    1. sudo mkdir /mnt/home/OBP# 创建用于挂载旧引导分区的文件夹
    2. sudo mount /dev/sda7 /mnt/home/OBP# 旧引导分区挂载
    3. sudo cp -r /mnt/home/OBP/* /mnt/boot/
    4. sudo mount /dev/sda2 /mnt/boot/efi
    5. for i in /sys /proc /dev /run; do sudo mount --bind "$i" "/mnt$i"; done
    6. sudo chroot /mnt
    7. update-grub
    8. grub-install /dev/sda
    9. update-grub
    10. exit
    11. shutdown now

    重新启动系统,您现在可以删除旧的引导分区。

    在此处输入图像描述

    • 7
  2. WinEunuuchs2Unix
    2018-10-29T14:55:08+08:002018-10-29T14:55:08+08:00

    256 MB/boot和 200 GB/

    你有很多空间,但/boot目录是“空间挑战”。我建议/boot从sdb5转到/on sdb6。

    您当前移动到只有 512 MB/boot的新分区的计划似乎有限。如果我正在测试多个内核,sdb7有时我可能会有很多 GB。/boot

    如何移动/boot到/

    这里已经有答案了:

    对的,这是可能的。也不容易。如果您打算移动单独的 /boot 分区和/或 / 分区,则应首先考虑更改 fstab 条目。

    如果要将文件移动到新分区,请不要忘记cp -p在复制时使用以保留权限。然后调整/etc/fstab您将使用的新 UUID 分区。blkid /dev/sdXn您可以通过运行其中 X 是驱动器名称和 n 个分区数来获取分区 uuid 。

    您还可以使用 blkid 将标签附加到您的分区,然后通过标签进行挂载,这更容易阅读man blkid以了解更多信息。

    更改分区并调整 /etc/fstab 后,您应该运行update-grub- available on Debian/Ubuntu 脚本或grub-mkconfig -o /boot/grub/grub.cfg生成新的配置文件,然后将 grub 重新安装到您启动机器人的第一个硬盘中。grub-install --recheck /dev/sdb

    当然不要忘记,在 /mnt 上复制挂载一个新的 / 或 /boot 分区并在复制所有文件后将它们挂载为 / 和 /boot chroot ,然后才运行更新 grub 如果你希望事情正确完成.

    • 3
  3. metallic
    2018-10-27T06:07:32+08:002018-10-27T06:07:32+08:00

    所以,我想你只需要将所有内核文件从旧目录移动/复制到新目录,然后更新 grub。尝试:sudo cp /mnt/boot/* /boot && sudo update-grub

    • 1

相关问题

  • 如果旧版 grub 安装在引导分区扇区而不是 MBR 中,如何将 grub 更新为 grub2?

  • 更改 Wubi 的启动顺序

  • 如何在 Ubuntu 启动时显示或隐藏启动消息?

  • 如何避免启动时出现“S to Skip”消息?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve