linux 修复grub及mount 命令的妙用

前天重装了 操作 系统,grub也随之被覆盖,为了恢复启动,我拿了一张ubuntu的live cd启动,进入linux后,进入命令行恢复grub。

首先要挂载原来的/分区

sudo mkdir /mnt/root
sudo mount /dev/sda7 /mnt/root
sudo mount -t proc none /mnt/root/proc
sudo mount -o bind /dev /mnt/root/dev

如果不知道/分区的设备名称,可以使用sudo fdisk -l 查看。

使用chroot进入原来的/分区

chroot /mnt/root /bin/bash
source /etc/profile

恢复grub

sudo grub-install --no-floppy /dev/sda

失败,提示“The file /boot/grub/stage1 not read correctly”

从网上搜索了一下相关的文章,发现是分区有变化引起的,跟文件fstab和mtab有关。

编辑/etc/mtab发现/的分区设备不对,修改对后,重新运行

grub-install /dev/sda成功。

=================================================================================

在固件开发过程中常常遇到这样的情况:为测试某个新功能,必需修改某个系统文件。而这个文件在只读文件系统上(总不能为一个小小的测试就重刷固件吧),或者是虽然文件可写,但是自己对这个改动没有把握,不愿意直接修改。这时候mount --bind就是你的好帮手。

假设我们要改的文件是/etc/hosts,可按下面的步骤操作:

1. 把新的hosts文件放在/tmp下。当然也可放在硬盘或U盘上。
2. mount --bind /tmp/hosts /etc/hosts

测试完成了执行 umount /etc/hosts 断开绑定。

如果我需要在/etc下面增加一个exports文件怎么办?原来没有这个文件,不能直接bind。我们有两个方法:

方法1:绑定整个/etc目录,绑定前先复制/etc
# cp  - / etc  / tmp
# mount 
-- bind  / tmp / etc  / etc
此时的/etc目录是可写的,所做修改不会应用到原来的/etc目录,可以放心测试。

方法2:挂载ramfs到/etc,同样要先复制/etc
挂载ramfs
# mkdir 
/ tmp / etc
# mount 
- t ramfs none  / tmp / etc

复制
/ etc,这里我们不能用cp  - a,改用tar
# cd 
/ etc
# tar cf 
-  .  | (cd  / tmp / etc; tar xf  - )
# cd 
/

覆盖
/ etc
# mount 
-- move  / tmp / etc  / etc
测试完了记着 umount /etc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值