Назад | Перейти на главную страницу

Могу ли я восстановиться после «rm / *»?

Я использую Debian ... И я случайно запустил "rm / *" от имени пользователя root (ура!) - к счастью, я не использовал -r, поэтому каталоги остались нетронутыми. Однако при загрузке я получаю ...

run-init: /sbin/init: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

... однако, проверив диск с другой машины, я могу подтвердить, что /sbin/init существуют. Не хватало только файлов в корне, и я заменил символьные ссылки (initrd.img и vmzlinuz) ...

Возможно, мне нужно заменить еще какие-то ссылки?

Вы действительно бежали

# rm /

или

# rm /*

Потому что, если вы запустили первое, вы не должны были удалять какие-либо файлы, потому что rm не удалит каталог, если вы не добавите -r.

Я бы посоветовал запустить:

# update-initramfs -c -k all
# update-grub

но я не думаю, что это решит вашу проблему. Возможно, вы также захотите проверить свой /boot/grub/menu.lst, чтобы убедиться, что он ссылается на правильные образы ядра и initramfs.

Однажды я хотел напечатать rm folder/* но случайно набрал rm folder /* в работающей системе - SCO Xenix или SCO UNIX. Поскольку UNIX фактически не удаляет открытые файлы, пока они не будут закрыты, система продолжала нормально функционировать.

Я знал, что если я верну все недостающие файлы, перезагрузка пройдет нормально, и ничего плохого не произойдет. К счастью, у меня был другой сервер с такой же установленной ОС, и я перешел к нему, скопировал все файлы из корня файловой системы на дискету и поместил их обратно в кастрированную систему. Позже, тем же вечером, когда все вышли из системы, я перезагрузился, и проблем не было.

Таким образом, вы сможете сделать то же самое, чтобы исправить это. Если у вас нет подходящей работающей системы, но у вас есть рабочая станция с Virtualbox или XEN, вы можете просто установить виртуальную машину, чтобы получить соответствующую систему.

Конечно, я не предлагаю использовать дискеты в наше время, когда у нас есть SCP и FTP для перемещения файлов.

Оказывается, мне не хватало lib64 ...

ln -s /lib lib64

... сервер загружается! :)

Рискуя некроинг, я пришел к этому ответу, пытаясь решить то же самое. Стоит отметить, что если вы попытаетесь восстановиться после этого, пока система все еще работает, вы не сможете выполнить 'ln', потому что вам не хватает библиотеки - вам нужно сделать что-то вроде:

/lib/ld-2.11.1.so /bin/ln -s /lib/ /lib64/