태그 보관물: multiarch

multiarch

32 비트 설치를 64 비트 설치로 전환하려면 어떻게해야합니까? 기본으로 사용되는 아키텍처를 변경합니다.

64 비트 하드웨어에서 실행되는 32 비트 Ubuntu 설치가 있습니다. 이제 다중 아치가 구현되었으므로 OS를 다시 설치하지 않고도 64 비트로 전환하고 싶습니다.

이것은 스펙에 의해 다루어 진 사용자 스토리 중 하나입니다 .

Shawn은 32 비트 버전의 Ubuntu를 사용하여 시스템을 설치했지만 하드웨어는 64 비트이므로 전환하려고합니다. dpkg 및 apt의 amd64 버전을 수동으로 설치하여 i386 버전을 바꾸고 기본으로 사용되는 아키텍처를 변경합니다. 그런 다음 amd64 ubuntu-minimal 패키지를 설치합니다. 그런 다음 amd64 ubuntu-desktop 패키지를 설치합니다. 시간이지나면서 나머지 i386 패키지는 업그레이드시 자동으로 교체됩니다.

그러나 거기의 지침을 따르려고 할 때 64 비트 버전의 dpkg 또는 apt를 찾을 수 없습니다.

이 사용자 스토리는 최종 사양에서 다른 방식으로 구현 되었습니까, 아니면 다른 방식으로 수행해야합니까?

간단히 말해서 32 비트 설치를 64 비트로 전환하려면 어떻게해야합니까?



답변

이러한 접근 방식은 매우 복잡하며 모든 패키지가 amd64버전 대신 버전 이 될 가능성은 거의 없습니다 i386. 실제로 업그레이드를받는 패키지 만 아키텍처에서 변경 될 수 있으며 업그레이드되지 않은 다른 패키지가 i386아키텍처 에 의존하지 않는 경우에만 가능합니다 . 일부 패키지는받을 수 없습니다 때문에 모든 우분투 버전의 전체 지원주기에 걸쳐 업데이트를, 당신은 가능성이 완벽하지 않아도됩니다 amd64이러한 기술을 사용하여 시스템을. 또한 그러한 접근 방식에 대한 공식적인 지원은 없습니다.

기존 Ubuntu 시스템을 새로운 64 비트 설치로 바꾸는 것이 좋습니다.

그러나이 기술을 사용하려면 및 의 파일 을 수동으로 다운로드해야 .deb합니다 . 당신은 그들을 찾을 수 있습니다 우분투우분투에서 런치 패드의 페이지 – 확장 최신 버전을 출시, 보안 및 / 또는 업데이트로 표시됩니다 (하지만 당신은 아마 전용으로 표시 버전을 원하지 않는다는 “Oneiric 오셀롯”에서 제안 및 / 또는 백 포트 (있는 경우). 그런 다음 로 표시된 파일을 다운로드하십시오 . 특히, 당신이 원하는거야 파일은 다음과 같습니다 이 하나 와 (과 나와 다른 사람, 너무, 당신은 그 설치된 패키지가있는 경우) dpkgaptdpkgapt.debamd64dpkg그리고 이것을 위해 apt.

이러한 파일로 작업을 수행하기 전에 설치된 Ubuntu 시스템 및 기타 중요한 파일 (예 : 음악, 전자 책, 비디오)의 모든 중요 문서를 백업해야합니다. 우분투 시스템을 완전히 사용할 수 없게하십시오.

다른 패키지가 들어 있지 않은 폴더 (폴더가 호출 debs되고 Downloads디렉토리 안에 있다고 가정 )에 넣은 후 다음 명령을 실행 하여 모든 패키지를 설치할 수 있습니다 .

sudo dpkg -Ri ~/Downloads/debs

물론 일단 설치하면 실행 파일은 64 비트이고 32 비트 Ubuntu 시스템은 32 비트 커널 (32 비트 실행 파일 만 실행)을 실행하기 때문에 실제로는 실행되지 않습니다. 실제로, 실행 불가능한 64 비트 실행 파일을 호출하는 설치 후 스크립트가있을 수 있으므로 설치가 완료되지 않을 수도 있습니다.

32 비트 시스템에 64 비트 커널을 설치하는 방법에는 여러 가지가 있지만 모두 매우 복잡하므로 64 비트 Oneiric 라이브 CD (64 비트 자체 실행)에서 부팅하는 것이 좋습니다. 커널) 의 chroot 설치된 우분투 시스템에, 그리고 최근에 설치된 64 비트를 사용 apt하고 dpkg64 비트 커널을 설치합니다.

