- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望可以记下来,即使我不能立即接受答案(并希望这样可以 - 因为下面有一个 C 补丁):
看来我搞砸了台式电脑上的硬盘( {DRDY err}
)。所以我想运行一个可启动媒体来运行 fsck
,但是这个桌面上的CD坏了,所以只能用U盘了。我有几个带有 Ubuntu 和 Suse 的 USB 拇指驱动器 - 它们开始在桌面上启动;但是在启动过程中,udev 尝试检测硬盘驱动器,并且由于硬盘被拧紧,它只是在那里循环,并且相应的操作系统永远不会完成启动。
所以我尝试下载SystemRescueCd ;我有这个 USB 拇指驱动器,我试图在上面安装 SystemRescueCD:
# lsusb with sudo, to retrieve all info
$ sudo lsusb -v -d 058f:6387 | grep -i 'id\|iManufacturer\|iProduct\|iSerial\|bInterface'
Bus 001 Device 043: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive
idVendor 0x058f Alcor Micro Corp.
idProduct 0x6387 Transcend JetFlash Flash Drive
iManufacturer 1 takeMS
iProduct 2 Mem-drive Mini
iSerial 3 C5E7F0CC
bInterfaceNumber 0
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk (Zip)
# search by serial:
$ find /dev/disk/by-id/ -name '*C5E7F0CC*'
/dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0-part1
/dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0
# list and get device node
$ ls -la /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0
lrwxrwxrwx 1 root root 9 2013-03-25 20:37 /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0 -> ../../sdc
$ ls -la /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0\:0-part1
lrwxrwxrwx 1 root root 10 2013-03-25 20:37 /dev/disk/by-id/usb-takeMS_Mem-drive_Mini_C5E7F0CC-0:0-part1 -> ../../sdc1
# it is /dev/sdc - list disk info
$ sudo fdisk -l /dev/sdc
Disk /dev/sdc: 2108 MB, 2108686336 bytes
94 heads, 29 sectors/track, 1510 cylinders
Units = cylinders of 2726 * 512 = 1395712 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003e405
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 1511 2059263+ c W95 FAT32 (LBA)
unetbootin
(通过 sudo apt-get install unetbootin
); SYSLINUX 4.02 debian-20101016 CHS Copyright (C) 1993-2010 H. Peter Anvin et al
ERROR: No configuration file found
No DEFAULT or UI configuration directive found!
boot:
unetbootin
在进入
syslinux
之前在“验证 DMI 池数据”中失败——可能是因为它比我试图成像的 .iso 旧得多)。
$ md5sum ./systemrescuecd-x86-3.5.0.iso
48552b9e905872bd5061eb112b73ea20 ./systemrescuecd-x86-3.5.0.iso
sudo gparted /dev/sdc
);并重复了
usb_inst.sh
和
unetbootin
方法 - 再次没有骰子。有趣的是,在所有这些情况下,如果我尝试在 QEMU 模拟器中运行闪存 USB 拇指驱动器:
# sudo apt-get install qemu
sudo qemu -hda /dev/sdc
Award Modular BIOS v6.00PG
AMDRS740 BIOS
...
USB-FDD
USB-ZIP
USB-CDROM
USB-HDD
...
syslinux
- 或者启动失败,如上所述。
isolinux
手动重命名目录/文件至
syslinux
(
Trying to boot from usb - Ask Ubuntu ) - 当我使用
usb_inst.sh
时, 仅
syslinux/isolinux.bin
将不得不重命名。还有建议复制
syslinux.cfg
到 USB 闪存拇指驱动器的根目录 (
Cannot boot Live USB, Linux - Super User )。但仍然没有改进 -
syslinux
仍然提示它缺少配置文件 - 显然是
syslinux.cfg
.
> Do we have specific commands to trace or log syslinux?
Being open source, one is able to compile Syslinux and enable extra debugging output.
bochs
的东西;我怀疑这是调试
syslinux
本身 - 不一定要“调试”(或查询)它所处的环境。
syslinux
从源头;基本上,这是需要的,所以它构建:
sudo apt-get install nasm
sudo apt-get install uuid-dev
git clone git://git.kernel.org/pub/scm/boot/syslinux/syslinux.git syslinux-git
cd syslinux-git/
make OPTFLAGS+=-DDEBUG=1
syslinux
当插入给定的计算机时“看到”;鉴于我确实加载到
syslinux
在启动时,问题是它看到的文件系统是什么。我尝试启用 DEBUG 环境变量,如上所示(在将
override OPTFLAGS :=
添加到
Makefile
之后) - 但在启动失败期间,这本身没有生成新消息。我使用以下命令来“刻录”USB 拇指驱动器(从 Gnome 小程序中卸载它后):
sudo ./linux/syslinux --stupid --directory /syslinux --install /dev/sdc1
stupid
和没有(并且都用于源代码构建版本,以及来自 Natty 的 Ubuntu 软件包存储库的版本)。
rosh
的东西。 (
Read-Only SHell ) - 但是,编译为
rosh.c32
- 应该将其作为
syslinux.cfg
中的引导内核选项- 如前所述,我无法加载。所以
rosh.c32
不幸的是,对我的问题没有多大帮助。
rosh
实现
ls
命令,我尝试将相关部分复制到
syslinux
的代码中- 并触发
ls /
当
syslinux
时的root列表扫描配置文件。随着这些变化,记录在
syslinux-e40ba60-rosh-ls.patch ;现在我在启动时得到以下信息:
SYSLINUX 4.06 CHS 5-ge40ba60* Copyright (C) 1993-2010 H. Peter Anvin et al
Listing: "/"
rosh_ls_arg_dir 0 files found
Listing: "/syslinux"
Listing: ""
CurrentDirName: "/syslinux/"
confignamebuf: /syslinux/extlinux.conf; realpath -1
confignamebuf: /syslinux/syslinux.cfg; realpath -1
confignamebuf: /boot/syslinux/extlinux.conf; realpath -1
confignamebuf: /boot/syslinux/syslinux.cfg; realpath -1
confignamebuf: /syslinux/extlinux.conf; realpath -1
confignamebuf: /syslinux/syslinux.cfg; realpath -1
confignamebuf: /extlinux.conf; realpath -1
confignamebuf: /syslinux.cfg; realpath -1
ERROR: No configuration file found
No DEFAULT or UI configuration directive found!
/
,
_ls
函数至少返回“0 个文件”;其他的(“/syslinux”和空字符串“”)已经在
opendir
失败了打电话 - 等等
_ls
函数甚至没有被调用!
ls
功能无法按预期工作;但是在
qemu
中运行拇指驱动器在上网本上,确实提供了完整的文件列表 - 至少对于
/
,该函数被调用并返回到桌面 - 我怀疑它确实有效。
syslinux
, 开机后看到root下有0个文件
/
?我还能做些什么来调试这个问题?我不介意将一些 C 代码修补到
syslinux
中- 但我只是不知道我应该寻找什么,这将指向我正确准备 USB 拇指驱动器以在台式机上启动......
最佳答案
好的,我让它启动了...
首先,我注意到根据 Mbr - Syslinux Wiki 和 HowTos - Syslinux Wiki 在构建的 git 源中有替代 mbr,所以我尝试了 mbr.bin
和 altmbr.bin
- altmbr.bin
,如下所示:
$ printf '\1' | cat mbr/altmbr.bin - | sudo dd bs=440 count=1 conv=notrunc iflag=fullblock of=/dev/sdc
lsusb
说“bInterfaceProtocol 80 Bulk (Zip)”;我记得在某处读过一些关于 ZIP 驱动器的东西,所以试着查了一下——最后找到了这个:
The proper mode to boot a USB key drive in is "USB-HDD". That is the ONLY mode in which the C/H/S geometry encoded on the disk itself doesn't have to match what the BIOS thinks it is. Since geometry on USB drives is completely arbitrary, and can vary from BIOS to BIOS, this is the only mode which will work in general.
Some BIOSes have been reported (in particular, certain versions of the Award BIOS) that cannot boot USB keys in "USB-HDD" mode. This is a very serious BIOS bug, but it is unfortunately rather typical of the kind of quality we're seeing out of major BIOS vendors these days. On these BIOSes, you're generally stuck booting them in USB-ZIP mode.
THIS MEANS THE FILESYSTEM IMAGE ON THE DISK HAS TO HAVE A CORRECT ZIPDRIVE-COMPATIBLE GEOMETRY.
....
The script "mkdiskimage" which is supplied with the syslinux distribution can be used to initialize USB keys in a Zip-like fashion. To do that, calculate the correct number of cylinders (31 in the example above), and, if your USB key is /dev/sda (CHECK THE KERNEL MESSAGES CAREFULLY - IF YOU ENTER THE WRONG DISK DRIVE IT CANNOT BE RECOVERED), run:
mkdiskimage -4 /dev/sda 0 64 32
(The 0 means automatically determine the size of the device, and -4 means mimic a zipdisk by using partition 4.)
$ grep 512-byte /var/log/syslog | tail -n 1
Mar 25 22:33:34 mypc kernel: [50884.608687] sd 45:0:0:0: [sdc] 4118528 512-byte logical blocks: (2.10 GB/1.96 GiB)
# get number of cylinders:
$ wcalc '4118528/(64*32)'
= 2011
mkdiskimage
。完成后,我再次尝试
usb_inst.sh
- 并意识到它将覆盖
mkdiskimage
制作的分区 4,并为自己创建一个分区 1。这意味着,应该将这些文件从
usb_inst.sh
复制到别处的备份中,然后运行
mkdiskimage
- 最后再次将备份的文件复制回拇指驱动器;这是一个命令行日志:
# mkdiskimage is present in syslinux-git:
$ ./utils/mkdiskimage
Usage: ./utils/mkdiskimage [-doFMz4][-i id] file c h s (max: 1024 256 63)
....
# ... but also in Debian/Ubuntu packaging of syslinux
$ mkdiskimage -4 /dev/sdc 0 64 32
/usr/bin/mkdiskimage: /dev/sdc: don't know how to determine the size of this device
# use sudo - note this command takes a while to complete:
$ sudo mkdiskimage -4 /dev/sdc 0 64 32
Warning: more than 1024 cylinders (2011).
Not all BIOSes will be able to boot this device.
$ ls /dev/sdc*
/dev/sdc /dev/sdc4
$ sudo fdisk -l /dev/sdc
Disk /dev/sdc: 2108 MB, 2108686336 bytes
64 heads, 32 sectors/track, 2011 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x866262cc
Device Boot Start End Blocks Id System
/dev/sdc4 * 1 2011 2059248 e W95 FAT16 (LBA)
# (make sure umounted / ejected)
# cd to usb_inst.sh directory; and
# run usb_inst.sh for /dev/sdc; note it will:
# write MBR and "Creating filesystem on /dev/sdc1..."
# and "installing boot loader on /dev/sdc1";
# regardless of the previous setup on partition 4:
sudo bash ./usb_inst.sh
# now no more partition 4:
$ ls /dev/sdc*
/dev/sdc /dev/sdc1
# ( mount /dev/sdc1 via disk applet )
$ rsync -a /media/SYSRESC /media/backup/
# ... duhh... - again now
# ( umount/eject via disk applet )
$ sudo mkdiskimage -4 /dev/sdc 0 64 32
Warning: more than 1024 cylinders (2011).
Not all BIOSes will be able to boot this device.
$ sudo ./linux/syslinux --install /dev/sdc4
# ( mount via disk applet )
$ rsync -a /media/backup/SYSRESC/ /media/31A8-40E9/
$ sudo qemu -hda /dev/sdc # works
# ( umount/eject via disk applet )
# boot on desktop - works! loads rescue64 and initram.igz...
_ls
函数很好地列出了)。也很有趣 - 在这里我选择了 USB-HDD 启动选项(不是 USB-ZIP)并且它仍然有效?!
mkdiskimage
(不幸的是,我不知道如何将其编码为
syslinux
)
udev
来探测设备 - 再次启动过程无法完成(即使我选择启动选项“所有文件到内存(docache)”)......所以我得到消息如:
udevadm settle - timeout of 180 seconds reached, the event queue contains:
Activating dmraid (fake hardware raid) ...
Starting mdadm (linux software raid) ....
udevd[88] worker [91] unexpectedly returned with status 0x0100 ...
udevd[88] worker [91] failed while handling '/devices/pci0000:00/.../sdb/sdb1'
udev
探测磁盘 - 或者我最好把这个硬盘拿出来,把它扔进一个硬盘 USB 机箱,然后在另一台电脑上尝试 fsck(希望我能把它列入黑名单此驱动器来自正在运行的系统上的
udev
)
DRDY ERR
循环没有开始),他们可以相对快速地完成启动。然后我尝试构建一个自定义的 Ubuntu 12.04 镜像(使用
ubuntu-builder
) - 在操作系统完成启动之前,这个镜像以
DRDY ERR
循环结束,这可能需要 5 分钟以上才能完成。我在
Bug #1216397 “It should be possible to ignore (skip probing) a known bad disk partition at boot” : Bugs : “linux” package : Ubuntu 中发布了更多关于此的信息。
syslinux
有一些有趣的事情,现在这个 USB 拇指驱动器用于启动多个操作系统。首先,拇指驱动器仍然首先在空时使用
syslinux --install
启动(将文件
ldlinux.sys
放置在分区的根目录中) - 这对应于上面的
mkdiskimage
步骤;并且只有在此之后才会将文件(如内核镜像,包括
/boot/syslinux/syslinux.cfg
)复制到其中。
ubuntu-builder
中构建 CD 镜像 ISO,然后使用 VirtualBox 对其进行测试(因为我机器上的
qemu
太慢了)。一旦 ISO 镜像按预期工作,则只有其
casper
目录下的文件与如此准备的 USB 拇指驱动器相关;并且它们可以通过
syslinux.cfg
中的引导菜单条目进行引用。因此,我将编辑拇指驱动器上的
syslinux.cfg
,并将
casper
图像文件(例如
filesystem.squashfs
)复制到拇指驱动器 - 并使用
qemu
进行测试,如上所述。一旦通过了这个
qemu
步骤,我就会用损坏的驱动器移动目标 PC 上的 USB 拇指驱动器 - 有趣的是,在这里我可能会遇到多种类型的
syslinux
启动失败(在不同的启动阶段):
No DEFAULT or UI configuration directive found!
”(或有时是“Bad
syslinux
启动菜单之前 - 即使调试,如上所述,会显示
syslinux
正确读取拇指驱动器上的文件系统,并找到
/boot/syslinux/syslinux.cfg
(确实有正确的指令)!
Invalid or corrupt kernel image
",一旦显示 syslinux
菜单,并选择新的内核镜像 (Ubuntu) - 即使其他镜像(以前在拇指上找到)在损坏的驱动器 PC 上正常启动;并且新镜像可以在另一台机器上的 qemu
中从拇指正常启动! /init: line 7: can't open /dev/sr0: no medium found
",一旦从 syslinux
菜单中选择了新的 (Ubuntu) 镜像,它就会开始启动;这似乎是 Ubuntu 特定的消息,在启动后几秒钟出现。即使启动成功完成,我仍然会遇到它 - 当它出现问题时,此消息只会重复循环,不允许启动过程的其余部分完成 syslinux.cfg
文件时,任何这些都可能出现;或者当我在
casper
图像文件中进行更改时,我将
rsync
或将它们复制到拇指驱动器。也许复制过程(因为它可能会改变文件位于拇指上的扇区),“混淆”了启动过程的部分 - 尽管这不应该发生,因为上面的工作过程也是从空白的
syslinux
开始的'd 拇指驱动器,之后将文件复制到该驱动器;所以我认为这可能指向拇指驱动器上出现故障的扇区。
~/thumbcopy
) - 但没有 ldlinux.sys
文件。 syslinux.cfg
或可启动镜像文件)时,请确保将此更改保存在 ~/thumbcopy
第一个 ldlinux.sys
之外的所有文件,例如: rm -rf $(ls -I"ldlinux.sys"/media/31A8-40E9/) rsync
或复制 ( cp -arv ...
) ~/thumbcopy
中的文件到拇指驱动器,例如: rsync -aP ~/thumbcopy//media/31A8-40E985/67914关于c - 调试 syslinux 看到的引导文件系统环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624772/
如何获取特定 UTF-8 字符串的字节序列?我看到正则表达式引擎中的某些错误仅在某些边缘情况下才会触发,我想确切地知道它正在处理哪些数据。 最佳答案 也许 charToRaw ? > charToRa
考虑一个具有许多变量的 java 程序,其中一些是循环计数器,我希望看到这些变量随时间变化的值,而不是在代码中到处放置 print 语句。 为什么?我认为它可以帮助我轻松调试。 Example- in
有没有办法查看 JavaScript 正在创建的“线程”?例如,如果我有一个附加到 DOM 元素的事件处理程序,我假设 JavaScript 会隐式地创建一个新线程来在后台运行该代码?如果是这样,有没
我正在使用反射 API 来调用类运行时并调用其方法。但我看到 java.lang.reflect.InitationTargetException 异常。 我需要调用一个名为 - TestClass
考虑一个名为 t.cmd 的命令脚本,它只包含以下两行: @exit /b 123 @echo If you see this, THEN EXIT FAILED.. 因此,该脚本只是将脚本执行过程的
我最近一直在努力学习编程语言实用学第 3 版,以了解更多关于语言在底层如何工作的信息,并且通过查看由真正基本的 GCC 编译的 C 代码生成的程序集,我获得了很多进展.我开始对 C 系列的静态语言越来
最简单的制作方法是什么QWebView识别并正确加载网页上的 Flash? 最佳答案 似乎只需两行即可实现(当然,假设目标系统上安装了闪存): QWebSettings *settings = QWe
我想通过编程(使用VBA)访问其他人与我共享的日历。它们在我的Outlook中的“人民日历”下列出。我在网上搜索了此内容,所有建议所做的仅使我感到困惑。如何从“人的日历”中获取共享给我的所有日历的
使用MongoDB Compass,可以看到数据库用户或创建新用户吗? 最佳答案 香港专业教育学院在命令行上使用以下命令进行管理: mongo use (my database name) db.cr
我正在CentOS 7.4.1708(核心),Java(TM)SE运行时环境(内部版本1.8.0_152-b16)上运行eXist-db 3.6.1。我希望能够在person.xml中的最后一个记录之
我需要确认。 客户端 1 在事务内的表中插入行。 客户端 2 使用 SELECT 请求该表。如果在此客户端上隔离级别设置为 READ COMMITTED,您能否确认 SELECT 不会返回客户端 1
我刚刚安装了 python-dev: $ sudo apt-get install python-dev 这样我就可以开始使用 P4Python 了。但是当我尝试导入 P4 时,我得到: Traceb
我正在使用 msys 和 mingw 编译 libtorrent-rasterbar-0.16.16。./configure 运行良好,直到它进入 boost 库检查。我有 boost 1.51,我设
我在 GO 项目的 Travis CI 上有一个奇怪的行为。 [这里] 失败了,提示一个函数只接受 1 个参数并用 2 个参数调用。 src/finances-service/main.go:45:1
这个问题已经有答案了: What are enums and why are they useful? (27 个回答) 已关闭 4 年前。 作为 Java 初学者,我接触到了枚举,这让我对类型声明感
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正在使用 preactjs 创建我的应用程序。最重要的是,我正在使用剑道网格。在网格内,我想显示一个超链接。如果用户点击链接,它应该改变路线。为了呈现链接,我使用了 preact-router。 这
有没有办法只查看 Node.js 中的函数签名?我知道 fn.toString() 但不需要所有代码,只需要签名。 最佳答案 var source = fn.toString(); var signa
如何设置 vim 以查看我在 ubuntu 上安装的 ruby rvm。 rvm 已安装,ruby 从终端返回。 renshaw@renshaw-TravelMate-5740G:~$ ruby
我试图在我的 Android 应用程序中防止 OutOfMemoryError。我已经阅读了很多帖子,但我仍然无法解决。 该应用程序有后台 Activity ,所以我认为这是主要问题。 OutOfMe
我是一名优秀的程序员,十分优秀!