64 비트 프로세서에서 실행되는 32 비트 시스템이 있습니다. 다시 설치하지 않고 어떻게 64 비트로 변환합니까? 나는 새로운 Multiarch 프레임 워크 의 결과로 그것이 가능하다는 것을 어딘가에서 보았다 .
64 비트 프로세서에서 실행되는 32 비트 시스템이 있습니다. 다시 설치하지 않고 어떻게 64 비트로 변환합니까? 나는 새로운 Multiarch 프레임 워크 의 결과로 그것이 가능하다는 것을 어딘가에서 보았다 .
답변:
TL; DR : 그것은 가능하지만 복잡합니다. 나는 바닥에 대안을 제시했다.
이제 가장 긴 길을 가지지 않았으므로 긴 설명 을 소금 알갱이로 가져 가십시오.
그것은 가능하며, 지난 2 박 동안 내가 한 일이 있습니다 . 다단계 지원없이 구식 방식 을 설명하는 위키 항목이 있습니다 . 손상된 패키지를 수정하는 데 도움이됩니다.
기본 시스템을 마이그레이션하려면 다음을 수행하십시오 .
$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
그런 다음 일부 패키지는 amd64이지만 대부분 i386으로 유지됩니다. apt-get upgrade
일부 패키지를 처리하고 일부 apt-get -f install
오류를 복구하지만 여전히 대부분의 패키지는 i386으로 유지됩니다. 이 문제를 해결하려면 까다로운 부분을 건너 뛰십시오.;)
를 사용 dpkg --get-selections | grep :i386
하면 모든 패키지가 반환되므로 여전히 마이그레이션해야합니다.
다음 아이디어는 :
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
그러나 그것은 나쁜 아이디어로 판명되었습니다. 일부 패키지는 amd64 (예 : libc6-i686)에서 사용할 수 없으며 apt-get은 혼란 스러우며 많은 패키지가 두 버전 모두에 설치됩니다. 적시에 많은 수동 작업을 수행해야합니다.
더 어려운 점 : 일부 필수 패키지를 교체 할 수 있으므로 설치를 위해 항상 바이너리를 설치해야하지만 일부 패키지를 제거했다가 다시 설치해야합니다 (예 : tar에서이 문제가 발생했습니다). 다른 시스템에서 패키지를 가져 와서 패키지를 통해 추출한 ar p package.deb data.tar.gz | tar zx
다음 scp
추출 된 파일을 통해을 통해 scp -r ./* root@other_computer:/
바이너리를 다시 사용할 수 있습니다. 헹구고 반복하면 scp
ed 파일을 덮어 씁니다.
내가 대신 할 것
시스템을 전환 할 때마다 다음을 수행했습니다.
백업 /home
, /etc
(그리고 어쩌면 /var
, /usr/local
일부 다른 파일을 변경 한, /root
, ..., YMMV).
설치된 패키지 목록을 dpkg --get-selections > packagelist
가져 와서 결과 파일 packagelist
도 복사하십시오 .
그런 다음 데비안을 완전히 다시 설치하고 모든 사용자를 다시 만들고 역할 등을 만드십시오.
로 모든 패키지를 다시 설치하십시오 dpkg --set-selections < packagelist; apt-get -f install
.
백업 된 디렉토리, 파일을 다시 복사하면 대부분 완료됩니다.
이러한 접근 방식의 한 가지 단점 : 라이브러리를 포함한 모든 패키지는 수동으로 설치된 것으로 표시되므로 더 이상 종속 패키지가없는 경우 제거되지 않습니다.
apt-mark showauto
목록을 내보내고 apt-mark auto
새 설치에서이를 표시하는 데 사용할 수 있습니다 .
x86_64
있고 시스템 패키지가 64 비트 프로세서를 최적으로 사용하지 않는지 신경 쓰지 않는다면 어떨까요? ? 32 비트 OS도 실행 중입니다. 처음 설치했을 때 프로세서가 32 비트라고 생각했습니다. (
다른 답변은 이론적으로는 가능하지만 매우 복잡하고 노력할 가치가 없다는 것을 보여줍니다. 그러나 $HOME
동일한 설치를 유지하면 새로 설치하고 프로세스를 비교적 쉽게 처리 할 수 있습니다 .
일반적인 과정은
설치된 패키지 목록과 자동으로 설치된 패키지 목록을 백업하십시오.
dpkg --get-selections '*' > package.list
apt-mark showauto >auto.list
multiarch를 사용하여 설치 한 패키지 이름에서 아키텍처를 제거 할 수도 있습니다 .
dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
귀하의 경우 /home
별도의 파티션, 그냥 확인 설치 과정에서 포맷 할 수 없습니다. 별도의 파티션에 없으면 나중에 복원 할 수있는 백업을 만드십시오.
tar cvzf home_backup.tgz $HOME/
새 시스템을 설치 한 후 누락 된 패키지를 설치하십시오.
sudo dpkg --set-selections < package.list
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-mark auto $(cat auto.list)
$ HOME을 복원하십시오. tgz 파일을 복사하여 $ HOME 디렉토리에서 추출하십시오.
tar xvzf home_backup.tgz
Mint가 제공 하는 도구 를 살펴보면 이 작업을 쉽게 할 수 있습니다. 그들은 모두 우분투에도 설치 가능해야합니다.
이론 상으로는 가능하지만 위험한 것 같습니다. 현재 데비안 multiarch는 multiarch lib를 지원하지만 바이너리는 지원하지 않습니다. 그게 있습니다.
이 시스템은 주로 자체 아키텍처 dpkg-architecture
(실제로는 펄 스크립트이지만 아치 정보를 추출하여 표시)를 이해 하며 아키텍처 를 설정할 수 있다고 주장합니다 .
대략적인 과정은 다음과 같습니다.
libgcc1
)dpkg-architecture -aamd64
아치를 이동하는 데 사용 합니다 (참고 : GCC에 대해 불평 할 수 있음)dpkg
및 종속성 강제 설치apt-get
커널과 커널을 포함한 필수 기본 시스템 패키지의 amd64 변형을 강제 설치 합니다 (많은 불만이있을 수 있습니다)apt-get
이 단계들은 지난 12 년 동안 리눅스 배포판들 (거의 사용했던 것 포함) 중에서 거의 독점적으로 사용한 데비안의 디자인 debtakeover
과 내가 취할 접근법에 대해 알고 있습니다. 따라서이 모든 책임은 귀하에게 있습니다 . 4 단계를 시도한 후 언제든지 시스템을 사용할 수 없게 될 수 있습니다 . 4 단계와 5 단계의 대체 단계 는 다음과 같습니다 debbootstrap
.
가장 중요한 것은 관심있는 작업을 수행하기 전에 VM에서 시도해 보는 것이 좋습니다.
행운을 빕니다. 그리고 힘이 당신과 함께 있기를 바랍니다 .
질문에 대한 대답은 아니지만 x86에서 amd64로 모든 패키지를 업그레이드하는 것은 어려울 수 있지만 적어도 64 비트 응용 프로그램과 가상 시스템 및 컨테이너를 실행할 수있는 amd64 커널 패키지를 최소한 쉽게 설치할 수 있습니다 ( 필요한 것으로 충분할 수 있습니다).
로 amd64 linux-image 패키지를 설치하십시오 dpkg -i --force-architecture
.
--force-architecture
필요하지 않으며 amd64 커널은 i386에서 apt를 통해 설치할 수 있습니다.
거기에는 꽤 많은 매뉴얼이 있지만, 실제로 어떤 것이 실제로 기대되는지는 거의 보여주지 않습니다. 32 비트에서 64 비트로 업그레이드를 완료 한 데비안 Wheezy 노트북에서 이것을 작성하고 있으며 실제로 작동합니다.
나는이 지시를 따랐으며 실제로 당신이 직면하게 될 것에 대해 정확했습니다.
http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html
권장 사항은 전체 프로세스를 통해 시스템 전원을 유지하는 것입니다. 모든 항목을 마이그레이션했으며 제거 된 모든 항목이 다시 설치되었는지 (특히 필수 패키지) 확실하지 않은 경우 재부팅하지 마십시오. 그렇지 않으면 시스템이 다시 실행되지 않습니다.
awk 사용 아이디어에 따라 다음 을 사용했습니다.
dpkg --get-selections \ # get the list
| grep -v deinstall \ # throw away deselected packages
| grep ':i386' \ # get the i386 arch packages
| sed 's/install//g' \ # drop 'install' to get list
| sed 's/:i386/:amd64/g' \ # replace i386 with amd64
| while read package; do \ # iterate over the result
apt-get -yf install $package; \ # install each one and fix dependencies
done
나는 그것을 몇 번 실행해야했다. dpkg --get-selections
는 알파벳순 목록이므로 맨 아래에있는 패키지가 필요한 맨 위에있는 패키지가 전달됩니다. 설치중인 수를 보려면 루프 dpkg --get-selections | grep amd64 | wc -l
내부에서 수행 하십시오 while
.
나는 그 문제에 대해 거의 경험이 없지만 32에서 64로 변환하면 다중 아키텍처를 사용할 수 있어야한다고 말했을 때 정확하다고 생각합니다. 이 새로운 시스템이 얼마나 잘 지원되는지에 대해서는 신중해야합니다.
다음은 내가 읽은 문서 중 하나입니다. 아마 도움이 될 것입니다 : https://wiki.ubuntu.com/MultiarchSpec
세 번째 사용자 사례를 확인하십시오. 동일한 주제와 관련된 또 다른 링크는 다음과 같습니다. https://help.ubuntu.com/community/MultiArch
데비안과 우부 누투 사이에는 다소 차이가있을 수 있지만 이것은 핵심 기능입니다. 우분투와 데비안은 우분투가 떠나기 전에이 구조가 제대로 작동하도록하기 위해 긴밀히 협력 할 것이라고 생각합니다.
행운을 빕니다!