V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
7RTDKSAK
V2EX  ›  Linux

请问存在类似于[diskgenius.efi]或者[分区助手.efi]这种东西嘛?

  •  
  •   7RTDKSAK · 2022-09-29 20:37:38 +08:00 · 2856 次点击
    这是一个创建于 790 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要:

    当目标电脑上的硬盘的分区表存在错误的时候,灌进 U 盘中的 WINPE 就大概率无法在该电脑上启动

    此时解决办法有:

    1.启动 DOS,修复分区表错误后再从 WINPE 启动---但是 UEFI ONLY 的设备又怎么办呢?
    2.启动 LINUX LIVE,使用 GPARTED 之类的程序修复分区表错误---这样可以接受,但是未免杀鸡用牛刀
    3.拆硬盘,挂载到正常运行地系统中修复分区表错误---先有鸡还是先有蛋?

    总之就是,此时已经不能指望 WINPE 了,你得想其它办法先修复分区表才能启动 WINPE

    联想到已经存在[EFI SYSTEM CLONER]和[联想一键还原 UEFI 版]这种 EFI APP,单文件,可以直接被电脑固件执行,也可以被 GRUB2 链式加载,所以问问大家有没有类似地磁盘 /分区管理方面的 EFI APP?

    找到一款 GDISK.EFI,但是似乎作者已经弃坑了,而且不能读写 FS

    第 1 条附言  ·  2022-10-04 18:42:53 +08:00

    最终还是选择了system_rescue_cd来作为备用,特点如下:

    1.这是一款由ARCH_LINUX所衍生地LIVE,专门设计用于系统急救场景,听名字就知道

    2.原生支持persistence,也就是持久化,即对系统的所有更改都能跨重启保存,完全可以日常使用

    3.由GRUB2向kernel传递持久化模式所需地[label]和[dir]这俩参数,理论上来说只要你U盘空间足够大,可以有无数个持久化模式的存储空间

    4.支持boot from ram模式,也就是把整个rootfs所在地XXX.squashfs复制到RAM,再启动系统,然后可以拔掉启动U盘

    5.目前我还在探索2和4能不能同时实现,理论上应该没有问题,要hook一下initramfs中地init脚本

    结帖了,虽然没有找到合适地XXX.efi,但是找到了相当趁手地牛刀,哈哈哈

    (其实几年前地KALI_LINUX其持久化模式我很满意,但是越更新越扑街,现在地版本我居然虚拟机里都跑不稳,已经很久没有玩LIVE的热情了)

    22 条回复    2022-10-01 20:15:39 +08:00
    timpaik
        1
    timpaik  
       2022-09-29 20:53:48 +08:00 via Android
    "目标电脑上的硬盘的分区表存在错误的时候,灌进 U 盘中的 WINPE 就大概率无法在该电脑上启动"
    ???
    u 盘中的 winpe 和目标电脑的硬盘分区表有什么关系吗??
    就是目标电脑没有硬盘,winpe 也应该能正常启动才是。
    shansing
        2
    shansing  
       2022-09-29 21:01:48 +08:00 via iPhone
    同蹲一个解决方案。我也遇到过 WinPE 检测到分区表错误就拒绝启动的情况。
    sky96111
        3
    sky96111  
       2022-09-29 21:02:40 +08:00 via Android   ❤️ 3
    PE 是运行在内存上的系统,别说分区表故障,硬盘完全烂了都能启动
    vmebeh
        4
    vmebeh  
       2022-09-29 21:03:40 +08:00 via iPhone
    diskgenius 可以生成 pe 版,把那个版本的启动项写到 bcd 里面,

    或者用 windows 启动盘启动,安装界面按 Shift+F10 打开命令提示符,可以直接运行 diskgenius ,可能会提示确实 oledlg.dll ,从正常系统拷一个放在 dg 目录即可解决
    ysc3839
        5
    ysc3839  
       2022-09-29 21:07:45 +08:00 via Android
    7RTDKSAK
        6
    7RTDKSAK  
    OP
       2022-09-29 21:10:25 +08:00
    @timpaik

    这似乎是微软的设计问题,也就是说是 feature 而不是 bug

    1.如果想要 WINPE 在引导期间不读写目标电脑上的硬盘(因为写硬盘对于数据抢救就是大风险),需要额外魔改

    2.如果想要 WINPE 忽略目标电脑上的硬盘的分区表错误而不是拒绝启动,需要额外魔改

    我也不知道为何要这样设计
    7RTDKSAK
        7
    7RTDKSAK  
    OP
       2022-09-29 21:15:15 +08:00
    @vmebeh 老哥你说得这个我知道,但是问题又回到原点了啊?WINDOWS 原版启动盘和 DG 生成地 WIM 都是 PE 啊,都不能保证在分区表有错地情况下启动啊

    @ysc3839 我看看先,谢谢!
    qbqbqbqb
        8
    qbqbqbqb  
       2022-09-29 21:47:09 +08:00   ❤️ 2
    @timpaik
    @sky96111
    “没有硬盘、硬盘完全烂了”和分区表错误是两回事。
    有的分区表错误会导致 DOS, Windows 系列的系统在识别到这个硬盘开始读取其分区信息时出现死循环等问题。只要开机的时候电脑上存在这样的硬盘能被 PE 或 DOS 读到,就启动不了任何 PE 或 DOS (故障盘不是启动盘,也不影响故障的产生)。
    可以了解一下“硬盘逻辑锁”“江民逻辑炸弹”。
    qbqbqbqb
        9
    qbqbqbqb  
       2022-09-29 21:52:21 +08:00   ❤️ 1
    有个 GParted Live ,就是一个专门打包了 GParted 的小型 Linux live 系统,不到 500M.
    timpaik
        10
    timpaik  
       2022-09-29 22:02:33 +08:00 via Android
    @qbqbqbqb 那要不然试试拔掉硬盘再启动,再装上故障盘?那不就能正常启动了么,只要一台电脑,一个普通 winpe
    kokutou
        11
    kokutou  
       2022-09-29 22:02:56 +08:00 via Android   ❤️ 1
    grub4dos efi 版本,关掉安全启动就可以用。
    但是操作分区表的 efi 就不知道了。
    efi 版本的 g4d 可以启动哪些东西没仔细试过。只是试过可以兼容传统 g4d 的菜单,可以启动 efi 版本的 memtest86
    7RTDKSAK
        12
    7RTDKSAK  
    OP
       2022-09-29 22:46:49 +08:00
    @qbqbqbqb 对的,如果实在找不到,我也就定这一款了


    @timpaik 拔盘可以,但是不那么方便,还是优先考虑软件的方案


    @kokutou 我是用的 GRUB2 生成地***.efi 来引导,和你说得这个差不多吧
    autoxbc
        13
    autoxbc  
       2022-09-29 23:44:09 +08:00
    这看起来就是 PE 的 bug ,读不了可以不读,卡死怎么都说不通
    Osk
        14
    Osk  
       2022-09-29 23:50:55 +08:00
    硬盘导致 PE 无法启动是正常现象.
    硬盘有问题导致 pe 卡死...
    甚至还有 ntfs.sys 蓝屏...

    用 linux 救火是常见操作.

    一般遇到这类问题时, 我会选择启动个 ubuntu server 的 ISO.
    选择 ubuntu 的原因:不用关安全启动.
    不选择 ubuntu 桌面版的原因, 这糟心玩意儿自动挂载硬盘卷.


    反正 ubuntu 和 win pe 能共存, 不就是 2GB 的空间占用吗, 占的起.
    Osk
        15
    Osk  
       2022-09-29 23:56:28 +08:00   ❤️ 1
    如果你非要纠结需要一个 .efi 文件启动, 也许可以这样:

    自己编译一个 kernel, 砍掉不需要的驱动, 减小体积.
    使用 busybox 制作一个最小 /.
    静态编译需要的工具: ntfs-3g, exfatprog, dosfstools, fdisk, gptfdisk, smartmontool 等.
    将 busybox 的 / 和工具打包成一个 initramfs.
    使用 systemd-boot 将 kernel 和 initramfs 打包成一个 efi 文件.


    客官您要的 "分区助手.efi" 做好了
    ysc3839
        16
    ysc3839  
       2022-09-29 23:59:31 +08:00 via Android   ❤️ 1
    @Osk 都不需要自己编译,用 OpenWrt 的 ImageBuilder 打包就好了。alpine 不知道有没有类似工具。不嫌体积大的话弄个 Arch ISO 。
    Osk
        17
    Osk  
       2022-09-30 00:04:47 +08:00
    @ysc3839 ArchLinux 至今没有整微软的安全启动签名.... ubuntu/fedora 这些有
    7RTDKSAK
        18
    7RTDKSAK  
    OP
       2022-09-30 01:20:44 +08:00
    @Osk #15 这在我的下一步计划之中,要搞一个 LINUX RAMOS,启动好了就拔 U 盘,哈哈哈
    knives
        19
    knives  
       2022-09-30 08:40:31 +08:00
    自从开始用 ventoy 后,就再也没灌过 U 盘了,直接通过 ventoy 引导 PE/Linuex 的 ISO 了事。
    gearfox
        20
    gearfox  
       2022-09-30 10:14:43 +08:00
    ventoy 确实是个好软件
    tuwulin365
        21
    tuwulin365  
       2022-10-01 18:49:12 +08:00   ❤️ 1
    有个 OneFileLinux.efi ,试一试
    7RTDKSAK
        22
    7RTDKSAK  
    OP
       2022-10-01 20:15:39 +08:00
    @tuwulin365 我试试,谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:32 · PVG 04:32 · LAX 12:32 · JFK 15:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.