새로운 하드웨어에 Linux 구성 및 애플리케이션 배포

새로운 하드웨어에 Linux 구성 및 애플리케이션 배포

아이디어는 하드웨어에 구애받지 않는 여러 가지 항목을 구성한 다음 이를 Raspberry Pi 또는 일반 x64 서버와 같은 실제 장치에 배포하는 도커 이미지 또는 이와 유사한 것을 갖는 것입니다.

나는 이것이 불가능하다고 가정하고 있습니다.이것단순히 docker에 대상과 일치하지 않는 일부 가상화 하드웨어가 있기 때문입니까? 새로 설치된 Linux의 컨테이너에서 docker-image를 실행하고 싶지 않습니다. 모든 것을 로컬에서 실행해야 합니다.

누군가 이것을 구현하는 방법, 어떤 종류의 올바른 방향을 알려줄 수 있습니까?개발 및 운영 소프트웨어처음부터 그런 생각을 했어야 했는데. 일부를 만들고 install-scripts복사하는 것을 제외하고는 configs(기본적으로 사실입니다).

내가 얻고 싶은 것은 가급적이면 가상 머신에서 구성한 다음 (거의) 모든 하드웨어에 설치하고 부팅 restore-image하는 시작점을 갖는 것입니다 .image

아니면 Linux가 하드웨어 변경을 처리하는 방법을 오해하고 있습니까? (GPU교체로 안좋은 경험을 했습니다)

(주위를 보면 그런 것 같다.도커최고이자 최대입니다현명한이에 대한 해결책은 을 사용하는 것입니다 docker export. 그러나 더 쉬운 해결책이 있는지 궁금합니다. 게으름이 아니라 부자연스러운 실수로 수동으로 스크립팅하는 대신 내가 지정한 특정 응용 프로그램/구성을 내보낼 수 있는 프로그램일 수도 있습니다. )

답변1

설치된 시스템(애플리케이션, 구성 등 포함)의 이미지를 다른 머신(가상 머신이 아닌 실제 베어메탈 하드웨어)에 "복제"하는 방법을 찾고 있다고 가정합니다.

따라서 가상 머신이나 Docker 컨테이너가 아닌 실제 하드웨어를 소스로 시작해야 합니다. 해당 컴퓨터에 필요한 모든 것을 설치하되 장치별 타사 드라이버는 설치하지 마십시오. 커널이 자동으로 제공하는 드라이버를 계속 사용할 수 있다면 이미지가 다른 시스템에서 실행될 가능성이 높습니다. 물론 동일한 아키텍처여야 하므로 x86용 이미지를 빌드하려면 x86 머신이 필요하고, Pi용 이미지를 빌드하려면 Pi가 필요합니다.

그런 다음 사용할 수 있습니다클론속디스크 이미지를 만든 다음 다른 컴퓨터에 이미지를 복원합니다. 그러나 Clonezilla는 Pi가 아닌 x86 시스템에서만 작동합니다.

또 다른 방법은 dd전체 디스크(원시 장치로)를 외부 드라이브/USB 스틱의 파일에 복사한 다음 이미지 파일을 다른 컴퓨터에 복원하는 것입니다(다시 원시 디스크 장치에 쓰기). 동일한 이미지 파일이 있어야 합니다. 두 컴퓨터의 디스크 크기 - 그렇지 않으면 복제된 시스템이 전혀 부팅되지 않는 것을 원하지 않습니다. 물론 머신(소스 또는 타겟)이 라이브 미디어에서 부팅된 후에 이 작업을 수행해야 운영 체제가 디스크에서 활성화되지 않습니다(대상 머신이 전혀 존재하지 않는 경우 유일한 방법은 부팅은 라이브 미디어에서 이루어집니다).

상당한 작업이 필요한 대부분의 "하드코어" 방법(그러나 이 방법을 사용하여 더 큰 디스크가 있는 시스템에 시스템을 복제할 수 있음)은 tar전체 파일 시스템을 디스크에 가져오는 것입니다(라이브 미디어에서 부팅한 후에도 마찬가지입니다). 그리고 대상 머신의 적절한 파티션에 압축을 푼다(물론 수동으로 파티션을 생성한 후). 그런 다음 /etc/fstab파일을 조정하고(파티션 UUID는 일반적으로 다르기 때문에) 대상 시스템에 부트로더를 설치해야 합니다. 저는 서버를 더 강력한 하드웨어로 교체할 때 작업 시스템을 "복제"하기 위해 이 방법을 여러 번 사용했습니다.

경고: 컴퓨터에 정적으로 구성된 IP 주소가 있는 경우 "복제" 대상 컴퓨터도 동일한 주소를 갖게 됩니다. 이를 수동으로 변경해야 합니다. 일부 시스템의 경우 /etc/udev/rules.dudev가 이전 시스템의 장치를 "잊어버리게" 하고 다음 부팅 시 다시 감지하도록 하려면 일부 파일(이름에 "영구"가 있는 파일)을 삭제해야 합니다 . 그렇지 않으면 문제가 발생할 수 있습니다. 예를 들어 네트워크 인터페이스가 존재하지 않습니다(예:이것예)

관련 정보