Tôi đã đọc trích dẫn này (bên dưới) nhiều lần, gần đây nhất ở đây , và liên tục bối rối về cách dd
có thể được sử dụng để vá bất cứ thứ gì chứ đừng nói đến trình biên dịch:
Hệ thống Unix tôi đã sử dụng ở trường, 30 năm trước, rất hạn chế về dung lượng RAM và ổ đĩa. Đặc biệt,
/usr/tmp
hệ thống tập tin rất nhỏ, dẫn đến sự cố khi ai đó cố gắng biên dịch một chương trình lớn. Tất nhiên, dù sao đi nữa, sinh viên không nên viết "chương trình lớn"; các chương trình lớn thường là mã nguồn được sao chép từ "một nơi nào đó". Nhiều người trong chúng sao chép/usr/bin/cc
đến/home/<myname>/cc
, và dùngdd
để đắp vá các nhị phân để sử dụng/tmp
thay vì/usr/tmp
, đó là lớn hơn. Tất nhiên, điều này chỉ làm cho vấn đề trở nên tồi tệ hơn - không gian đĩa bị chiếm giữ bởi những bản sao này đã trở thành vấn đề trong những ngày đó, và hiện được/tmp
lấp đầy thường xuyên, ngăn người dùng khác thậm chí chỉnh sửa tệp của họ. Sau khi họ phát hiện ra chuyện gì đã xảy ra, các sysadins đã làm mộtchmod go-r /bin/* /usr/bin/*
đã "khắc phục" sự cố và xóa tất cả các bản sao của trình biên dịch C.
(Nhấn mạnh của tôi)
Trang dd
con người không nói gì về việc vá và đừng nghĩ rằng nó có thể được tái định hướng để làm điều này.
Nhị phân thực sự có thể được vá với dd
? Có bất kỳ ý nghĩa lịch sử cho điều này?
od
một tệp cho mã hex byte, tìm phần bù bạn cần, quyết định chỉnh sửa vàbs=$patchsize count=1 seek=$((offset/bs)) conv=notrunc
bản vá của bạn ngay trong đó