ISO 이미지를 편집하는 방법 (부팅 가능한 ISO 포함)


30

ISO 이미지 를 편집 하는 데 사용할 수있는 우분투 도구를 찾고 있습니다 . Ubuntu 및 Windows ISO와 같이 부팅 가능한 ISO 이미지 포함 편집 된 ISO를 편집 할뿐만 아니라 저장하고 USB 드라이브 나 CD / DVD에 구울 때 여전히 부팅 할 수 있습니다.

답변:


42

ISO 마스터 isomaster 설치

전에 ISO Master를 사용하여 파일을 ISO에 추가했습니다. ISO 부팅 가능 여부를 유지하기 때문에 필요한 것에 적합합니다. 과거에는 음악과 같은 다른 콘텐츠를 라이브 디스크에 추가하는 데 사용했습니다. 그러나 ISO 파일을 변경 한 후에는 "다른 이름으로 저장"만 할 수 있습니다. 즉, 다른 ISO 파일이 만들어 지므로 두 디스크 공간이 충분한 지 확인하십시오.

아이소 마스터


2

PowerISO 는 ISO 편집 소프트웨어 의 Linux 버전 을 출시했습니다 . ISO Master 와 마찬가지로 ISO 가 부팅 가능한지 여부를 유지합니다. 그러나 먼저 파일을 삭제하여 원본 파일에 직접 저장할 수 있으므로 두 파일에 충분한 디스크 공간이 필요하지 않습니다. 또한 ISO Master보다 인터페이스가 더 쉽고 직관적이라고 생각합니다.

Linux 용 PowerISO의 스크린 샷


1

이에 대한 일반적인 대답은 iso 파일의 압축을 풀고 수정 한 후 다시 압축하는 것입니다. dv3500ea의 답변에서 언급했듯이 "ISO Master"처럼 보이는 것이 좋습니다.

만약:

  • 충분한 공간이 없습니다
  • 당신은 전체를 다시 쓰는 대신 외과 수정을하고 싶어
  • 전체 장치를 복사하지 않고 isofs 파일 시스템 (일명 iso9660)이 포함 된 저장 장치를 수정하려는 경우
  • 이 포장 풀기 / 재 포장 물건이 충분히 해킹되지 않았다고 생각하면

그렇다면이 대답은 당신을위한 것입니다!

요약하면 isofs 파일 시스템의 기존 파일을 원하는 파일로 바꿉니다. 원하는 파일은 기존 (대상) 파일보다 작아야하며 후행 공백 (또는 가비지)이 허용 가능해야합니다. 실제로 두 명령 만 필요하지만주의하십시오. 오타는 대상 파일 시스템을 완전히 파괴하거나 소스 파일을 덮어 쓸 수도 있습니다. 백업은 당신의 친구입니다!

필자의 경우 스크립트를 라이브 부팅에 저장하여 매번 다시 입력 할 필요가 없었습니다. 스크립트가에 script.py있고 내 대상 (USB 스틱)이에 /dev/sdc있습니다. 스크립트의 크기는 202 바이트이므로 첫 번째 단계는 202 바이트보다 큰 파일을 찾는 것이므로 덮어 쓸 수 있습니다. 에 마운트 한 후에 /mnt적합한 파일을 찾았습니다 /mnt/info.txt.

우리는 info.txt마운트 포인트를 덮어 쓸 수 없으며 읽기 전용 파일 시스템이라고 불평합니다. 우리는 근본이기 때문에 그것이 무엇을 의미하는지 보여 드리겠습니다! info.txt파일 시스템의 어디에 있는지 알아 내야 합니다. info.txt예를 들어 고유 한 문자열을 찾아 This is the official distribution CD of X.디스크에서 검색하십시오.

$ sudo strings -a -t d /dev/sdc | grep 'CD of X.'
2573588480 This is the official distribution CD of X. See INSTALL for how to [...]

또는 grep을 사용하여 훨씬 빠르게 수행 할 수도 있지만 처음부터 지정해야합니다 $ sudo grep -oba 'This is ...' /dev/sdc.

이제 그것이 어디에 있는지 알았으므로, 그 바이트를 파일로 바꾸면됩니다.

$ sudo dd if=script.py of=/dev/sdc conv=notrunc bs=1 seek=2573588480 count=202

이 줄 :

  • 바이트는 입력 파일 ( if)에서 출력 파일 ( of)로 바이트를 복사 하며 "모든 것이 파일"이므로 출력 파일이 실제로 장치인지는 상관하지 않습니다.
  • conv=notrunc 우리는 출력 파일을 자르지 말라고 지시합니다. 왜냐하면 우리는 특정 시점부터 파일을 덮어 쓰지 않고 몇 바이트 만 덮어 쓰려고하기 때문입니다.
  • bs=1 블록 크기를 1로 설정합니다. 일반적으로 4k 이상의 블록 크기를 원하지만 둘 다 (인라인) 수학을 수행하지 않고 바이트에 정확한 위치를 지정할 수 있습니다.
  • seek=N출력 파일에서 특정 지점을 찾습니다 ( 입력 파일에서 바이트를 건너 뛰기 때문에 seek=N와 다릅니다 ). 물론 대상 텍스트가있는 위치로 설정했습니다.skip=Nskip
  • count=N이 많은 바이트 만 복사하십시오. 입력 파일의 끝을 알 수 있기 때문에 이것을 생략 할 수 있다고 생각하지만 확실하게 남겨 두었습니다.

그리고 짜잔, 파일을 덮어 씁니다!

그러나 대상 파일이 스크립트보다 크기 때문에 USB 스틱에서 파일은 이제 "run () blah; blah (); yright 2007 X Inc. 후행 쓰레기가 있습니다. 이 문제를 해결하는 두 가지 방법 : 입력 파일을 더 길게 (공백 추가) 또는 끝에 주석 기호를 추가하십시오. 설정할 수 있도록 많은 편집자가, 마지막에 개행을 추가하는 것이 주 count=N-1바이트 (파일은 이제 203 바이트 인 경우, 당신은 마지막 바이트가 줄 바꿈, 202 세트 수를 것을 알). xxd script.py | tail마지막 바이트가 0a(또는 이상한 경우 0d) 사용 하고 확인 하여 줄 바꿈 파일을 확인할 수 있습니다 .

프로세스는 .iso파일에 대해 동일하며 정신적으로 대체 /dev/sdc됩니다 your.iso.

마운트 지점에서 대상이 작동하는지 확인하기 위해 strings파일이 여전히 읽기 캐시 에 있으므로 다시 사용해야 합니다 (이번에는 스크립트를 검색해야 함).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.