linux下制作Bootable-U盘


http://www.laomaotao.net/new/2012/0707/919.html

进不了系统了,里面的数据很重要,为了把硬盘中的数据进行恢复,想了多个办法,当然很多办法是可行的,比如把硬盘拿下来挂在另一个linux系统上,把数据考出来;比如跳过控制台进入系统进行考数据。后来我就想制作一个U盘启动的linux系统,以后做些东西就比较方便了,所以就研究了两个小时,下面是制作的过程,以供大家分享。在进行mknod时,着实看了不少的英语文档,后来终于明白了。
  一.对U盘进行处理
  1.分区:(插上U盘)
  # fdisk /dev/sdb
  d Enter 删除原有分区
  n Enter 新建一个主分区
  w Enter 保存设置
  # partprobe /dev/sdb 刷新U盘
  2.设定U盘分区为活动分区
  # fdisk /dev/sdb
  a Enter 设定为活动分区
  1 Enter 选择分区
  3.对硬盘分区进行格式化,格式化成ext3格式
  # mkfs.ext3 /dev/sdb1
  二.装filesystem包 (目的:生成根下的root,usr,var ...等目录)
  1.配置好yum
  2.加载U盘到/net下
  # mount /dev/sdb1 /net
  3.安装
  # yum -y install --installrot=/net filesystem
  安装完成后,可查看/net下生成了多个目录
  三.加载系统启动项
  1.# cp /boot/vmlinuz-2.6.18-128.el5 /net/boot/
  2.生成initrd.img `uname -r`为取系统版本号
  # mkinitrd --with=usb-storage /net/boot/initrd-usb.img `uname -r`
  3.查看/net/boot/下是否有vmlinuz和initrd
  四.制作boot loader(grub)
  1.# yum -y install --installroot=/net grub
  2.grub.conf不成自动生成,要手工创建
  # cp /boot/grub/grub.conf /net/boot/grub/grub.conf 并作修改
  # cat /net/boot/grub.conf
  default = 0
  timeout = 5
  title redhat-usb-linux
  root(hd0,0)
  kernel /boot/vmlinuz-2.6.18-128.el5 ro root=/dev/sdb1 init=/dev/bash
  initrd /boot/initrd-usb.img
  此处填写的内容要与/net/boot/grub/下的文件名一致
  五.安装命令库文件
  # yum -y install --installroot=/net bash coreutils pam setup vim-enhanced vim-minimal util-
  linux net-tools SysVinit passwd shadow-utils authconfig
  可通过rpm -qf /bin/mount 查看包名
  此时chroot /net下可使用刚才安装的命令了
  六.创建磁盘分区
  # mknod /net/dev/sdb b 8 16
  # mknod /net/dev/sdb1 b 8 17
  b表示块设备,8为主设备号,16、17为次设备号
  --------------------------
  | 有关设备号的解释:
  | 1.对于一块SCSI/SATA硬盘(格式为sd*),主设备号为8,
  | 第一块硬盘的次设备号为0-15,第二块硬盘的次设
  | 备号为16-31,依次类推。因为对于硬盘来说,主分
  | 区最多为4个,可以3个主分区1个扩展分区,扩展分
  | 区仍然可以再分区,但是分区的总数最多为16个,所
  | 以每一块硬盘的次设备号为16个(0-15,16-31)。
  | 2.对于一块IDE硬盘(格式为hd*),主设备号为3,次设
  | 备号第一块为0-63,第二块为64-127。
  | 3.# ls -l /dev/sd*
  | brw-r----- 1 root disk 8, 0 10-16 14:53 /dev/sda
  | brw-r----- 1 root disk 8, 1 10-16 14:54 /dev/sda1
  | brw-r----- 1 root disk 8, 2 10-16 14:53 /dev/sda2
  | brw-r----- 1 root disk 8, 3 10-16 14:54 /dev/sda3
  | brw-r----- 1 root disk 8, 16 10-16 15:50 /dev/sdb
  | brw-r----- 1 root disk 8, 17 10-16 15:50 /dev/sdb1
  | brw-r----- 1 root disk 8, 32 10-16 15:50 /dev/sdc
  | brw-r----- 1 root disk 8, 36 10-16 15:50 /dev/sdc4
  | 以上是我一台主机上插了1个硬盘,两个U盘的显示情况,我
  | 们可以看到设备号的显示情况。
  | 4.在linux中一切皆文件,硬件也是通过文件体现出来的,所
  | 有硬件设备都在/dev/有所显示。
  | 5.更具体的设备号研究可以查看下面的文件。
  | # yum install kernel-doc
  | # /usr/share/doc/kernel-doc-2.6.18/Documentation/devices.txt
  ---------------------------
  七.
  1.创建mtab
  # cat /net/etc/mtab
  /dev/sdb1 / ext3 rw 0 0
  2.创建fstab
  # cat /net/etc/fstab
  /dev/sdb1 / ext3 default 1 1
  八.安装grub
  # chroot /net
  # grub-install /dev/sdb1
  注:
  1.如果创建硬盘分区的时候没有配置正确,在第八步会报错:
  the file /boot/grub/stage1 not read correctly
  2.在用U盘启动后,进入到U盘中的系统,此时我们可以用已经
  安装过的命令集,但是此时的文件系统是只读的,我们不能vim,
  mount等的操作,此时必须用下面这个命令,进行重新读写挂载:
  # mount -o remount,rw /
  重挂载后,就可以了。

