错误:\windows\system\drivers\atapi.sys
状态:0xc000000f
我想我会丢失我的数据。
众所周知,CPU从复位向量地址开始执行。但是对于任何 CPU,该地址是如何固定的。CPU如何知道从复位向量地址获取指令。重置向量地址将存储在哪里?
一开始一切都很好,我的 SSD 有 2 个 EFI 分区,我通常使用 f12 键在操作系统之间切换,保持 Linux 为默认值。但是,在我清除 NVRAM 后,Windows 启动管理器在那里,但 Linux EFI 消失了。如何将其添加回启动菜单?
如何使用Mainline U-Boot的引导加载程序加载 Windows 操作系统?
这可能吗?我们是否有任何文档可以指导我们采用这种方法?
谢谢你。
我了解到 BIOS 会收集最多样化的硬件数据,并在通电后立即创建设备所有可用驱动器的完整列表。
当这个过程完成后,固件会依次遍历找到的数据载体,通过特殊签名检查引导加载程序——所谓的引导签名(或“引导记录”)。搜索总是从可移动媒体(CD/DVD、USB 记忆棒、外部硬盘驱动器等)开始,然后是硬编码驱动器。对于后者,引导加载程序及其签名通常位于主引导记录 (MBR)中。
我的问题 - 由于 BIOS 会一一检查所有检测到的存储设备中的引导签名值,这是否意味着每个(此处 BIOS 检测到的存储介质)都必须具有主引导记录,而不管设备是否可引导?
我在汇编中创建了一个非常小的引导加载程序,并且想在我的物理硬件上对其进行测试,因此我使用 USB 驱动器来执行此操作。我已将程序集转换为机器代码和 .bin 文件,我在我的 bin 文件上运行了 file 命令,得到:
DOS/MBR 引导扇区
所以我知道它是可启动的,而且我也能够在模拟器中正确运行它。
我在谷歌上搜索这个问题超过 4 小时,我找不到任何有效的东西,很多人说要使用 Rufus,但我在 Rufus 3.3 中没有看到任何将 bin 文件闪存到 USB 驱动器的设置。
我有一台 Unix 和 Windows 机器,所以任何方法都可以。
我一直未能弄清楚如何将 .bin 引导加载程序刻录到 USB 并从中引导,如果有人知道该怎么做,那就太好了。
作为参考,这里是代码:
BITS 16
start:
mov ax, 07C0h
add ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, helloText
call printStr
jmp $
helloText db "Hello, World!", 0
printStr:
mov ah, 0Eh
.repeat:
lodsb
cmp al, 0
je .done
int 10h
jmp .repeat
.done:
ret
TIMES 510 - ($ - $$) db 0
dw 0xAA55
我使用以下 NASM 命令组装了代码:
nasm -f bin -o bootLoad.bin bootLoad.asm
从这里我需要将 bin 刻录到 USB 驱动器并从它启动。有没有人有任何工具或有关如何实际执行此操作的信息?
先感谢您!
我有一个无头 NAS 系统,其系统分区上的磁盘空间不足。它运行 Debian 10,通常通过 OpenMediaVault 5 在 EFI 系统上使用 grub2 引导加载程序进行管理。除了 HDD 数据突袭之外,它还有一个带有 / 和 /boot 分区的 SSD。我已经安装了一个额外的 SSD,带有 /、/boot/EFI 和 /var 的分区。我已经小心地停止了所有服务并通过 rsync 复制了数据。我已经修改了新分区的 /etc/fstab 以反映带有新 UUID 的新挂载方案(从 blkid 的输出中读取)。我没有修改 BIOS 或引导加载程序。我打算仍然使用原始 SSD 的 /boot 分区来启动。
至此,grub 已经在 /boot/grub/grub.cfg 文件中检测到了新系统。所以我更改了 /etc/default/grub 中默认条目的条目,运行 grub-mkconfig 并重新启动。但它仍然会在第一次进入我的旧系统时启动。在无头系统上很难分辨,但至少根据 /proc/cmdline,它看起来像是第一个条目,其中旧 UUID 作为 root= 的值。但我不知道这是第一次尝试还是失败后的回退。
我还注意到 /boot/grub/grub.cfg 在我运行 grub-mkconfig 后没有改变。虽然我在 /boot/grub/grub.cfg 文件中看到了根分区的 UUID,但我在 /etc/grub.d 结构中的任何地方都看不到旧的或新的。
我显然还没有完全理解 grub2 的工作原理以及它应该如何配置。有人可以就这个问题给我一些指导或指向我可以帮助我的文档吗?
更新:感谢用户 @user1686 的回答,我通过将 grub-mkconfig 的输出重定向到带有 -o 选项的文件中重新创建了我的 grub.cfg。这接管了 GRUB_DEFAULT 设置。出于某种原因,虽然在条目中多次提到正确的 UUID,但在实际linux =
启动命令中仍然显示旧系统的 UUID。我手动纠正了这个问题,最后启动到新系统。/更新
一些相关文件:
blkid 的输出(缩短)
/dev/sdb: UUID="c71b542e-8149-827c-e596-32c80ade181d" TYPE="linux_raid_member"
/dev/sda: UUID="c71b542e-8149-827c-e596-32c80ade181d" TYPE="linux_raid_member"
/dev/sdc1: UUID="EAFD-673A" TYPE="vfat" PARTLABEL="boot"
/dev/sdc2: UUID="533dfffd-ebd1-4be6-8e7b-55489f1ffece" TYPE="ext4" PARTLABEL="system"
/dev/sdd1: LABEL_FATBOOT="BOOT" LABEL="BOOT" UUID="97CC-45A4" TYPE="vfat" PARTLABEL="boot"
/dev/sdd2: LABEL="system" UUID="bd04242b-b64d-46e7-97ba-116d3c987c67" TYPE="ext4" PARTLABEL="system"
/dev/sdd3: LABEL="var" UUID="7142881b-3165-4b17-bf20-445e22b0cb03" TYPE="ext4" PARTLABEL="var"
/dev/md0: UUID="4a432c95-b1ad-4ff6-b10b-66a343f2bfad" TYPE="crypto_LUKS"
/etc/default/grub(旧根分区)
GRUB_DEFAULT=4
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
GRUB_DISABLE_SUBMENU=y
/boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod ext2
set root='hd2,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2 533dfffd-ebd1-4be6-8e7b-55489f1ffece
else
search --no-floppy --fs-uuid --set=root 533dfffd-ebd1-4be6-8e7b-55489f1ffece
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=C
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux, with Linux 4.19.0-14-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-14-amd64-advanced-533dfffd-ebd1-4be6-8e7b-55489f1ffece' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd2,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2 533dfffd-ebd1-4be6-8e7b-55489f1ffece
else
search --no-floppy --fs-uuid --set=root 533dfffd-ebd1-4be6-8e7b-55489f1ffece
fi
echo 'Loading Linux 4.19.0-14-amd64 ...'
linux /boot/vmlinuz-4.19.0-14-amd64 root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-14-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-14-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-14-amd64-recovery-533dfffd-ebd1-4be6-8e7b-55489f1ffece' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd2,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2 533dfffd-ebd1-4be6-8e7b-55489f1ffece
else
search --no-floppy --fs-uuid --set=root 533dfffd-ebd1-4be6-8e7b-55489f1ffece
fi
echo 'Loading Linux 4.19.0-14-amd64 ...'
linux /boot/vmlinuz-4.19.0-14-amd64 root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-14-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-10-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-10-amd64-advanced-533dfffd-ebd1-4be6-8e7b-55489f1ffece' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd2,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2 533dfffd-ebd1-4be6-8e7b-55489f1ffece
else
search --no-floppy --fs-uuid --set=root 533dfffd-ebd1-4be6-8e7b-55489f1ffece
fi
echo 'Loading Linux 4.19.0-10-amd64 ...'
linux /boot/vmlinuz-4.19.0-10-amd64 root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-10-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-10-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-10-amd64-recovery-533dfffd-ebd1-4be6-8e7b-55489f1ffece' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd2,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2 533dfffd-ebd1-4be6-8e7b-55489f1ffece
else
search --no-floppy --fs-uuid --set=root 533dfffd-ebd1-4be6-8e7b-55489f1ffece
fi
echo 'Loading Linux 4.19.0-10-amd64 ...'
linux /boot/vmlinuz-4.19.0-10-amd64 root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-10-amd64
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Debian GNU/Linux, with Linux 4.19.0-0.bpo.9-amd64 (on /dev/sdd2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.19.0-0.bpo.9-amd64--bd04242b-b64d-46e7-97ba-116d3c987c67' {
insmod part_gpt
insmod ext2
set root='hd3,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd3,gpt2 --hint-efi=hd3,gpt2 --hint-baremetal=ahci3,gpt2 bd04242b-b64d-46e7-97ba-116d3c987c67
else
search --no-floppy --fs-uuid --set=root bd04242b-b64d-46e7-97ba-116d3c987c67
fi
linux /boot/vmlinuz-4.19.0-0.bpo.9-amd64 root=bd04242b-b64d-46e7-97ba-116d3c987c67 ro quiet
initrd /boot/initrd.img-4.19.0-0.bpo.9-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-0.bpo.9-amd64 (recovery mode) (on /dev/sdd2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.19.0-0.bpo.9-amd64-root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro single-bd04242b-b64d-46e7-97ba-116d3c987c67' {
insmod part_gpt
insmod ext2
set root='hd3,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd3,gpt2 --hint-efi=hd3,gpt2 --hint-baremetal=ahci3,gpt2 bd04242b-b64d-46e7-97ba-116d3c987c67
else
search --no-floppy --fs-uuid --set=root bd04242b-b64d-46e7-97ba-116d3c987c67
fi
linux /boot/vmlinuz-4.19.0-0.bpo.9-amd64 root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro single
initrd /boot/initrd.img-4.19.0-0.bpo.9-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-0.bpo.8-amd64 (on /dev/sdd2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.19.0-0.bpo.8-amd64--bd04242b-b64d-46e7-97ba-116d3c987c67' {
insmod part_gpt
insmod ext2
set root='hd3,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd3,gpt2 --hint-efi=hd3,gpt2 --hint-baremetal=ahci3,gpt2 bd04242b-b64d-46e7-97ba-116d3c987c67
else
search --no-floppy --fs-uuid --set=root bd04242b-b64d-46e7-97ba-116d3c987c67
fi
linux /boot/vmlinuz-4.19.0-0.bpo.8-amd64 root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro quiet
initrd /boot/initrd.img-4.19.0-0.bpo.8-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-0.bpo.8-amd64 (recovery mode) (on /dev/sdd2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.19.0-0.bpo.8-amd64-root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro single-bd04242b-b64d-46e7-97ba-116d3c987c67' {
insmod part_gpt
insmod ext2
set root='hd3,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd3,gpt2 --hint-efi=hd3,gpt2 --hint-baremetal=ahci3,gpt2 bd04242b-b64d-46e7-97ba-116d3c987c67
else
search --no-floppy --fs-uuid --set=root bd04242b-b64d-46e7-97ba-116d3c987c67
fi
linux /boot/vmlinuz-4.19.0-0.bpo.8-amd64 root=UUID=533dfffd-ebd1-4be6-8e7b-55489f1ffece ro single
initrd /boot/initrd.img-4.19.0-0.bpo.8-amd64
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
/etc/fstab(新的根分区)
# <file system> <mount point> <type> <options> <dump> <pass>
# / on new SDD on /dev/sdd2
UUID=bd04242b-b64d-46e7-97ba-116d3c987c67 / ext4 noatime,nodiratime,errors=remount-ro 0 1
# /boot/efi on /dev/sdd1
UUID=97CC-45A4 /boot/efi vfat umask=0077 0 1
# /var on /dev/sdd3
UUID=7142881b-3165-4b17-bf20-445e22b0cb03 /var ext4 defaults 0 2
tmpfs /tmp tmpfs defaults 0 0
# >>> [openmediavault]
/dev/disk/by-label/data /srv/dev-disk-by-label-data ext4 defaults,nofail,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2
# <<< [openmediavault]
我希望通过从 RedHat Satellite 服务器进行 PXE 引导的配置与 Windows 部署服务器集成。
为此,我希望 WDS 的(非 UEFI)syslinux 引导加载程序加载另一个 EFI 引导加载程序(grub2/grubx64.efi)而不是 Linux 内核。这应该通过 TFTP 加载,因为待配置的系统尚未在硬盘上安装任何引导加载程序。
那可能吗?
背景:
在理想的 Satellite-only 设置中,Satellite 服务器喜欢控制 DHCP 来设置它自己的下一个服务器和文件选项。然后它通过 TFTP 加载其中一个 PXE 引导加载程序,进而启动内核。卫星服务器将操纵 DHCP 服务器来设置正确的引导加载程序(在我们的例子中,始终相同,grub2/grubx64.efi),并设置 grub 将使用的正确内核参数。
我们有一个混合环境,我们的 DHCP 将始终指向 syslinux 引导加载程序。我可以在 syslinux 菜单中添加一些东西,但我不能替换 syslinux。
天真的解决方案是在 syslinux 中复制内核命令行,但这不起作用,因为每个主机的内核命令行都不同(它包括 MAC 地址)。
因此,我需要一种方法让 syslinux 然后加载 grub2/grubx64.efi 加载程序,然后启动其余过程。
我已经在笔记本电脑上使用 ubuntu 几个月了。几天前,存储库系统或任何所谓的系统遇到了问题。我无法再安装、更新或升级我的 ubuntu 系统。在尝试了几次修复后,我决定转移到另一个 Minux 发行版,我尝试先安装 Manjaro,安装应该成功,因为没有错误迹象,但是当我重新启动系统时,它说:
未找到引导设备
请在您的硬盘上安装操作系统
所以我以为我在安装过程中做错了什么。我尝试重新安装 manjaro 几次,但没有运气。然后我决定尝试deepin,但我遇到了同样的问题,现在我决定放弃linux,只想找回我的windows,我该怎么办?
我的笔记本电脑上有两个 Windows 10 实例。
当我使用 VisualBCD 检查引导条目时,Windows A 的第一个条目是:
Windows B 是这样的:
现在我在refind.conf中添加了 2 个条目
menuentry "Work Station" {
icon \EFI\refind\themes\icons\os_win.png
volume 4:
loader \Windows\system32\winload.efi
}
menuentry "Music Station" {
icon \EFI\refind\themes\icons\os_unknown.png
volume 5:
loader \Windows\system32\winload.efi
}
当我重新启动时,我首先进入 rEFInd 引导加载程序。当我选择这两个条目之一时,我收到一些消息,提示无法找到winload.efi ...
我只能通过选择自动找到的条目,返回 Windows 引导加载程序,然后选择 Windows A 或 B 来返回这两个 Windows 实例之一。
如何在不先进入 Windows 引导加载程序的情况下直接引导到两个 Windows 实例之一?我就是想不通。我已经在菜单条目的卷部分使用了 C 或 D 以及卷的 GUID...