跳到正文
TURNKEYGNU / LINUX
应用文档博客截图GitHubTurnKey Hub
文中文
EnglishEspañol中文日本語PortuguêsDeutsch
ưμ㼯A/如何:通过直播CD/ISO或备用Linux系统将芯片切入破损系统

文档

如何:通过直播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
TURNKEYGNU / LINUX

无需从零开始,掌控自己的基础设施。

探索 TurnKey
关于文档常见问题博客GitHub
自由开源默认安全随时可部署