不小心扯出这么多的东西,不得不感叹这世上程序猿还真不少!!
U盘坏了能有这么多具体方案!

可惜的是下面这篇忘了摘网址了,如有版权问题,请从速与本人联系,不便之处敬请原谅!

已经有大概一个月时间U盘出现文件系统只读的问题了。症状为无法删除U盘中现有文件,无法向U盘拷贝新的文件。但不知道是什么原因。今天下决心解决这个问题。
       首先是在google和baidu上搜索相关资料,有价值的有以下几个:
       3.  http://hi.baidu.com/skyyjl/item/27c993babe0a1ff362388ed1
       其中最有价值的是2和3,但我是通过1找到2的……
       解决方法:
       1. 在Linux系统(ubuntu)中运行如下命令

tail -f /var/log/syslog

       2. 插入有只读文件系统故障的U盘
       3. 观察命令行输出
输出局部如下:

Jul 8 16:44:50 cslouis-pc kernel: [15595.155904] FAT: Filesystem error (dev sdb4) Jul 8 16:44:50 cslouis-pc kernel: [15595.155905] fat_get_cluster: invalid cluster chain (i_pos 0)

 这表明U盘挂载的文件系统是/dev/sdb4,且文件系统有故障( FAT: Filesystem error
       4. 输入umountU盘命令(注意:此时文件系统还在)

umount /media/** (**是你的U盘名,可以在media目录下查看)

       5. 修复U盘文件系统故障

sudo dosfsck -v -a /dev/sdb4

输出:

dosfsck 3.0.9 (31 Jan 2010) dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN Checking we can access the last sector of the filesystem Boot sector contents: System ID "MSDOS5.0" Media byte 0xf8 (hard disk) 512 bytes per logical sector 4096 bytes per cluster 36 reserved sectors First FAT starts at byte 18432 (sector 36) 2 FATs, 32 bit entries 7801856 bytes per FAT (= 15238 sectors) Root directory start at cluster 2 (arbitrary size) Data area starts at byte 15622144 (sector 30512) 1950354 data clusters (7988649984 bytes) 63 sectors/track, 255 heads 63 hidden sectors 15633345 sectors total FATs differ but appear to be intact. Using first FAT. /UNIX:8r4:6MP Contains a free cluster (7168). Assuming EOF. Reclaiming unconnected clusters. Reclaimed 28283 unused clusters (115847168 bytes) in 16 chains. Checking free cluster summary. Performing changes. /dev/sdb4: 3847 files, 488059/1950354 clusters


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值