在Linux环境直接复移动硬盘上的GRUB

  手头有一块用了10年的旧移动硬盘,其中安装了Debian系统,从低版本一直升级到现在的9已经用了很长时间。前不久正连着那块硬盘跑着Debian修改文件的时候,由于一个本可避免的意外震动了数据线,瞬间连接中断。后果不必说,自然是系统无法再读写磁盘数据各种I/O错误不能进行任何工作。关机重启后,移动硬盘的启动项从BIOS快捷菜单里消失,成了一个无引导的普通磁盘。

  将移动硬盘连接到运行openSUSE的笔记本检查,见所有的分区都能正确识别,挂载后所有分区可正常读写,文件全部健在。直接重建GRUB,过程记录如下:

打开openSUSE终端,切换到root用户

su -

查看当前所有分区,确定Debian根分区位置为 /dev/sdb2 (没有单独的/boot分区)

lsblk

挂载Debian根分区

mount /dev/sdb2 /mnt

挂载其他需要的系统目录

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

chroot到移动硬盘上的Debian

chroot /mnt

重装GRUB

grub-install /dev/sdb

更新GRUB配置

grub-mkconfig -o /boot/grub/grub.cfg

退出chroot环境

exit

卸载分区和目录

umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt

重建完成

  再次连接移动硬盘已经恢复引导顺利进入Debian系统,修复成功。硬盘里的文件内容和设置停留在传输连接中断前一瞬间的状态,幸好早预料到发生这种事情的可能没有存放重要数据。

  建议不要将进行重要工作的系统安装在老旧、接触不良、质量很一般和读写数据慢的移动设备上,一旦发生意外事件损坏数据甚至磁盘的概率是相当高的。特别是质量一般的USB2.0U盘不要冒险,除非打算专门实战各种修复和数据恢复技能。另外在熊孩子和宠物经常出没的环境尽量不要用移动设备上的系统,以免意外惊喜。

时间: 2024-11-04 17:13:46

在Linux环境直接复移动硬盘上的GRUB的相关文章

Linux环境下在Tomcat上部署JavaWeb工程

本文讲解如何将我们已经编译好的JavaWeb工程在Linux环境下的Tomcat上进行部署,总体上的思路是和Windows下JavaWeb项目部署到tomcat差不多,具体步骤和命令如下. 注:部署之前必须已经在Linux上安装好JDK,具体如何在Linux上安装JDK见:Linux环境下安装JDK 1 准备工作 1.下载安装Xshell.Xftp(用于远程连接Linux主机,具体自行百度) 2.官网下载Linux下tomcat安装包,我用的是:apache-tomcat-6.0.45.tar.

在Linux环境下搭建Tomcat+mysql+jdk环境

注:所有内容都是妹纸我亲自搭建成功运行,如果有问题,欢迎发邮件来交流. [email protected](此QQ只用来收邮件,一般情况下是不会登陆的,所有有问题可以发邮件哦~我会回复的) 按照下面的步骤一步一步来.   [Linux环境] 1.下载并安装一个VMware workstation, 这个是虚拟机的平台,后面要在里面搭建Linux系统. 2.下载一个centos安装包,linux版本有多种,比如说redhat.ubuntu.deepin.BT3,个人比较习惯使用centos,这里下

在LNMP原来的基础上,win7环境下如何上传PHP文件到Linux环境下

首先,下载一个WINSCP客户端 连接主机后,上传文件到自己的保存目录 接着进入数据库添加我们的数据库 mysql -uroot -p  //这个是进入mysql的命令,但是要是你没有加  ln -s /usr/local/mysql/bin/mysql /usr/bin   的话就要输入下面那一行 /usr/local/mysql/bin/mysql -uroot -p create database db1;       //db1是你的数据库名称 退出mysql数据库后输入 mysql -

将windows上面的项目拷贝到Linux环境下报错不能够找到对应的表com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'puyang.ServiceType' doesn't exist

将一模一样的项目从win迁移到到linux上报错: 一开始还是以为是linux不能识别hql语句,查找资料发现是因为Liunx服务器上mysql是区分大小写的,而本地是不区分的如:代码是这样写的 @Entity@Table(name = "users") 数据库建的表名称是Users,那么就会出现以上异常. 将windows上面的项目拷贝到Linux环境下报错不能够找到对应的表com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcepti

在linux环境上对oracle数据库的数据泵导入导出操作

需求:公司搭建的报表库环境数据来自于生产环境oracle数据,因此需要使用kettle将oracle数据每天定时导入到报表数据库中(本文不讨论如何用kettle导数据,不赘述),若要导数据我们需要一套完善的生产oracle数据库的表结构.同时环境搭建以及oracle数据库都在linux环境下部署,因此,需要在linux环境下使用数据泵技术将数据完成导入导出 以上为需求概述 具体实现(即:操作步骤): su - root --切换root用户(由于不知道oracle用户的密码使用root来登录or

Linux(SLES)挂载NTFS移动硬盘实践

问题描写叙述: 因为通过測试环境导出的dmp过大,但要求尽快导入至生产server,请网络室打通防火墙后发现測试网络为100M而生产网络贵为1000M却无法发挥不论什么作用即使通过networklink效率也太低,考虑到两台设备物理位置距离较远无法通过千兆线直连的情况下,最后选择通过移动硬盘作为中转传输介质. 解决方式: Linux挂载NTFS格式硬盘时会报错unknown filesystem type 'ntfs',这时就须要用到第三方的插NTFS-3G来载入NTFS格式硬盘.当中NTFS-

(1)Jenkins Linux环境下的简单搭建

(1)Jenkins Linux环境下的简单搭建 Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. ----百度百科 这是一款基于Java开发的工具.种种原因,最近刚开始接触,决定研究一下.Jenkins的搭建方法不止一种,一下就是个人总结的其中一种,文章内容比较浅显,不足之处,欢迎指正. 首先,所需要准备的工具JDK.Maven.资料上显示JDK版本最好高于1.7,并没有研究1.7以下版本,所谓"没有实际调研,就没有发言权",在此就不做过多

mosquitto在Linux环境下的部署/安装/使用/测试

mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http://mosquitto.org/files/source/官网下载源码,放到Linux环境中.解压后,找到主要配置文件config.mk,其中包含mosquitto的安装选项,需要注意的是,默认情况下mosquitto的安装需要OpenSSL(一个强大的安全

(转载)linux下的僵尸进程处理SIGCHLD信号Linux环境进程间通信(五): 共享内存(下)

Linux环境进程间通信(五): 共享内存(下) 在共享内存(上)中,主要围绕着系统调用mmap()进行讨论的,本部分将讨论系统V共享内存,并通过实验结果对比来阐述两者的异同.系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面. 系统调用mmap()通过映射一个普通文件实现共享内存.系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内