여기에 구체적인 지침이 있습니다 …하지만 이것이 효과가 있다고 말하는 것은 아닙니다. 나는 이것을 시도하지 않았다. (라이브 CD에서 Ubuntu 시스템을 설치하고 패키지 관리 및 기타 작업을 수행했지만 여기에서 제안한 아키텍처 간 작업은 시도하지 않았습니다.)

  1. 설치된 Ubuntu 시스템에서 터미널 창 ( Ctrl+ Alt+ T)을 열고 터미널 mount | grep ' on / '에 붙여 넣고 Enter 키를 눌러 실행하십시오. 와 같은 것이 보일 것 /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0)입니다. 관심이있는 부분은 이전의 장치 이름입니다 on(이 예에서는 /dev/sda2). 그것을 기억하거나 적어 두십시오.

  2. 1 단계에서는 /파티션 의 장치 이름을 제공했습니다 . 별도의 /boot파티션 이있는 경우 해당 파티션의 장치 이름도 알아야합니다. 이 경우을 실행하십시오 mount | grep ' on /boot '. 당신은 같은 것을 보게 될 것 /dev/sda1 on /boot type ext2 (rw)입니다. 이것을 기억하거나 적어 두십시오.

  3. Oneiric amd64 (즉, 64 비트) 라이브 CD로 부팅하고 “Install Ubuntu”대신 “Try Ubuntu”를 선택하십시오.

  4. 웹 브라우저로 이동하여 인터넷 연결이 제대로 작동하는지 확인하십시오. 그렇지 않은 경우 설정하십시오.

  5. 터미널 창을 열고 실행하십시오 sudo mount /dev/sda2 /mnt( /dev/sda21 단계에서 얻은 장치 이름으로 바꾸십시오 ).

  6. 설치된 시스템에 별도의 /boot파티션이있는 경우 실행하십시오 sudo mount /dev/sda1 /mnt/boot( /dev/sda1다른 경우 2 단계에서 얻은 장치 이름으로 바꾸십시오 ).

  7. 이제 다음 명령을 실행하여 설치된 시스템에 chroot하십시오.

    sudo mount --bind /dev /mnt/dev
    sudo chroot /mnt
    mount -t proc none /proc
    mount -t sysfs none /sys
    mount -t devpts none /dev/pts
    
  8. 실행 ping -c 4 launchpad.net인터넷 연결이 chroot 환경 내에서 완벽하게 작동하는지 확인. 다음과 같은 것을 기대하고 있습니다.

    PING launchpad.net (91.189.89.223) 56(84) bytes of data.
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=1 ttl=41 time=141 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 time=143 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=3 ttl=41 time=142 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 time=140 ms
    
    --- launchpad.net ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3003ms
    
  9. 대신 패킷을 전송하거나 수신 할 수없는 경우 chroot에서 인터넷 연결을 설정해야합니다. 이를 수행하려면 다음 명령을 실행하십시오 (chroot를 떠나서 라이브 CD 시스템에서 관련 구성 파일을 chroot로 복사 한 후 chroot로 다시 입력하십시오).

    sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
    sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
    sudo cp /etc/hosts /mnt/etc/hosts
    

    일반적으로 오류가있는 경우이 프로세스를 중지해야하지만, 네 가지 명령 중 첫 번째 및 / 또는 두 번째 명령이 실패하더라도 걱정하지 마십시오. 실패하는 특정 방법은 /mnt/etc/resolv.conf(또는 /mnt/etc/hosts) .

    chroot가 다시 들어가서 다시 시도하십시오.

    sudo chroot /mnt
    ping -c 4 launchpad.net
    
  10. 다음 명령을 실행하여 chroot 환경을 완전히 사용할 수 있도록 준비하십시오 :

    export HOME=/root
    export LC_ALL=C
    
  11. .deb의 64 비트 버전 용 파일을 설치하지 않은 경우 지금 설치하십시오 . 설치했지만 구성 오류 가 발생한 경우 실행 하여 수정하십시오. (다행스럽게도 작동 합니다. 설치된 시스템으로 부팅하는 동안 64 비트 를 설치 하면 사용할 수없는 상태 가되는 경우 라이브 CD 환경이 될 때까지 설치를 시도하는 것이 좋습니다 .)dpkgaptdpkg --configure -adpkgdpkg

  12. 64 비트 버전의 dpkgapt가 자동으로 64 비트 패키지를 설치합니다 가정 설치, 당신은 이제 모든 32 비트 커널을 제거하고 64 비트 커널을 설치할 수 있습니다. 32 비트 커널을 제거하려면을 실행하십시오 dpkg -l | grep linux-. 로 시작하는 설치된 패키지가 나열됩니다 linux-. 당신은 더 구체적으로 관심이 같은 시작 패키지에있어 linux-generic, linux-image, linux-server, 및 / 또는 linux-headers. 공백으로 구분 된 패키지 목록으로 대체 된 apt-get purge ...위치 에서이 파일을 ...제거하십시오.

  13. 이제 제거한 패키지를 다시 설치하십시오. (예를 들어 linux-image-3.0.0-13-generic, 패키지 이름에 버전 번호가 포함 된 패키지의 경우 (예 : 최신 버전의 패키지 이름 만 설치하면 됨)) apt-get install ...여기서 ...공백으로 구분 된 패키지 목록으로 대체하여 실행 하십시오. .

  14. 부트 로더 구성을 업데이트하고 일부 장치를 마운트 해제 한 후 chroot를 그대로 두십시오.

    update-grub
    umount /proc || umount -lf /proc
    umount /sys
    umount /dev/pts
    exit
    sudo umount mnt/dev
    
  15. 실행 sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old했지만 실패하지 않았다면 이제 실행하십시오 sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf.

  16. 실행 sudo cp /mnt/etc/hosts /mnt/etc/hosts.old했지만 실패하지 않았다면 이제 실행하십시오 sudo cp /mnt/etc/hosts.old /mnt/etc/hosts.

  17. 설치된 시스템에 별도의 /boot파티션 이있는 경우 다음을 마운트 해제하십시오.sudo umount /mnt/boot

  18. 설치된 시스템 /파티션을 마운트 해제하십시오 .sudo umount /mnt

  19. 터미널 창을 그대로두고 (실행 exit) 라이브 CD 시스템을 재부팅 (또는 종료)하고 설치된 시스템으로 부팅하십시오.

  20. 시스템을 사용할 수 있고 64 비트 커널을 실행 중인지 확인 uname -m하십시오 (아키텍처는이어야 함 x86_64).

