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
    • 最新
    • 标签
主页 / server / 问题 / 953322
Accepted
Gerald Schneider
Gerald Schneider
Asked: 2019-02-12 02:04:30 +0800 CST2019-02-12 02:04:30 +0800 CST 2019-02-12 02:04:30 +0800 CST

预置自动分区

  • 772

多年来,我一直在使用以下partman设置来自动安装 VM:

d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman/alignment string "optimal"
d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
              64 512 300% linux-swap                          \
                      $primary{ }                             \
                      method{ swap } format{ }                \
              .                                               \
              500 10000 1000000000 ext4                       \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
              .
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

这会在开始时创建一个小的交换分区,并将磁盘的其余部分用作根分区。当我需要增加虚拟磁盘的大小时,这很好用并且可以轻松扩展分区。

现在我正在尝试调整这个配方来安装许多相同的裸机服务器。为此,我只是切换了分区并将大小设置为具有 256GB RAM 和 460GB 系统磁盘(硬件 RAID1 中的 SSD,但这不重要)的机器更合理的值:

  boot-root ::                                            \
          32768 65536 1000000000 ext4                     \
                  $primary{ } $bootable{ }                \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  mountpoint{ / }                         \
          .                                               \
          16384 16384 65536 linux-swap                    \
                  $primary{ }                             \
                  method{ swap } format{ }                \
          .                                                 

其余partman*指令是相同的。

据我了解文档(以及类似的其他帖子),这应该创建一个几乎跨越整个磁盘的大根分区,最后有一个 16 到 64 GB 的交换分区。

好吧,它没有。它创建一个 450MB 的分区,然后是一个 460GB 的交换分区。

在此处输入图像描述

当我使用虚拟机的预种子安装同一台机器时,分区会按照预种子文件中的定义正确创建:

在此处输入图像描述

那么,我在裸机机的配方上做错了什么?

如果重要,安装 iso 是基于 Ubuntu 16.04.5 服务器 iso。

fdisk /dev/sda和的输出parted /dev/sda print:

在此处输入图像描述

我尝试了更多变体:

# this belongs to tha last block, as suggested by @Peter
#d-i partman-basicfilesystems/choose_label string gpt
#d-i partman-basicfilesystems/default_label string gpt
#d-i partman-partitioning/choose_label string gpt
#d-i partman-partitioning/default_label string gpt
#d-i partman/choose_label string gpt
#d-i partman/default_label string gpt

d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
##########################
              65536 1 -1 ext4                             \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
              .                                               \
              65536 65536 65536 linux-swap                    \
                      $primary{ }                             \
                      method{ swap } format{ }                \
              .                                               
##########################
#              1 1 -1 ext4                             \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext4 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              65536 65536 65536 linux-swap                    \
#                      $primary{ }                             \
#                      method{ swap } format{ }                \
#              .                                               
##########################
#              32768 50 5242880 ext4                             \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext4 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              16384 100 65536 linux-swap                    \
#                      $primary{ }                             \
#                      method{ swap } format{ }                \
#              .                                               
##########################
# use along with the annoted partman-* directives above
#              538 538 1075 free                           \
#                      $iflabel{ gpt }                     \
#                      $reusemethod{ }                     \
#                      method{ efi }                       \
#                            format{ }                     \
#              .                                           \
#              1 1 -1 ext4                                 \
#                  $primary{ } $bootable{ }                \
#                  method{ format } format{ }              \
#                  use_filesystem{ } filesystem{ ext4 }    \
#                  mountpoint{ / }                         \
#              .                                           \
#              65536 65536 65536 linux-swap                \
#                  $primary{ }                             \
#                  method{ swap } format { }               \              .                         
#              .

没有什么区别,生成的根分区总是只有 453MB。

ubuntu
  • 2 2 个回答
  • 6572 Views

