如何从 USB 中删除 iso 9660?

如何从 USB 中删除 iso 9660?

我设法将 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-storage:在 4 处找到设备
usb-storage:等待设备稳定后再进行扫描
usb-storage:设备扫描完成
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

编辑3dmesg:这是我在运行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、逻辑块 0 上的缓冲区 I/O 错误
由于 sdb 上的 I/O 错误导致页面写入丢失

答案1

好吧,事实证明,在这种情况下,某些事情(可能是当我将 iso-9660 文件系统写入驱动器时)触发了驱动器上某种形式的内部写保护。外部写保护/保持开关,但这是dmesg我运行时的输出

dd if=/dev/zero of=/dev/sdb

以 root 身份:

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] 感知密钥:数据保护 [当前]
信息 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] 假设驱动器缓存:直写

请注意,此消息表明该设备不是写保护!不幸的是,磁盘似乎已经写保护了(即完蛋了)。

答案2

我对 Linux 系统管理还不熟悉,因此当我遇到完全相同的问题时,我尝试了各种方法,没有使用特别疯狂的方法,但成功删除了 iso9660 fs 并恢复了拇指驱动器。

sudo fdisk -l  /dev/sdb1

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

所以我尝试

sudo fdisk /dev/sdb1

Command (m for help): m
Command action
  . . .

其次是

Command (m for help): d Extended
Selected partition 1

Command (m for help): v
Remaining 31324159 unallocated 512-byte sectors

然后当再次提示选择 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.

我认为返回的消息意味着我至少“破坏”了 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.

这一切让我的拇指驱动器上只剩下了“lost+found”目录。

sudo mount /dev/sdb1 /media/
ls /media/
lost+found

最后,我去了 Ubuntu 网站(http://www.ubuntu.com/download/ubuntu/download,第 2 节)并使用该记忆棒创建 Ubuntu 的可启动映像以供试用,它让我。以这种方式在记忆棒上创建的 Ubuntu 映像的优点在于可以轻松删除它们并回收该记忆棒用于其他用途。

我提到这最后一步是因为事后想想,如果我一开始就这么做了,它是否会起作用,我不知道。正如提到的,我是 Linux 新手,正在使用最方便的任何媒体在 Live CD 上尝试不同的发行版(例如 Fedora、Ubuntu 等),而且我确实在此过程中破坏了很多东西。

答案3

mkdosfs -I /dev/sdb

将在驱动器上创建 vfat 文件系统。如果希望在整个驱动器上而不是在分区上创建文件系统,则必须传递 -I。如果要先对驱动器进行分区,请使用 fdisk。当然,fdisk 现在无法读取驱动器,因为它没有任何分区。但我确信它能够写入它。

答案4

查看dmesg代码片段,似乎有东西正在自动安装驱动器(使用 检查mount)。在对其进行任何操作之前,您应该手动将其卸载。

然后将分区表所在的块清零(dd if=/dev/zero of=... bs=512 count=1),并运行分区工具重新创建一个空的分区表。之后,拔下并重新插入(应该不需要,但是……)并在其上创建/格式化您想要的分区。创建分区后(也许您必须再次拔下并重新插入),您应该有/dev/sdb1或类似的东西,这就是您应该创建文件系统的地方。

请注意,所有步骤都应以 root 身份(或同等权限)执行sudo。注意不要写错设备名称,否则可能会擦除硬盘!

相关内容