저는 임베디드 Linux 하드웨어를 이미지화하기 위해 Buildroot를 사용하고 있습니다. 주로 부팅 순서의 속도를 높이고 메모리 사용량을 낮추려고 노력하고 있으며 여러 가지 기술을 시도하여 성공했습니다.
내가 하고 싶은 것: 최근에 디렉토리에서 중복 파일을 제거하는 방법(예: 이러한 파일을 심볼릭 링크로 대체)에 대해 들었고 이 방법을 내 rootfs에 적용하고 싶습니다.
주위make
: Buildroot를 사용하면 1(패킹) 파일(예: )로 생성되는 다양한 유형의 rootfs 형식(cramfs, cpio, ext2/3/4 등)을 가질 수 있습니다 rootfs.cpio
. 이제 나는 다음을 수행하는 방법을 정말로 모릅니다.
- 이미지 열기
- 중복 파일 제거(일반적으로 중복 파일 제거 방법을 알고 있습니다)
- rootfs를 다시 압축하여 하드웨어에서 새로 고치고 실행할 수 있도록 합니다.
어쩌면 전혀 그렇지 않을 수도 있습니다. 적어도 정적 라이브러리를 사용하면 많은 파일을 교체할 수 있다고 생각합니다.
누구든지 어떤 아이디어가 있습니까?
답변1
빌드루트 관련 항목에 대해서는 도움을 드릴 수 없습니다(중복 항목을 제거하기 전에 설치하거나 시작해야 한다고 말하는 것 외에는새로운rootfs(결과 파일 시스템에서 제거됨)이지만 중복 제거는 가능합니다. 간단한 접근 방식은 find / -type f -exec sha256sum {} + | sort > checksums.txt
결과 파일을 한 줄씩 읽고 while read -r checksum path
각 체크섬을 이전 체크섬과 비교한 다음 삭제(또는하드 링크) 중복됩니다. 이것은 줄 바꿈 포함과 같은 이상한 파일 이름을 처리하지 않지만 귀하의 경우에는 문제가 되지 않습니다.
답변2
정적 라이브러리가 어떻게 여기에 들어왔는지 이해가 되지 않습니다. 정적 라이브러리는아니요대상 루트 파일 시스템에 존재하려면 Buildroot를 사용하십시오.
일반적으로 Buildroot는 대상에 필요한 것만 설치하려고 시도하며 솔직히 거기에서 많은 중복 파일을 찾을 수 있을지 의심됩니다.