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
    • 最新
    • 标签
主页 / unix / 问题

问题[boot-loader](unix)

Martin Hope
Chris Fernandez
Asked: 2023-11-22 03:14:13 +0800 CST

Uboot从SD卡启动,但无法从mmc读取信息

  • 5

我正在为 Rockchip SOQuartz CM4 设置可启动 SD 卡。

我能够为此目标构建 uboot,将其与 rootfs 映像和内核一起写入 SD 卡,加载 uboot,然后进入 uboot 终端。我正在尝试采取下一步措施,在 SD 卡上找到内核/rootfs 映像,然后启动它。

当我在主机上查看 SD 卡时,我可以看到 BOOT 分区,其中包含内核映像文件、该板的设备树 DTB 文件以及包含多个设备树覆盖 DTBO 文件的覆盖文件。SD卡还有一个squashfs格式的根文件系统分区。根据 Rockchip 文档,uboot 二进制文件已安装在第 64 扇区。

当我从这张 SD 卡启动时,我能够观察到第一阶段引导加载程序、U-Boot SPL 和 U-Boot 正确终端上的所有负载。但是,我收到几个与 SD 卡上的电压选择相关的错误。这导致我无法使用 mmc part 或 mmc info 等命令查看 SD 卡上的分区:

U-Boot 2024.01-rc2-g169c3cc4 (Nov 17 2023 - 15:01:56 -0500)

Model: Pine64 RK3566 SoQuartz with CM4-IO Carrier Board
DRAM:  2 GiB
PMIC:  RK8090 (on=0x40, off=0x00)
Core:  312 devices, 27 uclasses, devicetree: separate
MMC:   mmc@fe2b0000: 1, mmc@fe2c0000: 2, mmc@fe310000: 0
Loading Environment from nowhere... OK
In:    serial@fe660000
Out:   serial@fe660000
Err:   serial@fe660000
Model: Pine64 RK3566 SoQuartz with CM4-IO Carrier Board
Net:   eth0: ethernet@fe010000
Hit any key to stop autoboot:  0
Error: unknown compression type.
Card did not respond to voltage select! : -110
pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
scanning bus for devices...
Bus usb@fcc00000: Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus usb@fcc00000 for devices... 2 USB Device(s) found
pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
ethernet@fe010000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
phy_startup() failed: -110FAILED: -110pcie_dw_rockchip pcie@fe260000: PCIe-0 Link Fail
ethernet@fe010000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
phy_startup() failed: -110FAILED: -110=>
=> mmc info
Card did not respond to voltage select! : -110
=> mmc part
Card did not respond to voltage select! : -110
=>

出现这个错误的原因是什么?我的SD卡有问题吗?我认为我的 SD 卡没问题,因为它能够加载 U-Boot 并让我达到这一点。如果重要的话,它是 Sandisk UHS-I 16 GB SD 卡。

我应该采取哪些步骤让 U-Boot 找到我的 SD 卡分区以及安装在其中的文件?

boot-loader
  • 1 个回答
  • 37 Views
Martin Hope
x79
Asked: 2023-01-01 07:54:31 +0800 CST

在实时启动 USB 上,在哪里配置了所需的文件系统标签?

  • 5

如果我知道要搜索的措辞,我可能可以在谷歌上找到它。启动实时 USB 时,引导加载程序总是(至少对于我使用的发行版)寻找具有特定标签的文件系统。我想知道在哪里可以找到这个

  1. 我可以设置标签并提取 ISO,而无需使用 Rufus 或 Etcher 和
  2. 这样也许我可以修改它并从同一个 USB 安装多个发行版
boot-loader
  • 1 个回答
  • 26 Views
Martin Hope
Shan-Desai
Asked: 2022-09-17 01:03:53 +0800 CST

syslinux 引导加载程序无法找到通过 Docker 容器制作的自定义可引导映像的 initrd.img

  • 0

描述

作为一个附带项目,我正在尝试使用Hashicorp Packer和Docker从 Docker 容器创建可启动磁盘映像。

Hashicorp Packer通常负责启动 docker 容器并在其中执行任务,然后创建文件系统 tarball 或使用容器创建图像文件等。