이 패키지가 작동하려면 설치해야 할 추가 패키지 (예 : ia32_libs64 비트 버전)가있을 libc6수 있습니다. 이들 중 일부의 경우 dpkg및 / 또는 64 비트 버전을 설치하려고 할 때 필요한 정보가 표시 될 수 있습니다 apt. 다른 사람들에게는 정보가 없을 수도 있습니다.

(chroot를하고, chroot 된 환경에서 작업하는 위의 지침에 중요한 부분을 기반으로하는 이 관련 있지만 다른 절차 와 일부에 런치 패드 답변 특히, # 6 내 게시물을 여기 와 # 6 여기 에. 그리고 특별한 감사를 세슘 지적에 대해 64 비트 dpkgapt실행 파일은 32 비트 커널을 실행하는 시스템에서 실행되지 않습니다.)


답변

위에서 주어진 것처럼, 나는했다 :

echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install gcc-multilib
sudo update-grub

효과가있었습니다. 우분투 12.04에서 64 비트 커널로 32 비트 사용자 영역을 실행할 수 있습니다.


답변

질문은 32 비트에서 64 비트로 “업그레이드”할 수 있습니까? 와 비슷하지만 (당신이 그것을 시도하기 전에 그것을 읽지 않은 경우 그것을 시도하는 것이 좋습니다. 거기에 대한 대답은 좋습니다.) 나는 또한 다음 링크를 읽는 것이 좋습니다.

더 나은 성능을 위해 32 비트 또는 64 비트를 설치해야합니까?

32 비트 설치를 64 비트 설치로 전환하려면 어떻게해야합니까?

32 비트와 64 비트의 차이점은 무엇이며 어떤 것을 선택해야합니까?

가능합니까?

쉬운가요?

메모리에 문제가있는 경우 Ubuntu 32 비트가 4GB 이상의 RAM (최대 64GB)을 읽을 수 있음을 알아야합니다. 따라서 32 비트 또는 64 비트 아키텍처를 가진 컴퓨터에서 최신 Ubuntu 32 비트 버전을 사용하고 더 많은 RAM을 넣는 것은 문제가되지 않습니다. 단순히 여분의 RAM을 읽고 작동합니다.


답변

이 답변은 다소 구식입니다. Cross-grading은 데비안 위키에서 데비안 용으로 문서화 되었지만 여전히 권장되지는 않습니다.

다른 아키텍처에서 커널을 설치하는 것은 이제 설명한 것처럼 쉽지만 새로운 ‘apt’는 이전 아키텍처의 패키지를 인식하지 못하므로 모든 프런트 엔드가 깨진 패키지를 많이보고 할 수 있습니다. 이를 위해서는 모든 종속성을 다른 아키텍처로 변경하거나 apt 및 dpkg를 32 비트로 되돌려 야합니다.

따라서 가장 좋은 방법은 먼저 dpkg --get-selections, strip : i386의 결과를 저장 하고 캐시에 대한 각 종속성에 대한 amd64 패키지를 다운로드하는 것입니다.

apt-get --download-only install perl:amd64 python3:amd64 python3-gi:amd64 xorg:amd64...

기껏해야 의존성을 해결하는 데 시간이 오래 걸리고 느려질 수 있습니다.


답변

이 지침은 64 비트 커널로 시스템을 부팅하지만 대부분의 사용자 프로그램을 변경하지는 않습니다.

64 비트 CPU로 시스템을 업그레이드 한 후 32 비트 14.04.2 Ubuntu (코드 명 : Trusty)에 64 비트 커널을 설치하려고했습니다. 이를 위해 루트 사용자 로 다음 명령을 입력했습니다 .

dpkg --add-architecture amd64
apt-get update
apt-get install linux-generic-lts-utopic:amd64

노트:

  1. 이렇게하면 32 비트 커널이 신뢰할 수있는 것으로 제거 될 수 있습니다. 기본적으로 업데이트 된 커널 (utopic의 커널)이 제공됩니다 ( 14.04 릴리스 정보 참조) . 이 경우 현재 커널은 설치 될 64 비트 커널과 충돌하여 제거됩니다. 이 아이디어가 마음에 들지 않으면 이전의 64 비트 커널 패키지 “linux-generic-lts-trusty : amd64″를 사용해보십시오.

  2. “–add-architecure”명령은 필수적입니다. 패키지 시스템이 없으면 패키지 시스템이 다른 아키텍처의 패키지를 지원하지 않습니다. Multiarch-HowTo

  3. apt-get시스템에 어떤 영향을 미치는지 보려면 -Vs“자세한 시뮬레이션 모드”를 활성화 하는 옵션으로 시스템을 실행하십시오 . 설치 및 제거 할 모든 패키지가 인쇄됩니다.

  4. 새 커널을 사용하여 시스템을 부팅할지 여부는 grub구성에 따라 다릅니다 . 으로 루트 사용자 실행 update-grub애벌레 업데이트를 확인하고 현재의 부팅 구성을 인쇄 할 수 있습니다. 목록의 첫 번째 이미지가 기본적으로 부팅됩니다.

  5. 다른 커널 이미지를 선택하기 위해 라인 GRUB_HIDDEN_TIMEOUT=0을 제거하고 root user/etc/default/grub 로 실행했습니다 . 부팅시 다른 커널을 선택할 수 있습니다 (키를 누르는 데 10 초가 걸리지 않으면 grub이 기본 커널을 계속 사용함). update-grub

  6. 가장 많은 표를 얻은 답변은 2011 년부터 왔으며 내 의견으로는 절망적입니다. Multiarch를 사용하면 많은 시스템에서 여러 아키텍처의 라이브러리 패키지를 많은 수고없이 설치할 수 있습니다.


답변

아마도 같은 문제에 직면했을 때 이것이 효과가있을 것입니다.

64 비트 버전의 OS를 구하여 파티션에 설치하고, 32 비트 설치에서 문서 및 기타 내용을 완전히 복사하면 모든 것이 안전하게 복사되면 나머지 드라이브를 포맷하여 사용할 수 있습니다.


답변

예, 외부 아키텍처 라인은 모든 크로스 아치 패키지를 설치하는 데 가장 중요합니다. 그러나 그 후에 다른 여러 사용자가 언급 한 것처럼 수행하십시오.

sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install linux-modules:amd64
sudo init 6 #reboot into new kernel
sudo apt-get install apt:amd64
sudo apt-get install ubuntu-desktop:amd64

그것은 단지 그렇게해야합니다 …