a_m*_*m0d 23 linux usb iso-image partitioning usb-flash-drive
我以某种方式设法将一个 iso 9660 映像写入我的 USB 驱动器,这使我的所有计算机都认为该设备实际上是一张 CD。我尝试了各种删除此分区的方法,但似乎没有任何效果。我试过了fdisk,上面写着
$ fdisk -l /dev/sdb 无法打开 /dev/sdb当我尝试在此设备上使用它时,parted 崩溃了。
我什至尝试过
$ dd if=/dev/zero of=/dev/sdb但它只是挂起而没有输出(在屏幕上或磁盘上)。但是,当我插入 USB 时,它会挂载,并且我可以查看(但不能编辑)其上的文件。
编辑:现在结果是
$ dd if=/dev/zero of=/dev/sdb dd:打开`/dev/sdb':只读文件系统
我也试过在 Windows 上重新格式化它,但它到达格式化过程的最后,然后说“无法格式化驱动器”。
如何删除此分区并使我的整个 USB 驱动器再次恢复正常?
编辑 1:尝试一个简单的mkfs不起作用:
$ sudo mkfs -t vfat /dev/sdb mkfs.vfat 3.0.0(2008 年 9 月 28 日) mkfs.vfat:不会尝试在全盘设备“/dev/sdb”上创建文件系统(如果需要,请使用 -I)我不能做
mkfs的/dev/sdb1,因为没有这样的分区,如图所示:$ ls /dev | grep sdb 数据表
编辑 2:这是我插入设备时 dmesg 发布的信息:
$ dmesg . . (剪辑) . usb 2-1:找到新的 USB 设备,idVendor=058f,idProduct=6387 USB 2-1:新的 USB 设备字符串:Mfr=1、Product=2、SerialNumber=3 USB 2-1:产品:大容量存储 USB 2-1:制造商:通用 USB 2-1:序列号:G0905000000000010885 USB 存储:在 4 处找到的设备 usb-storage:扫描前等待设备稳定 USB 存储:设备扫描完成 scsi 6:0:0:0:直接访问闪存驱动器 AU_USB20 8.07 PQ:0 ANSI:2 sd 6:0:0:0: [sdb] 4069376 512 字节硬件扇区 (2084 MB) sd 6:0:0:0: [sdb] 写保护关闭 sd 6:0:0:0: [sdb] 模式感知:03 00 00 00 sd 6:0:0:0: [sdb] 假设驱动器缓存:直写 sd 6:0:0:0: [sdb] 4069376 512 字节硬件扇区 (2084 MB) sd 6:0:0:0: [sdb] 写保护关闭 sd 6:0:0:0: [sdb] 模式感知:03 00 00 00 sd 6:0:0:0: [sdb] 假设驱动器缓存:直写 sdb:未知分区表 sd 6:0:0:0: [sdb] 附加的 SCSI 可移动磁盘 sd 6:0:0:0:附加的 scsi 通用 sg2 类型 0 ISO 9660 扩展:Microsoft Joliet 级别 3 ISO 9660 扩展:RRIP_1991A SELinux:已初始化(dev sdb,类型 iso9660),使用 genfs_contexts CE:hpet 将 min_delta_ns 增加到 15000 纳秒这表明该设备的格式为 ISO 9660 并且它是
/dev/sdb.
编辑 3:这是我dmesg在运行cfdisk并将新分区表写入磁盘后在底部找到的消息:
SELinux:已初始化(dev sdb,类型 iso9660),使用 genfs_contexts sd 17:0:0:0: [sdb] 设备未准备好:感应键:未准备好 [当前] sd 17:0:0:0: [sdb] 设备未就绪:<> ASC=0xff ASCQ=0xffASC=0xff <> ASCQ=0xff end_request: I/O 错误,dev sdb,扇区 0 设备 sdb 上的缓冲区 I/O 错误,逻辑块 0 由于 sdb 上的 I/O 错误而丢失页面写入
a_m*_*m0d 10
好吧,事实证明在这种情况下(可能是当我将 iso-9660 文件系统写入驱动器时)触发了驱动器上某种形式的内部写保护。有没有外部的写保护/保持开关,但仍这是在输出dmesg我跑的时候
dd if=/dev/zero of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)
作为根:
sd 9:0:0:0: [sdb] 添加。意义:写保护 end_request:I/O 错误,dev sdb,扇区 4028744 sd 9:0:0:0: [sdb] 结果:hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK sd 9:0:0:0: [sdb] Sense Key : Data Protect [current] 信息 fld=0x0
请注意那里关于保护的评论!但是,当我插入设备时,我得到,
scsi 10:0:0:0:直接访问闪存驱动器 AU_USB20 8.07 PQ:0 ANSI:2 sd 10:0:0:0: [sdb] 4069376 512 字节硬件扇区 (2084 MB) sd 10:0:0:0: [sdb] 写保护关闭 sd 10:0:0:0: [sdb] 模式感知:03 00 00 00 sd 10:0:0:0: [sdb] 假设驱动器缓存:直写 sd 10:0:0:0: [sdb] 4069376 512 字节硬件扇区 (2084 MB) sd 10:0:0:0: [sdb] 写保护关闭 sd 10:0:0:0: [sdb] 模式感知:03 00 00 00 sd 10:0:0:0: [sdb] 假设驱动器缓存:直写
请注意,此消息表示该设备没有写保护!所以不幸的是,看起来磁盘已经有了它(即kaput)。
小智 6
我是 Linux 系统管理员的新手,所以当我遇到完全相同的问题时,我对我的方法毫不生气,但设法删除了 iso9660 fs 并回收了拇指驱动器。
sudo fdisk -l /dev/sdb1
Run Code Online (Sandbox Code Playgroud)
回来
Disk /dev/sdb1: 16.0 GB, 16037969920 bytes
64 heads, 32 sectors/track, 15295 cylinders, total 31324160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I>/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x57155aa7
Device Boot Start End Blocks Id System
/dev/sdb1p1 2048 31324159 15661056 5 Extended
Run Code Online (Sandbox Code Playgroud)
所以我然后尝试
sudo fdisk /dev/sdb1
Command (m for help): m
Command action
. . .
Run Code Online (Sandbox Code Playgroud)
其次是
Command (m for help): d Extended
Selected partition 1
Command (m for help): v
Remaining 31324159 unallocated 512-byte sectors
Run Code Online (Sandbox Code Playgroud)
然后当再次提示时选择 fdisk 创建一个空的 dos 分区表(我认为我可以稍后用我想要的任何内容覆盖)
Command (m for help): v
Remaining 31324159 unallocated 512-byte sectors
Command (m for help): o
Building a new DOS disklabel with disk identifier 0xea06616f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
Run Code Online (Sandbox Code Playgroud)
我认为返回的消息意味着我至少“破坏”了 iso9660 fs 所以继续尝试 mkfs
sudo mkfs /dev/sdb1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
979200 inodes, 3915520 blocks
.195776 blocks (5.00%) reserved for the super user
First data block=0
.Maximum filesystem blocks=4009754624
120 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Run Code Online (Sandbox Code Playgroud)
所有这些都给我留下了拇指驱动器上的“lost+found”目录。
sudo mount /dev/sdb1 /media/
ls /media/
lost+found
Run Code Online (Sandbox Code Playgroud)
最后,我访问了 Ubuntu 网站(http://www.ubuntu.com/download/ubuntu/download,第 2 节)并使用该棒创建了 Ubuntu 的可引导映像以供试用,它让我。以这种方式在棒上制作的 Ubuntu 映像的美妙之处在于它们可以轻松删除,并且可以将棒回收用于其他用途。
我提到这最后一步是因为事后我想知道我是否一开始就这样做了它会起作用,我不知道。如前所述,我是 Linux 方面的新手,正在尝试使用任何最方便的媒体在 live cd 上的不同发行版(例如 Fedora、Ubuntu 等),而且我确实在此过程中破坏了很多东西。
mkdosfs -I /dev/sdb
Run Code Online (Sandbox Code Playgroud)
将在驱动器上创建一个 vfat 文件系统。如果您希望在整个驱动器上而不是在分区上创建文件系统,则必须传递 -I。如果要先对驱动器进行分区,请使用 fdisk。当然 fdisk 现在无法读取驱动器,因为它没有任何分区。但我相信它能够写入它。