这个怎么运作

  1. 我使用ubuntu:focaldocker 容器

  2. 使用这个 docker 容器并在其上安装一个 Kernel / Systemd:

     apt-get update && apt-get install -y --no-install-recommends linux-image-virtual systemd-sysv
    
  3. 创建容器的 tarball,其中现在包含步骤 2 中的内核、initrd 和系统

  4. 在主机上解压缩 tarball 以便在创建映像文件时使用它

  5. 启动另一个ubuntu具有权限的容器并将工作目录挂载到其中以创建可启动映像文件。

此时,我依靠下面的 bash 脚本为我创建图像:

set -e
echo "[Install APT dependencies]"
DEBIAN_FRONTEND=noninteractive apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y extlinux fdisk qemu-utils

echo "[Create disk image of 1GB]"
dd if=/dev/zero of=/os/${DISTR}.img bs=$(expr 1024 \* 1024 \* 1024) count=1

blue "[Make partition]"
sfdisk /os/${DISTR}.img < /os/config/partition.txt

echo "\n[Format partition with ext4]"
losetup -D
LOOPDEVICE=$(losetup -f)
echo -e "\n[Using ${LOOPDEVICE} loop device]"
losetup -o $(expr 512 \* 2048) ${LOOPDEVICE} /os/${DISTR}.img
mkfs.ext4 ${LOOPDEVICE}

echo "[Copy ${DISTR} directory structure to partition]"
mkdir -p /os/mnt
mount -t auto ${LOOPDEVICE} /os/mnt/
cp -R /os/${DISTR}.dir/. /os/mnt/


echo "[Setup extlinux]"
extlinux --install /os/mnt/boot/
cp /os/config/syslinux.cfg /os/mnt/boot/syslinux.cfg

echo "[Unmount]"
umount /os/mnt
losetup -D

echo_blue "[Write syslinux MBR]"
dd if=/usr/lib/syslinux/mbr/mbr.bin of=/os/${DISTR}.img bs=440 count=1 conv=notrunc

DISTR上面脚本中ubuntu的是ubuntu.dir解压后的 tarball 球,它被安装到容器中,以便能够将其复制到安装的分区。

进步

目前我已经成功地为ubuntu. 创建的存储库可以在这里找到

但是,在尝试使用以下命令启动映像时qemu-system-x86_64:

sudo qemu-system-x86_64 -drive file=ubuntu.img,index=0,media=disk,format=raw 

我收到以下错误: 初始化错误 1

引导加载程序的相应syslinux.cfg内容是:

DEFAULT linux
  SAY Now booting the kernel from SYSLINUX...
 LABEL linux
  KERNEL /boot/vmlinuz
  INITRD /boot/initrd.img-5.4.0-125-generic
  APPEND ro root=/dev/sda1

其他更改

我尝试更新syslinux.cfg到

DEFAULT linux
  SAY Now booting the kernel from SYSLINUX...
 LABEL linux
  KERNEL /boot/vmlinuz
  APPEND ro root=/dev/sda1 initrd=/boot/initrd.img

但是我得到了同样的错误,尽管/boot/initrd.img没有找到错误信息。

我目前在我身边缺少什么以使initrd.img引导加载程序可以发现。

我尝试cp -dR /os/ubuntu.dir/. /os/mnt在 bash 脚本中使用以确保在复制时保留符号链接。

我还确保查看符号链接文件是否存在于它存在initrd.img的已安装分区中,符号链接文件的源也是如此,例如/os/mnt/bootreadlink -f /os/mnt/boot/initrd.img

来源

iximiuz blogpost on docker-to-bootable devices PockerISO

docker boot-loader
  • 1 个回答
  • 14 Views
Martin Hope
flopp
Asked: 2021-11-26 22:22:54 +0800 CST

如何在 rEFInd 上编辑默认引导命令行选项?

  • 0

当我尝试通过 rEFInd 启动 Linux (Debian 10) 时,它会在 initramfs shell 中启动。它找不到根。但是当我通过 F2 编辑 cmdline 启动选项并手动设置 root (root=dev/sda5) 时,它启动得很好。

