Хорошо, если кто-то хочет сыграть в бога и творить чудеса, я упал.
Итак, мне было поручено создать скрипт, который находит файлы старше 6 месяцев, заархивирует их, а затем удаляет. На моем пути к созданию сценария tihs я запустил это:
find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla
И это дало КАЖДОМУ ФАЙЛУ расширение .gz. Теперь я расстегнул его, как только заметил, но было уже поздно. После завершения команды ни одна из моих команд bash не будет работать, потому что переменная $ PATH опустела сама себя. Я много чего перепробовал, прежде чем понял, в чем проблема.
Так что после распаковки всего я все еще не могу загрузиться. Мне удалось сделать это для спасения grub, после чего я выполнил онлайн-инструкции для:
root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]
После этого мой Linux частично загружается, но дает мне следующие ошибки:
Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.
Я попытался восстановить файловую систему, я загрузился с 3 разных LiveCD / аварийных дисков, я запустил восстановление загрузки с 2 разных dicsc. Я заставил fscks ...
У меня действительно нет идей, и мне НУЖНО заставить этот сервер хотя бы загрузиться, чтобы я мог восстановить свои базы данных SQL. Я отчаянно нуждаюсь в помощи, даже заплачу, если понадобится.
Я скрывался на форумах 3 дня подряд, весь день, чтобы найти возможное решение, и я все еще на том же этапе ... Помогите, пожалуйста?
Первое, что я попробую, это запустить среду LiveCD и просто попытаться разархивировать все, надеясь, что это вернет систему в состояние загрузки. Примечание. Меня беспокоит возможное повреждение данных, если исходный процесс gzip был прерван.
В противном случае я бы попытался перенести БД в новую систему, как предлагали другие, но, как вы столкнулись, могут возникнуть трудоемкие проблемы с зависимостями и конфигурацией, которые необходимо будет решать индивидуально.
Это будет зависеть от того, достаточно ли отремонтированы файловые системы, чтобы вы могли смонтировать эти разделы с LiveCD. Не пытайтесь пока загрузить систему. Сначала смонтируйте разделы и разархивируйте все файлы .gz. Это даст вам рабочие копии init и системных двоичных файлов. Затем вы можете использовать grub для восстановления загрузочного сектора. Затем загрузитесь в однопользовательский режим и снова проверьте файловую систему. Если это сработает, у вас будет работающая система. У вас также будет куча разархивированных файлов (например, страниц руководства), которые действительно следует заархивировать, но это лучше, чем наличие незагружаемой системы.
Если вы не можете смонтировать разделы с LiveCD, то, к сожалению, вам не повезло. На этом этапе ничто не восстановит вашу систему.
Общий консенсус в том, что вы должны просто смонтировать диск в работающей системе и спасти свои файлы, не ошибочен. Это разумный поступок. Но другой способ более интересный и очень познавательный. Я многому научился, пытаясь выбраться из неприятных ситуаций, когда другие люди просто сдались бы и переустановили с нуля. (Но не на сервере, от которого зависят другие люди ...)
В любом случае, пока что у вас есть запущенная initramfs (initrd). Это хорошее начало. Но он не может завершить передачу на init, потому что init сейчас init.gz
может быть? Чтобы добиться прогресса, полезно знать, какой у вас дистрибутив Linux, чтобы мы могли узнать, какие инструменты доступны в его initramfs для экстренного использования.
Представленные вами сообщения об ошибках выглядят так, как будто они могли быть получены из initramfs Debian. Если это Debian, то вы должны получить (initramfs)
приглашение оболочки на следующей строке после последней ошибки. Если да, то вам стоит разобраться, что происходит с этими неудачными креплениями. является /root/dev
отсутствует? (/root
это место, где должен быть смонтирован ваш обычный корневой fs во время работы initramfs)
Если вы не получили приглашение оболочки, то что было после No init found. Try passing init= bootarg.
будет интересно. Даже если это был всего лишь мигающий курсор, это ключ к разгадке. Если он кажется полностью замороженным, попробуйте получить информацию о том, какие процессы еще выполняются, с помощью magic sysrq или Ctrl + ScrollLock.
Debian initramfs также позволяет вам запрашивать оболочку по нескольким специальным ориентирам, добавляя break=
параметр в командной строке ядра. Например, чтобы получить оболочку перед Running /scripts/init-bottom
линия, используйте break=bottom
.
В сторону: я не знаю, как find
команда могла быть сжата каждый файл ... мне кажется правильным с точки зрения выбора файлов возрастом от 180 до 400 дней.