Я читал эту цитату (ниже) несколько раз, совсем недавно здесь , и постоянно удивляюсь, как dd
можно использовать для исправления чего-либо, не говоря уже о компиляторе:
Система Unix, которую я использовал в школе 30 лет назад, была очень ограничена в оперативной памяти и дисковом пространстве. Особенно
/usr/tmp
файловая система была очень маленькой, что приводило к проблемам, когда кто-то пытался скомпилировать большую программу. Конечно, студенты не должны были писать «большие программы» в любом случае; большие программы обычно были исходными кодами, скопированными откуда-то. Многие из нас скопировали/usr/bin/cc
в/home/<myname>/cc
, и используютсяdd
для исправления двоичного файла использовать/tmp
вместо/usr/tmp
, который был больше. Конечно, это только усугубило проблему - дисковое пространство, занимаемое этими копиями, имело значение в те дни и теперь/tmp
регулярно заполнялось, не позволяя другим пользователям даже редактировать свои файлы. После того, как они узнали, что случилось, сисадмины сделалиchmod go-r /bin/* /usr/bin/*
которая "исправила" проблему, и удалила все наши копии компилятора C.
(Акцент мой)
На dd
странице руководства ничего не говорится о исправлении, и я не думаю, что в любом случае это можно изменить.
Могут ли быть исправлены двоичные файлы dd
? Есть ли в этом историческое значение?
od
файл для байт-шестнадцатеричных кодов, найдитеbs=$patchsize count=1 seek=$((offset/bs)) conv=notrunc
нужное смещение, решите, что вы хотите редактировать, и ваш патч прямо сейчас.