热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxU盘启动系统的制作

文章标题:linuxU盘启动系统的制作。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  前两天公司一linux系统被误删除文件,进不了系统了,里面的数据很重要,为了把硬盘中的数据进行恢复,想了多个办法,当然很多办法是可行的,比如把硬盘拿下来挂在另一个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 /

  重挂载后,就可以了。


推荐阅读
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上配置环境变量,实现Python3的命令行调用的步骤。首先通过官网下载或使用brew安装Python3,并找到安装路径。然后将该路径添加到环境变量中,可以通过编辑.bash_profile文件或执行source命令来实现。配置完成后,即可在命令行中直接调用Python3。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文详细介绍了Vim编辑器中的三种模式(命令模式、末行模式和编辑模式)以及它们之间的操作区别和切换方法。Vim编辑器凭借其多种命令快捷键和高效率的操作方式,得到了广大厂商和用户的认可。对于想要高效操作文本的用户来说,了解这些模式的使用方法是必不可少的。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 找到JDK下载URL当然去官网找了。目前最新的1.8的下载URL(RPM)如下:http:download.oracle.comotn-pubjavajdk8u161-b122f3 ... [详细]
author-avatar
最爱靖哥哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有