问题的根源是 Windows。在我通过 SATA 将旧的故障硬盘连接到 PC 后,从中复制文件并尝试关闭 PC Windows 8.1 显示一些与 NTFS 故障相关的错误。它重新启动并开始“修复”并覆盖 rEFInd。

我从 Debian livecd 引导到 chroot 安装系统并重新安装了 rEFInd。

我尝试了 update-initramfs,但它没有用

debian boot-loader
  • 1 个回答
  • 310 Views
Martin Hope
Frank
Asked: 2021-09-21 09:50:14 +0800 CST

根据主引导记录,GRUB 阶段 2 在我的可引导紧凑型闪存上的什么位置?

  • 0

我试图了解 GRUB 阶段 2 在我的可启动紧凑型闪存上的位置。下面是针对紧凑型闪存的 MBR(前 512 个字节)的映像运行的文件命令的输出。

它表示第 2 阶段地址是 0x2000,或十进制 8192,这将把它放在第 16 个扇区(每个扇区 8192 字节/512 字节)。

我认为引导加载程序的第二阶段应该位于 VBR 或 PBR 的可引导分区中。如果是这种情况,那么我希望它的地址是 0x100000,这是 2048 扇区的可引导分区的开始。(2048 个扇区 x 512 字节 = 1048576 = 0x100000)

那么在下面的输出中,0x2000 的阶段 2 地址和 0x200 的阶段 2 段是什么意思?

[centos@centos6 ~]$ file SQFlash_MBR
SQFlash_MBR: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3,
stage2 address 0x2000, stage2 segment 0x200;
partition 1: ID=0x83, active, starthead 1, startsector 2048, 1880064 sectors, code offset 0x48
[centos@centos6 ~]$
grub2 boot-loader
  • 1 个回答
  • 172 Views
Martin Hope
Sudarshan
Asked: 2020-03-01 20:13:15 +0800 CST

如何解决chroot。Bin /bash 找不到文件或目录

  • 0

这就是我一直在尝试做的 Windows 更新后,grub bootloader 没有出现。

所以我遵循了从

https://docs.parrotlinux.org/trbl/trbl-grub/#3-now-you-have-to-mount-the-partitions

所以 parrrotlinux.org 中提到的步骤:

mount /dev/sda1 /mnt
mount --bind /proc/ mnt/proc   // used mkdir to create proc, sys, dev on /mnt
mount --bind /sys /mnt/sys
mount --bind /dev /mnt/dev
if u use EFI partition:
mount /dev/sda1 /mnt/boot/efi // if mount point dosent exist, then mkdir /mnt/boot | mkdir /mnt/boot/efi
chroot /mnt  
grub-install /dev/sda
exit

而且我在更改根目录时遇到了问题(图片描述了一切)。

我是新手,所以请给我详细的步骤来解决这个问题。

PS我在这个平台上提到过类似的问题,但没有一个能解决我的问题。

    mount /dev/sda1 /mnt
    ls /mnt 
# boot   dev   EFI   proc   run   sys  'System Volume Information'
linux boot-loader
  • 1 个回答
  • 2043 Views
Martin Hope
pts
Asked: 2020-01-10 06:25:14 +0800 CST

用于启动 Debian 的 QNAP NAS 内部存储空间大小

  • 1

我刚刚下载了 QNAP QTS操作系统 4.3.6 版。它似乎包含 amd64 Linux 内核 4.2.8、initrd 和根文件系统、glibc 2.21、Apache 2.4.37、PHP 5.6.38、没有 Perl、Python 2.7.17rc1、BusyBox 1.24.1、rsync 3.0.7、Bash 3.2。 57,tar 1.22 等,(其中一些)用 GCC 4.9.2 编译。

下载的固件文件大小为 208 MiB,完全递归解压后为 582 MiB,使用 7z 压缩后为 148 MiB。(内核为 6.88 MiB,initrd 为 15.69 MiB,均已压缩。)

因此,为了能够运行 QTS 操作系统,QNAP 设备需要至少 582 MiB 的存储空间。

我的问题:

  1. QNAP NAS(如TS-251+)运行 QTS 操作系统时,哪个存储设备包含启动和根文件系统?它是 SATA HDD 之一,还是有其他内部存储设备,例如闪存(或 SSD)?(请注意,我只对大小至少为 582 MiB 的设备感兴趣,因此我不想要只包含引导加载程序的较小闪存。)

  2. 如果我想在 QNAP NAS TS-251+ 上安装 Debian(作为 QTS 的替代品运行),我可以将它安装到内部存储设备上,如果 NAS 包含 0 个 SATA 设备,它会启动和运行吗?ext4 boot+root 文件系统有多少内部存储空间可用?

  3. 我必须从哪些选项启动 Debian?我猜这些:内部存储(如果有)、SATA HDD 或 SSD、外部 USB 存储。是否还有其他选项,例如额外的 SD 卡或非 SATA SSD?

debian boot-loader
  • 2 个回答
  • 983 Views
Martin Hope
heathcliff
Asked: 2019-12-30 11:46:29 +0800 CST

我正在寻找一种方法来保护自己免受可能的邪恶女仆攻击

  • 2

我找到了一种可以将引导加载程序移动到 USB 的方法。然后,如果有任何更改,我考虑在启动后检查 USB 的哈希值。由于硬盘驱动器将被加密,一个邪恶的女仆无法知道哪个文件包含哈希。或者我可以把哈希写到纸上。

我想知道的是,引导加载程序上的邪恶女仆脚本不能基本上恢复USB上的更改吗?所以哈希将是相同的,但键盘记录器脚本将被加载并且可能会将自己保存到硬盘驱动器?这可能是一件不现实的事情,但仍然是一个缺陷。

除了一直把 USB 放在口袋里之外,还有什么方法可以做到这一点?

更新:我找到了一个可以永久锁定 SD 卡写保护的工具。如果它不起作用,我将对其进行测试,我将在放置引导加载程序后尝试修改 SD 卡。

https://github.com/BertoldVdb/sdtool

security boot-loader
  • 2 个回答
  • 745 Views
Martin Hope
Martin Vegter
Asked: 2019-10-03 19:51:14 +0800 CST

lilo:在启动菜单中显示启动(附加)选项

  • 1

当我的机器启动时,会出现带有不同启动选项的 lilo 菜单。我可以选择选项,也可以等待默认选项自动启动。

现在,我想有可能选择一个引导选项,并更改内核命令行参数(在该append行中定义的内容)。

在syslinux(不同的引导加载程序)中,当我看到菜单时,我可以移动到菜单中的所需项目并按TAB,附加行会出现在命令行上,以便我可以编辑它。

我怎么能做同样的事情lilo?

下面是我的lilo.conf:

boot=/dev/sda
root=/dev/sda1
map=/boot/map

lba32

prompt
timeout=50

default=Linux

image=/boot/vmlinuz
    label=Linux
    read-only
    append="rootfstype=ext4 net.ifnames=0 loglevel=4 console=tty0 console=ttyS0,115200n8 3"
boot-loader
  • 1 个回答
  • 679 Views
Martin Hope
Thomas Houllier
Asked: 2019-08-06 08:48:15 +0800 CST

GRUB2:在不与其他磁盘或现有 grub2 安装交互的情况下安装新的引导加载程序

  • 2

虽然关于 GRUB2 的大多数问题都是关于它没有检测到这样那样的操作系统,但相反,我想阻止 GRUB2 与我机器上的所有东西进行交互。

背景与问题

当我/dev/sdb通过从另一个磁盘/dev/sda(我已进入新系统并运行:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Void Linux [GRUB]" --recheck

顺便说一句,我正在遵循Void Linux Wiki的一组说明。

运行命令后,我的 BIOS 会看到新磁盘,但不再是旧磁盘。之后我可以通过从新系统 chroot 到旧系统并从那里重新安装 GRUB2 来修补。之后,BIOS 会分别查看两个磁盘。这当然是一个不令人满意的修复。

笔记

  • 一个磁盘与另一个磁盘不同,因此bootloader-id问题不来自那里。
  • 我使用以下/etc/default/grub,我尝试添加GRUB_DISABLE_OS_PROBER=true(没有成功)。
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_DISTRIBUTOR="Void"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 slub_debug=P page_poison=1 rd.auto=1"
GRUB_DISABLE_OS_PROBER=true
grub2 boot-loader
  • 1 个回答
  • 662 Views

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve