文档
如何:通过直播CD/ISO或备用Linux系统将芯片切入破损系统
有时,您可能需要营救一个破损/无法启动的 TurnKey 服务器 。 也许你有硬件故障, 或者你无意中弄坏了什么, 或者你安装了一个故障更新 打破了什么?
这些问题往往可以通过从一个功能化的(Linux)系统"chrooting"进入破损的系统来固定,然后采取必要步骤来解决问题(reinstall grub,, 重新安装内核,重建initramfs等。 显然,修复破损系统的步骤将取决于实际破损的是什么。 如果你不确定,那你最好在电视上 开始新的线程 论坛 (需要免费的网站用户账户来启动新线索),这样我们就可以协助诊断这个问题.
在这个医生里,我只建议你进入一个小圈子, 而不谈如何解决任何具体问题的细节(尽管,如果/当我得到一个 可能我会为一些常见问题写上医生的网页!
说明: 此指南假设您在登录根用户账户。 如果不是, 需要用“ sudo” 来预先填入在 chroot 外运行的多数( 如果不是全部) 命令 。 如果通过sudo进入chroot,那么就不应该在chroot内部要求一次.
所以首先,一个小背景,如果你宁愿直接跳进... 设置芯片请随便
什么是"鸡"
根据维基百科,a 圆心:
更改当前运行的进程及其子的明显根目录。 在这样的修改环境中运行的程序不能在指定的目录树外命名(因此通常不能访问)文件.
作为Linux用户,你可能会遇到两种类型的chroot。我所说的"标准"chroot(这个doc页面所覆盖的),然后还有一个"chroot监狱".
用于将用户或处理程序锁定在目录树的某一部分的chroot监牢的目的. E. 一个程序可能被“chround”插入到它自己的目录中(例如Postfix就是像这样设置的),没有访问文件系统其它部分的功能. 或者有限用户可能被"chround"输入到他们的家目录中,因此他们可以使用(例如)SFTP,但不能浏览整个文件系统.
一种"标准"chroot可用于调查,并可能修复一个无法启动的系统,它也常用来建造新的Linux系统. 例如,TurnKey使用"标准"chroot(在 TKLDev 密码)来构建 TurnKey 应用设备。这就是我在此记录的chroot。
设立一个支线
筹备
首要任务就是确保破损系统的文件系统可以从工作系统中访问. 对于裸金属安装或VM,最容易做到的办法是从Live CD/USB/ISO中启动。 一般情况下,通常最好使用与破损系统相同的OS. 在TurnKey的情况下,可以使用. 核心 (或任何其他服务器;只是Core是最小的)同一主要版本. E. 例如 v15. 0 Core 就可以用来修正任何v15.x 应用设备. 如果这不是一个选项,Debian Live系统也是一个很好的选项. 最坏的情况是,您可以摆脱任何相对最近的Linux distro,尽管匹配版本的TurnKey(或Debian)更可取.
随便你做什么 做 NOT 动作 安装在系统破损的顶部,这样就无法恢复了!
或者,您可以将磁盘(物理或虚拟)移动到另一台(工作)机器(如上运行的TurnKey/Debian/etc). 对于一个AWS服务器,它本质上也是你需要做的(即将主音量从破碎的系统拆解,重新接上工作系统).
找到正确的挂载量
在你把破碎的初等卷 放在工作系统之后,下一步是挂载它。 要挂载,你需要确保有一个干净的挂载位置,你还需要研究你需要挂载的磁盘/卷/部分.
一个简单的方法可以确保您有一个干净的挂载位置,就是创建它。所以类似这样的东西:
mkdir /rescue
确保您找到正确的驱动器/音量/部件(s)可以比较狡猾,但您可以使用的一个工具是光碟。要查看所有附加的卷,请运行:
fdisk -l
以下是我正在工作的AWS服务器上的输出。它有一个二次驱动器(另一个服务器的根音量),作为/dev/xvdf,的默认根音量(即. 工作服务器的根音量)是 /dev/xvda.,对于您来说可能有所不同(虽然您在 AWS 上可能是一样的). 以下是完整的输出:
root@core ~# fdisk -l Disk /dev/xvda: 10 GiB, 10737418240 bytes, 20971520 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 Disklabel type: gpt Disk identifier: 6183BC26-31B1-41F2-9AB9-319B7C4A85B0 Device Start End Sectors Size Type /dev/xvda1 2048 6143 4096 2M BIOS boot /dev/xvda2 6144 20969471 20963328 10G Linux filesystem Disk /dev/xvdf: 10 GiB, 10737418240 bytes, 20971520 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 Disklabel type: gpt Disk identifier: 0029AB38-4BE5-4009-B163-9A7B4F597FE4 Device Start End Sectors Size Type /dev/xvdf1 2048 6143 4096 2M BIOS boot /dev/xvdf2 6144 20969471 20963328 10G Linux filesystem
如果您不确定哪个音量是哪个, 请检查哪些音量已经挂载。 像这样做 :
mount | grep ^/dev
检查从 /dev. 开始的挂载输出的所有线条 在我的案例中,这证实了我已经知道的, 我已经挂载的风波是 /dev/xvda:
root@core ~# mount | grep ^/dev /dev/xvda2 on / type ext4 (rw,relatime,data=ordered) /dev/xvda2 on /tmp type ext4 (rw,relatime,data=ordered) /dev/xvda2 on /var/cache/tklbam type ext4 (rw,relatime,data=ordered)
上载破碎的系统准备切换
所以一旦你确定需要安装哪个分区,那就很简单了。就我而言,我需要安装的分区是/dev/xvdf2(即: /dev/xvf).上的第二个分区,如果从上面看,从fdisk看,你会看到/dev/xvdf1是"BIOS 启动",/dev/xvdf2是"Linux 文件系统". 装上它就如同这个:
mount /dev/xvdf2 /rescue
如果您现在在 /rescue 中检查( 即是 /rescue),), 您应该看到类似的东西 :
root@core ~# ls -l /rescue total 92 drwxr-xr-x 2 root root 4096 Apr 16 02:49 bin drwxr-xr-x 3 root root 4096 Apr 16 02:50 boot drwxr-xr-x 5 root root 4096 Oct 3 2018 dev drwxr-xr-x 100 root root 4096 Apr 16 02:50 etc drwxr-xr-x 3 root root 4096 Oct 3 2018 home lrwxrwxrwx 1 root root 29 Oct 3 2018 initrd.img -> boot/initrd.img-4.9.0-8-amd64 lrwxrwxrwx 1 root root 29 Oct 3 2018 initrd.img.old -> boot/initrd.img-4.9.0-8-amd64 drwxr-xr-x 18 root root 4096 Oct 3 2018 lib drwxr-xr-x 2 root root 4096 Mar 11 2018 lib64 drwx------ 2 root root 16384 Oct 3 2018 lost+found drwxr-xr-x 2 root root 4096 Mar 11 2018 media drwxr-xr-x 4 root root 4096 Apr 16 02:49 mnt drwxr-xr-x 2 root root 4096 Mar 11 2018 opt drwxr-xr-x 2 root root 4096 Feb 23 2018 proc drwx------ 5 root root 4096 Oct 3 2018 root drwxr-xr-x 12 root root 4096 Oct 3 2018 run drwxr-xr-x 2 root root 4096 Apr 16 02:49 sbin drwxr-xr-x 2 root root 4096 Mar 11 2018 srv drwxr-xr-x 2 root root 4096 Feb 12 2017 sys drwxrwxrwt 7 root root 4096 Apr 16 02:51 tmp drwxr-xr-x 10 root root 4096 Mar 11 2018 usr drwxr-xr-x 13 root root 4096 Oct 3 2018 var lrwxrwxrwx 1 root root 26 Oct 3 2018 vmlinuz -> boot/vmlinuz-4.9.0-8-amd64 lrwxrwxrwx 1 root root 26 Oct 3 2018 vmlinuz.old -> boot/vmlinuz-4.9.0-8-amd64
显然,日期不同,但除此之外,这表明该系统已按预期安装。 TurnKey的所有当前构造都包括/boot分区,尽管在一些较旧的发行版中,如果安装使用LVM,那么/boot分区可能需要单独挂载. 在这种情况下,在主操作系统挂载后,挂载启动目录。例如,类似这样的(适合):
mount /dev/sdXN /rescue/boot
/dev/sdXN是靴子信息所在的分区。
但等一下... ! 一旦主操作系统挂载完毕, 您还需要挂载一些主机的特殊目录, 这样chroot 才能正常运行 。 主要是/dev, /proc和/sys. /dev/pts也值得加挂。 以我的经验,你可以不挂起那个就逃走, 但你经常会出错, 所以值得挂起这个来减少噪音。
mount -t proc proc /rescue/proc mount -t sysfs sys /rescue/sys mount -o bind /dev /rescue/dev mount -t devpts pts /rescue/dev/pts
正在锁定
现在你只需要把事情搞砸 这样就够了
chroot /rescue
很简单... !
现在,你做你需要做的来修复你的系统。一旦你高兴(或只是准备测试),你就可以像这样离开芯片:
exit
之后的清理工作
如果您需要停止服务器以删除损坏的驱动器, 那么不需要清理。 所有组件都应该自动卸载, 作为关闭进程的一部分 。 如果你不需要停止服务器,重启是清理chroot最简单的方式. 然而,如果你不停止你正在使用的服务器,或者出于其他原因,想取消chroot配置,那么你退出chroot后,只需要 返回轨道。I. 即使用乌山而不是挂载,然后按反向排列顺序卸载。
umount /rescue/dev/pts umount /rescue/dev umount /rescue/sys umount /rescue/proc
如果您安装了单独的启动分区, 则卸载下一个。 I. 即“ 卸载 /rescue/boot'. ” , 最后, 主音量 :
umount /rescue