나는 해킹된 Chromebook을 가지고 있고 거기에서 Gentoo를 실행하고 있습니다. 컴파일하려고 하면아무것, CPU 사용량이 100%로 급증하고, 온도가 섭씨 10도 정도 올라가고, 배터리 사용량이 급증(4.XW -> 10W)하는데 이는 느린 프로세스입니다. 하지만 SSH를 통해 연결할 수 있는 실행 중인 Arch Linux 시스템도 있습니다. 둘 다 x86_64 CPU입니다. SSH를 통해 콘텐츠 편집(Linux 커널, 일일 패키지 등)을 Arch Linux 시스템으로 오프로드할 수 있는 방법이 있습니까? 나는 전에 이런 일을 한 적이 없습니다. 어쩌면 크로스 컴파일이 필요할 수도 있습니다.
답변1
아니요, 크로스 컴파일할 필요는 없습니다. (다른 아키텍처를 대상으로 하는 경우 필요합니다.) 이를 수행하기 위해 시스템을 설정하는 두 가지 방법을 생각할 수 있습니다.
사용
distcc
. 이것루트 다이어그램그리고아치스 위키프로그램을 설치하고 구성하는 방법은 잘 설명되어 있으므로 여기에 전체 내용을 복사하지는 않겠습니다. 즉, 작동하려면 다음을 설정해야 합니다.당신
CFLAGS
은/etc/portage/make.conf
기필코 아니다또는 원격 컴퓨터는 로컬 컴퓨터가march=native
아닌mtune=native
"기본" CPU 개념을 사용하기 때문입니다. "네이티브"를 사용하는 경우 사용할 플래그를 알아보세요.다음을 실행하여:$ gcc -v -E -x c -march=native -mtune=native - < /dev/null 2>&1 | grep cc1 | perl -pe 's/^.* - //g;'
두 컴퓨터 모두 동일한 컴파일러 및 binutils 버전이 필요합니다.
- 두 컴퓨터 모두
distcc
설치, 구성 및 실행되어야 합니다.
chroot
Arch 시스템의 환경과 Chromebook 파일 시스템의 복사본을 사용하십시오 (Gentoo를 설치하는 것처럼resolv.conf
Arch 설치에서 복사하고 각각에 적절한 파일 시스템을 마운트하십시오).젠투 설치 매뉴얼/dev/shm
, Arch 버전이 심볼릭 링크인지 여부에 대한 경고를 기억하세요 . ) Chromebook 환경과 최대한 가까워야 합니다. 그렇지 않으면 복사본을 만들 때 잘못된 바이너리가 생성될 수 있으므로 더 적은 수의 패키지를 다시 빌드해야 합니다. 이 환경 내부:- 에 추가하세요.
FEATURES="buildpkg"
/etc/portage/make.conf
- 생성된 패키지는 에 있습니다
/usr/portage/packages
. 이 방법으로 커널을 컴파일할 수도 있습니다. 생성된 커널과 해당/lib/modules
디렉터리를 Chromebook에 복사하기만 하면 됩니다. (이 디렉토리 위치는 chroot에 상대적이라는 점을 기억하십시오!) Wiki에서는 파일을 수동으로 복사할 필요가 없도록 NFS 또는 다른 서버를 설치할 것을 권장합니다. 이는 Arch 시스템에서 올바르게 설정할 수 있습니다. 저는rsyncd
이 목적을 위해 설정하고 싶지만 파일에 액세스하려면 원하는 방법을 사용하세요.
Chromebook에서:
- 로컬로 컴파일되는 것을 방지하려면 에 추가하세요
FEATURES="getbinpkg"
./etc/portage/make.conf
- 원격 파일 액세스를 사용하는 경우 에 추가
PORTAGE_BINHOST="protocol://path/to/your/chroot/usr/portage/packages"
하세요/etc/portage/make.conf
.
보다젠투 위키의 바이너리 패키징 가이드더 많은 정보를 알고 싶습니다.
- 에 추가하세요.
나는 이전에 이 두 가지 방법을 모두 사용해 본 적이 있으며 잘 작동했습니다. 두 가지 접근 방식에 대한 내 관찰은 다음과 같습니다.
distcc
양쪽에 동일한 설정이 있어도 작업하기가 까다롭습니다.gcc
버전을binutils
동일하게 유지하는 것이 가장 큰 과제가 될 것입니다. 그러나 일단 시작하면 꽤 빠르며 충분히 빠른 추가 컴퓨터가 있으면 추가할 수 있습니다.환경은
chroot
그다지 까다롭지 않지만 포티지 환경의 일부(CFLAGS
,USE
플래그, 마스크, 구성 파일 등)를 변경하는 경우 양쪽이 일관성이 있는지 확인해야 합니다. 그렇지 않으면 패키지로 끝날 수 있습니다. 잘못된 종속성이 있습니다. 젠투는 USE 플래그가 일치하는지 확인하는 일을 훌륭하게 수행하지만 바이너리 패키지의 컴파일러 옵션을 추적하지는 않습니다. 한 가지 장점은 컴파일을 위해 Chromebook의 디스크 공간과 메모리(부족)로 인해 제한을 받지 않는다는 것입니다.
해당 접근 방식을 사용하려면 chroot
설정에 필요한 모든 지루한 작업을 수행하는 스크립트를 작성하겠습니다( /mnt/gentoo
chroot 위치 대체).
cp -L /etc/resolv.conf /mnt/gentoo/etc
mount -t proc proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
umount -R /mnt/gentoo/dev
umount -R /mnt/gentoo/sys
umount /mnt/gentoo/proc
답변2
허용된 답변에서 영감을 얻었지만 댓글이 너무 많습니다.
우수한크롬 북, 시스템 마운트 지점에서 루트 파일 시스템을 분리 합니다 /dev
./sys
/run
mount -o bind / /mnt/gentoo
# If neccesary
mount -o bind /boot /mnt/gentoo/boot
mount -o bind /usr /mnt/gentoo/usr
위치 /etc/exports
: /mnt/gentoo 192.168.0.2 (rw, sync, nohide, no_root_squash)
커널이 NFS를 통한 내보내기를 지원하는지 확인하세요. 관련 서비스를 시작합니다. ( nfsd
)
우수한아치리눅스상자, /etc/fstab
:
# You might need to tune mount options for performance.
192.168.0.3:/mnt/gentoo /mnt/gentoo nfs defaults 0 0
Arch 측( netmount
또는 )에서 nfs
올바른 서비스가 시작되었는지 확인하세요. 원격 파일 시스템이 성공적으로 마운트되었는지 확인합니다.
resolv.conf
ErikF에서 우아하게 훔쳤습니다( 실행 중인 시스템에 이미 있으므로 복사하지 마세요 ):
mount -t proc proc /mnt/gentoo/proc mount --rbind /sys /mnt/gentoo/sys mount --make-rslave /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --make-rslave /mnt/gentoo/dev chroot /mnt/gentoo /bin/bash umount -R /mnt/gentoo/dev umount -R /mnt/gentoo/sys umount /mnt/gentoo/proc
/etc/portage/make.conf
설정이 올바른지 확인하세요 . -march
아니요 native
!
이제 emerge
원하는 대로 실행하면 모든 것이 크롬북의 rootfs에 직접 설치됩니다.
중요한 팁:이 답변을 흥미로워 보이는 가능성으로 추가했습니다. 아직 테스트되지 않았습니다. 또한 루트 파일 시스템(rw, no_root_squash)을 내보내면 IT 보안을 존중하는 사람이라면 누구나 소름끼칠 것입니다. 따라서 매우 신뢰할 수 있는 네트워크에서만 이 작업을 수행하십시오!