2 个回答

  • Voted
  1. Peter
    2019-02-20T12:52:38+08:002019-02-20T12:52:38+08:00

    特别说明

    没有提到是否有 bios_grub、ESP、GPT 或 MBR,或者固件使用哪种方法。使用 GPT 时,您需要一个或另一个(或两者)。因此,安装程序会根据一些未知标准为您选择,可能与磁盘大小有关。要强制使用 GPT,您可以设置如下内容(我记得不一定总是有效,尽管使用了我在这里找到的所有 6 种方法):

    d-i partman-basicfilesystems/choose_label string gpt
    d-i partman-basicfilesystems/default_label string gpt
    d-i partman-partitioning/choose_label string gpt
    d-i partman-partitioning/default_label string gpt
    d-i partman/choose_label string gpt
    d-i partman/default_label string gpt
    

    例如,对于 bios_grub,您可以设置:

        1 1 1 free                          \
            $primary{}                      \
            $bios_boot{}                    \
            method{ biosgrub }              \
        .                                   \
    

    (我没有放在$iflabel{ gpt }那里,这可能很有用,因为如果出现任何问题并且您稍后将其从 MBR 转换为 GPT,您需要保留空间)

    对于 EFI(从Preseeding debian install中无耻地复制和粘贴- EFI并且没有删除 iflabel):

        538 538 1075 free
            $iflabel{ gpt }
            $reusemethod{ }
            method{ efi }
            format{ } .
    

    并回答这个问题

    要使用余数,请使用-1,而不是任意大的数字,然后将其他数字设置为虚假值,例如 1。而且我也不相信范围......我只是为不同的硬件使用不同的预置文件,而不是 Debian 的自动魔法。所以我把它设置为只有65536,而不是一个范围。

    d-i partman-auto/expert_recipe string               \
        boot-root ::                                    \
            1 1 -1 ext4                                 \
                $primary{ } $bootable{ }                \
                method{ format } format{ }              \
                use_filesystem{ } filesystem{ ext4 }    \
                mountpoint{ / }                         \
            .                                           \
            65536 65536 65536 linux-swap                \
                $primary{ }                             \
                method{ swap } format { }               \
            .
    

    并确保它确实在使用您的新预种子文件。我喜欢将它放在 netboot initrd 映像中,因为它不依赖于网络等,并且发现效果很好。如果您更改了上述内容,但它不起作用,请再次检查。如果是 http/tftp,请检查 http/tftp 日志或 tcpdump。或者做一个你肯定会注意到的改变,看看它是否做到了。

    如果是 initrd,请查看 initrd 并查看它是否真的存在。例如:

    cd emptydir
    gunzip -c path_to_initrd | cpio -i
    # It must be named "preseed.cfg" if it's in the initrd.
    cat preseed.cfg
    
    • 9
  2. Best Answer
    Gerald Schneider
    2019-02-21T23:41:04+08:002019-02-21T23:41:04+08:00

    TL;博士:

    安装了错误的图像。感谢@Peter 指点我。

    长篇大论:

    在 Peters 发表评论后,我重新检查了我的整个 iso 构建管道、.seed 文件、isolinux txt.cfg、自定义引导徽标、构建 .iso 的 bash 脚本,没有发现任何问题。我再次更改了.preseed文件,这次添加了应该挂载为的第三个分区/var,重建映像,单击服务器BMC界面中的“卸载”和“挂载”,重新启动,运行安装,猜猜是什么,和以前一样的布局,没有额外的分区。变得可疑我检查了/target/etc/issue:

    Ubuntu 16.04.1 LTS
    

    那应该是 16.04.5。在我的安装测试期间,我完全重新创建了 Ubuntu .iso,它基于 16.04.5 而不是之前的 16.04.1(导致不同的 iso 名称,因为 .iso 文件包含版本号)。

    我有两种在 SuperMicro 板上安装 ISO 映像的方法。我可以连接到单个 BMC 并在那里安装 ISO,或者我可以使用 SuperMicro Server Manager 一次在多台机器上安装 ISO。我有很多机器要安装,所以我自然使用了SSM方法并将ISO安装在任何地方。

    更改为 16.04.5 后,我只在我正在处理的主机的 BMC 中直接更改了文件名并重新安装了它。我只得到There is an iso file mounted.确认,没有更多细节。

    单击Save挂载映像页面上的按钮会导致此错误消息:

    在此处输入图像描述

    我没有这样输入路径,这是由服务器管理器设置的,所以我认为它是正确的。显然不是。在此之后,我使用服务器管理器直接在 BMC 上重新安装了 .iso 文件,然后瞧...

    在此处输入图像描述

    正是我为测试而配置的。

    故事的寓意:我浪费了大约一周的时间(以及你们乐于助人的一些宝贵时间),只是因为廉价 BMC 界面的愚蠢。请记住这一点,并在遇到无法解释的问题时重新检查所有内容。

    • 3

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve