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
    • 最新
    • 标签
主页 / user-14909

Michael Prescott's questions

Martin Hope
Michael Prescott
Asked: 2023-10-21 22:56:20 +0800 CST

如何重新制作 Ubuntu Live ISO 以修改 grub.cfg 以从本地 cloud-init 用户数据自动安装

  • 6

我正在使用 Intel 和 M1 Mac,并在 VMWare Fusion VM 中运行 Ubuntu Server。我目前正在使用最新的 ubuntu-23.10-live-server-amd64.iso 和 ubuntu-23.10-live-server-arm64.iso。我可以让一切按照基于 Intel 的系统的需要工作,但是当使用 arm64.iso 时,它不包含/boot.catalog和/boot/grub/i386-pc/eltorito.img。因此,在修改 grub.cfg 后,我无法重新创建可引导 ISO。

我从各种来源拼凑了一些信息,从这里开始: https: //ubuntu.com/server/docs/install/autoinstall-quickstart,但还没有找到或理解足够的信息来填补最后一块拼图对于我的arm64平台。另外,我无法使用 livefs-edit,因为它依赖于 'losetup',而 macOS 上不提供该功能;然而,xorriso 在 Intel 上 100% 解决了这个问题,我想……如果我能解决启动映像问题,那么在 M1 上基本上可以解决这个问题。

对于 amd64.iso 有效:

  1. 提取原始 ISO
  2. 创建用户数据和元数据文件
  3. 修改 grub.cfg 以添加自动安装菜单项
  4. 使用以下内容重新打包 ISO:
    xorriso -as mkisofs \
    --modification-date='2021101314195100' \
    --grub2-mbr \
    --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:"${ORIGINAL_ISO_PATH}" \
    --protective-msdos-label \
    -partition_cyl_align off \
    -partition_offset 16 \
    --mbr-force-bootable \
    -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b \
    --interval:local_fs:2470124d-2478587d::"${ORIGINAL_ISO_PATH}" \
    -part_like_isohybrid \
    -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
    -c '/boot.catalog' \
    -b '/boot/grub/i386-pc/eltorito.img' \
    -no-emul-boot \
    -boot-load-size 4 \
    -boot-info-table \
    --grub2-boot-info \
    -eltorito-alt-boot -e \
    '--interval:appended_partition_2_start_617531s_size_8464d:all::' \
    -no-emul-boot \
    -boot-load-size 8464 \
    -isohybrid-gpt-basdat \
    -o ubuntu-autoinstall.iso \
    -V 'Ubuntu autoinstall' ${EXTRACTED_ISO_PATH}

更新 根据托马斯·施密特的建议,我查询了该提案并修改为使用:

xorriso -as mkisofs \
--modification-date='2023101104561500' \
-partition_cyl_align off \
-partition_offset 16 \
-append_partition 2 0xef --interval:local_fs:4615776d-4629311d::"${ORIGINAL_ISO_PATH}" \
-G --interval:local_fs:0s-15s:zero_mbrpt:"${ORIGINAL_ISO_PATH}" \
-iso_mbr_part_type 0xcd \
-c '/boot/boot.cat' \
-e '--interval:appended_partition_2_start_1153944s_size_13536d:all::' \
-no-emul-boot \
-boot-load-size 13536 \
-output ubuntu-autoinstall.iso \
extracted-iso/

结果是:

GNU xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
Drive current: -outdev 'stdio:ubuntu-autoinstall.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 1415g free
Added to ISO image: directory '/'='/extracted-iso'
xorriso : UPDATE :     980 files added in 1 seconds
xorriso : UPDATE :     980 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 32768 bytes from file '--interval:local_fs:0s-15s:zero_mbrpt:ubuntu-23.10-live-server-amd64.iso'
libisofs: NOTE : Automatically adjusted MBR geometry to 1020/159/32
xorriso : UPDATE :  3.18% done
xorriso : UPDATE :  54.15% done
xorriso : UPDATE :  87.88% done
ISO image produced: 1300424 sectors
Written to medium : 1300424 sectors at LBA 0
Writing to 'stdio:ubuntu-autoinstall.iso' completed successfully.

在检查可启动的原始 ISO 和不可启动的新 ISO 时,我发现的唯一区别是: 在此输入图像描述

尝试启动会导致以下结果: 在此输入图像描述

我也尝试过:

xorriso -as mkisofs \
--modification-date='2023101104561500' \
-partition_cyl_align off \
-partition_offset 16 \
-append_partition 2 0xef --interval:local_fs:4615776d-4629311d::"${ORIGINAL_ISO_PATH}" \
-iso_mbr_part_type 0xcd \
-c '/boot/boot.cat' \
-e '--interval:appended_partition_2_start_1153944s_size_13536d:all::' \
-no-emul-boot \
-output ubuntu-autoinstall.iso \
extracted-iso/

我拉着头发,抓住吸管。其中大部分内容我并不完全理解,但我可以看到放置-c了引导目录。因此,为了使新 ISO 更接近原始 ISO,我使用了“c '/boot.catalog”,这让我发现了原始文件中的一个差异,如下所示: 在此输入图像描述

我怀疑有一些东西对我来说是不可见的,也许在实际的 MBR 中?只是在挖掘更多信息时推测我不太熟悉的事情。

感谢 Thomas Shchmitt 的帮助解决了问题。接下来的步骤是将 ORIGINAL_EXTRACTED_ISO_DIR 替换为修订后的目标、新的 cloud-init 用户数据、grub.cfg 等。

case "$ARCHITECTURE" in
    "m1")
        echo "Running on M1 Mac."
        xorriso -as mkisofs \
        --modification-date='2023081005071100' \
        -partition_cyl_align off \
        -partition_offset 16 \
        -append_partition 2 0xef --interval:local_fs:4030464d-4042271d::"${ORIGINAL_ISO_FILE}" \
        -G --interval:local_fs:0s-15s:zero_mbrpt:"${ORIGINAL_ISO_FILE}" \
        -iso_mbr_part_type 0xcd \
        -c '/boot/boot.cat' \
        -e '--interval:appended_partition_2_start_1007616s_size_11808d:all::' \
        -no-emul-boot \
        -boot-load-size 11808 \
        -output ${AUTOINSTALL_ISO_FILE} \
        ${ORIGINAL_EXTRACTED_ISO_DIR}/
        ;;
    "intel")
        echo "Running on Intel Mac."
        xorriso -as mkisofs \
        --modification-date='2023081005062500' \
        --grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:"${ORIGINAL_ISO_FILE}" \
        --protective-msdos-label \
        -partition_cyl_align off \
        -partition_offset 16 \
        --mbr-force-bootable \
        -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b --interval:local_fs:4156048d-4166115d::"${ORIGINAL_ISO_FILE}" \
        -appended_part_as_gpt \
        -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
        -c '/boot.catalog' \
        -b '/boot/grub/i386-pc/eltorito.img' \
        -no-emul-boot \
        -boot-load-size 4 \
        -boot-info-table \
        --grub2-boot-info \
        -eltorito-alt-boot \
        -e '--interval:appended_partition_2_start_1039012s_size_10068d:all::' \
        -no-emul-boot \
        -boot-load-size 10068 \
        -output ${AUTOINSTALL_ISO_FILE} \
        ${ORIGINAL_EXTRACTED_ISO_DIR}/
        ;;
    *)
        echo "Unsupported architecture: $ARCHITECTURE"
        exit 1
        ;;
esac
ubuntu
  • 1 个回答
  • 91 Views
Martin Hope
Michael Prescott
Asked: 2010-02-26 08:04:18 +0800 CST

复制应用程序和脚本的“正确”位置在哪里,以便 ubuntu 上的每个用户都可以访问它们?

  • 0

我正在使用 Ubuntu 9.10 Desktop 作为平台配置构建机器。第一个用户当然是管理员是“开发人员”,然后我创建了很多用户帐户,以便人们可以访问机器上的共享和其他服务。我必须为开发人员提供对某些脚本和 SDK 的访问权限。因此,我在开发人员的主目录中创建了一个文件夹,并将其他用户添加到开发人员组。这行得通,但我认为它可能不合适。我相信可能有一个合适的、通用的地方来存储(不一定是可安装的)应用程序、脚本和其他资源,让所有用户都可以使用它们。是否有一个“正确的”目录来存储应用程序以使所有用户都可以访问它们?

linux ubuntu permissions users shares
  • 1 个回答
  • 166 Views
Martin Hope
Michael Prescott
Asked: 2010-02-25 11:51:57 +0800 CST

如何让 Ubuntu 9.10 桌面系统在启动时自动将其 IP 地址通过电子邮件发送到列表?

  • 2

标题问题说明了一切。我已经构建了一台运行 Ubuntu 9.10 Desktop (AMD 64) 的机器,并且需要它在启动时将其 IP 地址通过电子邮件发送到电子邮件地址列表。

ubuntu email bash automation boot
  • 1 个回答
  • 843 Views
Martin Hope
Michael Prescott
Asked: 2010-02-10 14:02:28 +0800 CST

使颠覆用户和密码与 Linux 用户保持同步的最佳方法是什么?

  • 3

我不确定什么是最好的,保持颠覆用户和密码与 linux 用户和密码同步,或者只是让 linux 以某种方式提供颠覆身份验证服务。

我宁愿只维护 linux 用户,因为我发现在 ubuntu 上添加和删除用户很容易。我想发出命令“sudo adduser developer”和“developer”立即可以访问颠覆存储库。

目前,我必须先创建一个 linux 用户,然后使用以下命令创建 subversion 用户:

sudo htpasswd -m /var/lib/svn/mainrepo/conf/htpasswd 开发者

有没有更好的办法?

linux ubuntu svn authentication permissions
  • 4 个回答
  • 1683 Views
Martin Hope
Michael Prescott
Asked: 2009-10-20 08:26:52 +0800 CST

如何更改文件夹而不是文件的权限?

  • 1

是否有一个简洁的 linux 命令(适用于 OSX)来更改文件夹及其所有内容的权限,但保持当前目录中的文件不变?例如:

/parent/folder1 <-更改权限
/parent/folder2 <-更改权限
/parent/folder3 <-更改权限
/parent/folder3/file1 <-更改权限
/parent/folder3/file2 <-更改权限
/parent/file1 <-不要更改权限
/parent/file2 <-不要更改权限

linux
  • 6 个回答
  • 5474 Views
Martin Hope
Michael Prescott
Asked: 2009-10-02 10:49:18 +0800 CST

Mac OS X 系统可以连接到 Samba 共享,但 Windows XP 不能

  • 3

当访问运行 Samba 的服务器时,Mac OS X 会打开一个登录窗口,提示输入用户名和密码。使用正确的用户名和密码,我可以登录和读/写共享。

使用 Windows XP 时,会打开一个类似的登录窗口,但用户名和密码似乎失败。输入两者后,我单击确定按钮,窗口闪烁并重新出现。当它重新出现时,用户名字段现在包含 SambaMachineName\username 和密码字段为空白。

我猜这是 Windows XP 访问 Samba 共享的一个常见问题,但是搜索一般窗口到 samba 问题并没有帮助。有人知道问题的原因吗?

windows
  • 6 个回答
  • 3516 Views
Martin Hope
Michael Prescott
Asked: 2009-10-02 06:44:52 +0800 CST

如何从命令行快速将大量用户添加到 Ubuntu 服务器?

  • 2

我刚刚熟悉了 adduser 的基本用法。我想消除交互/提示。因为我会经常重建这台机器,所以我想编写这个过程的脚本,或者最坏的情况是复制并粘贴一个完整的语句,将用户添加到正确的组并在一个命令中设置密码。

类似:
sudo adduser username1 password primarygroup secondarygroup,ternarygroup "full name1"
sudo adduser username2 password primarygroup secondarygroup,ternarygroup "full name2"
sudo adduser username3 password primarygroup secondarygroup,ternarygroup "full name3"
sudo adduser username4 password primarygroup secondarygroup,ternarygroup "full name4 "
...
sudo adduser username999 密码 primarygroup secondarygroup,ternarygroup "full name999"

ubuntu
  • 6 个回答
  • 6644 Views
Martin Hope
Michael Prescott
Asked: 2009-09-30 10:08:25 +0800 CST

哪个用户应该在 Ubuntu 9.04 服务器上拥有 /var/www?

  • 7

我在 Ubuntu 9.04 服务器上安装了 LAMP,默认安装的 root:root 拥有 /var/www 文件夹。当另一个服务 Hudson 无法写入该目录时,我发现了这一点。我希望我的 hudson 用户有权写入 /var/www。那么,www-data 用户应该是 /var/www 的所有者,而 hudson 应该是 www-data 组的成员,还是应该使用默认用户和组并使 hudson 成为 root 的成员?后者似乎是错误的。这就引出了一个问题,什么用户应该拥有/var/www?(对于那些比我有更多经验的人,考虑到这种情况,有没有比我见过的两种解决方案更好的方法?)

ubuntu
  • 1 个回答
  • 13154 Views
Martin Hope
Michael Prescott
Asked: 2009-08-02 13:22:24 +0800 CST

当服务器不是域成员时如何按名称访问服务器

  • 2

我已经在运行 Ubuntu 9.04 Desktop 的机器上配置了 Samba 和 LAMP 服务器,并希望确保我们网络上的其他计算机始终可以通过其名称访问该机器上的 samba 和 Web 服务。假设主机的名称是“buildmachine1”。我希望 Windows 客户端能够通过“\buildmachine1\developersproject1”或“ http://buildmachine1/websvn ” 上的 Web 服务访问 samba 共享

buildmachine1 连接到我们的 LAN,这是一个更大的 Windows 网络的一部分。这个更大的网络由生活在无法到达的星系中的超级强大的生物管理,并将他们的网络管理任务外包给生活在另一个无法到达的星系中的超级强大的生物。归根结底,buildmachine1 或任何存在/用户都有权加入 Windows 域。

我有限的经验和这个问题暗示一台机器必须是域的成员才能通过它的名称访问。所有开发人员都可以通过它的 IP 地址访问机器,但该地址会定期更改,所以如果我们将驱动器号映射到 IP 地址或配置我们的颠覆客户端通过http://192.168.99.99/svn访问存储库,我们显然IP更改时必须重新配置所有内容。

考虑到环境和平台,我们如何才能可靠地通过机器名称而不是不断变化的IP地址访问机器?

ubuntu domain-name-system samba domain
  • 5 个回答
  • 918 Views

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