Bir 32 bit yüklemeyi 64 bit birime nasıl değiştirebilirim?

52

64 bit donanımında çalışan 32 bit Ubuntu yüklemem var. Şimdi bu çoklu arşiv uygulandı , OS'yi yeniden yüklemeniz gerekmeden 64-bit'e geçmek istiyorum.

Bu, teknik özelliklerin adreslediği kullanıcı öykülerinden biridir :

Shawn, Ubuntu'nun 32-bit sürümünü kullanarak sistemini kurdu, ancak donanımı 64-bit ve geçiş yapmak istiyor. İ386 sürümlerini değiştirerek ve varsayılan olarak hangi mimarinin kullanıldığını değiştirerek, dpkg ve apt'un amd64 sürümlerini el ile yükler; sonra amd64 ubuntu-minimal paketini yükler; daha sonra amd64 ubuntu-desktop paketini kurar. Zaman içinde, kalan i386 paketleri otomatik olarak yeni sürüme geçirilir.

Ancak, oradaki talimatları izlemeye çalışırken, dpkg veya apt'in 64 bit sürümünü bulamıyorum.

Bu kullanıcı hikayesi son teknikte farklı bir şekilde uygulandı mı, yoksa farklı bir şey mi yapmam gerekiyor?

Kısaca, 32 bit yüklememi 64 bit'e nasıl geçirebilirim?

    
sordu David Planella 22.11.2011 20:34

10 cevap

35

Böyle bir yaklaşım çok karmaşıktır ve tüm paketlerinizin amd64 sürümü yerine i386 sürümü olması hiç beklenmez. Yalnızca yükseltmeleri gerçekten alan paketler büyük olasılıkla mimaride değişecektir ve muhtemelen yalnızca yükseltilmemesi gereken başka paketler i386 mimarisine sahip olmalarına güvenmiyorsa. Bazı paketler Ubuntu sürümünüzün tüm destek döngüsü boyunca herhangi bir güncellemeyi almayacağından, böyle bir tekniği kullanarak büyük olasılıkla amd64 bir sisteme sahip olmayacaksınız. Ayrıca, böyle bir yaklaşım için kesinlikle resmi bir destek bulunmamaktadır.

Bunun yerine mevcut Ubuntu sisteminizi yeni, 64 bitlik bir kurulumla değiştirmeniz önerilir.

Ancak, bu tekniği denemek isterseniz, .deb ve dpkg için apt dosyasını el ile yüklemeniz gerekir. Bunları dpkg Ubuntu'da ve Ubuntu'da%> co_de% , Startpad'deki sayfalar - sürüm, güvenlik ve / veya güncellemeler olarak işaretlenen" The Oneiric Ocelot "altındaki en son sürümü genişletin Tek bir tane varsa, sadece önerilen ve / veya backports olarak işaretlenmiş bir versiyon isteyin). Ardından apt işaretli .deb dosyalarını indirin. Özellikle, istediğiniz dosyalar şunlardır: bu amd64 için (ve bu paketler yüklü ise başkaları da listelenir) ve bu ve bu ve this ve bu ve bu dpkg .

için.

Bu dosyalarla ilgili herhangi bir şey yapmadan önce, yüklü Ubuntu sisteminizdeki ve diğer önemli dosyalarınızdaki (örneğin, müzik, e-kitaplar, videolar) tüm önemli dokümanları yedeklediğinizden emin olmalısınız, çünkü bu tekniğin denenmesi olasıdır. kötü bir şekilde geri tepecek ve Ubuntu sisteminizi tamamen kullanılamaz bırakacaktır.

Tüm bu paketleri, başka hiçbir şey içermeyen bir klasöre yerleştirerek yükleyebilirsiniz (klasöre apt denir ve debs dizininin içinde olduğunu varsayalım) ve sonra bu komutu çalıştırabilirsiniz:

sudo dpkg -Ri ~/Downloads/debs

Tabii ki, onları bir kez kurduktan sonra, aslında çalıştırmazlar çünkü çalıştırılabilirleri 64-bit ve 32-bit Ubuntu sisteminiz 32-bit kernel kullanıyor (sadece 32-bit çalıştırılabilir ). Aslında, yüklenemeyen 64 bit çalıştırılabilir dosyalarını çalıştıran post-install komut dosyalarına sahip olabileceğinden, yükleme işlemini bile bitiremeyebilirler.

64 bit bir çekirdeği 32 bit sisteme kurmaya yönelik çeşitli yollar vardır, ancak hepsi son derece karmaşıktır, bunun yerine 64 bit Oneiric canlı CD'den önyükleme yapmanızı öneririm. 64 bit çekirdek), yüklü Ubuntu sistemine chroot ve son yüklenen 64 bit Downloads ve% kullanın 64 bit çekirdeği yüklemek için% co_de.

İşte bunu yapmak için özel talimatlar ... ama lütfen bunu işe yarayacağını söylüyorum demek istemiyorum. Bunu denemedim. (Canlı CD'lerden kurulu Ubuntu sistemlerine chrooted ve paket yönetimi ve diğer işlemleri gerçekleştirdim, ancak burada önerilen çapraz mimari işlemleri denemedim.)

  1. Kurulu Ubuntu sisteminizde bir Terminal penceresi açın ( Ctrl + Alt + T ) ve apt dosyasını çalıştırın ( Terminale yapıştırarak ve enter tuşuna basarak). % Co_de% gibi bir şey görmelisiniz. İlgilendiğiniz bölüm, dpkg öncesindeki cihaz adıdır (bu örnekte, mount | grep ' on / ' ). Bunu hatırla ya da yaz.

  2. 1. Adım, size /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0) bölümünün cihaz adını verdi. Ayrı bir on bölümünüz varsa, bunun için cihaz adını da bilmeniz gerekir. Bu durumda, /dev/sda2 dosyasını çalıştırın. % Co_de% gibi bir şey göreceksiniz. Bunu da unutmayın ya da yazın.

  3. Bir Oneiric amd64 (yani, 64 bit) canlı CD'den önyükleme yapın ve "Ubuntu Yükle" yerine "Ubuntu'nu Dene" yi seçin.

  4. Bir web tarayıcısına gidin ve İnternet bağlantısının tamamen işlevsel olduğundan emin olun. Öyle değilse, ayarlayın.

  5. Bir Terminal penceresi açın ve / dosyasını çalıştırın (farklıysa, 1. adımda aldığınız cihaz adıyla /boot dosyasını değiştirin).

  6. Yüklü sisteminizin ayrı bir mount | grep ' on /boot ' bölümü varsa, /dev/sda1 on /boot type ext2 (rw) dosyasını çalıştırın (farklıysa, 2. adımda aldığınız cihaz adıyla sudo mount /dev/sda2 /mnt dosyasını değiştirin).

  7. Şimdi, bu komutları yüklü sisteminize chroot yapmak için çalıştırın:

    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. İnternet bağlantısının chroot içinde tamamen çalışıp çalışmadığını görmek için /dev/sda2 dosyasını çalıştırın. Böyle bir şey için umuyorsunuz:

    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. Bunun yerine, paketleri iletemediyseniz veya alamadıysanız, o zaman chroot'ta İnternet bağlantısı kurmanız gerekir. Bunu yapmak için, bu komutları çalıştırın (chroot'tan ayrılmak için, ilgili CD dosyalarından ilgili yapılandırma dosyalarını chroot'a kopyalayın ve chroot'a yeniden girin):

    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
    

    Bir hata varsa, genellikle bu işlemi durdurmalısınız, aksi takdirde, bu dört komutun ilk ve / veya ikinci sürümü başarısız olursa endişelenmeyin. (veya /boot ) mevcut değil.

    Chroot'a geri dönün ve tekrar deneyin:

    sudo chroot /mnt  
    ping -c 4 launchpad.net  
    
  10. chrooted ortamınızı kullanıma hazır hale getirmek için şu komutları çalıştırın:

    export HOME=/root  
    export LC_ALL=C  
    
  11. sudo mount /dev/sda1 /mnt/boot dosyalarını /dev/sda1 ve ping -c 4 launchpad.net 'nın 64 bit sürümleri için yüklemediyseniz, şimdi yapın. Bunları yüklediyseniz ancak yapılandırma hataları varsa bunları düzeltmek için /mnt/etc/resolv.conf dosyasını çalıştırın. (İnşallah bu işe yarayacak ... yüklü sisteme önyüklenirken 64-bit /mnt/etc/hosts yüklenirse, .deb dosyasında% co_de kullanılamayan bir durum.)

  12. dpkg ve apt 'nin yüklenmiş 64 bit sürümleri ile, otomatik olarak 64 bit paketleri yükleyeceğini varsayarak, tüm 32 bit kernel'lerinizi kaldırabilir ve 64 bit kernel kurabilirsiniz . 32 bit çekirdeğinizi kaldırmak için dpkg --configure -a dosyasını çalıştırın. Bu, dpkg ile başlayan yüklü paketleri listeler. Daha spesifik olarak, dpkg , dpkg , apt ve / veya dpkg -l | grep linux- gibi başlayan paketlerle ilgileniyorsunuz. Bu dosyaları linux- ile temizleyin; burada linux-generic , kaldırdığınız paketlerin boşlukla ayrılmış bir listesiyle değiştirilir.

  13. Şimdi kaldırdığınız paketleri yeniden yükleyin. (Aslında, paket adındaki sürüm numaralarını içeren paketler için, örneğin linux-image gibi, yalnızca en son sürümlü paket adlarını yüklemeniz gerekir.) Bunu linux-server çalıştırarak yapın, burada linux-headers bir boşlukla değiştirilir. Yüklediğiniz paketlerin ayrılmış listesi.

  14. Önyükleyici yapılandırmasını güncelleyin, bazı aygıtları ayırın ve chroot'u bırakın:

    update-grub  
    umount /proc || umount -lf /proc  
    umount /sys  
    umount /dev/pts  
    exit  
    sudo umount mnt/dev  
    
  15. apt-get purge ... öğesini çalıştırdıysanız ve başarısız olursa, şimdi ... dosyasını çalıştırın.

  16. linux-image-3.0.0-13-generic öğesini çalıştırdıysanız ve başarısız olursa, şimdi apt-get install ... dosyasını çalıştırın.

  17. Yüklü sisteminizin ayrı bir ... bölümü varsa, aşağıdakileri kaldırın: sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old

  18. Yüklü sisteminizin sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf bölümünün bağlantısını kaldırın: sudo cp /mnt/etc/hosts /mnt/etc/hosts.old

  19. Terminal penceresinden çıkın ( sudo cp /mnt/etc/hosts.old /mnt/etc/hosts dosyasını çalıştırın), ardından canlı CD sistemini yeniden başlatın ve kurulu sisteme önyükleyin (veya kapatın).

  20. Sistem kullanılabilir ve 64 bit çekirdek çalıştırıyorsa ( /boot , mimarinin sudo umount /mnt/boot olduğunu söylemelidir).

Bunun çalışması için, / ve / veya sudo umount /mnt 'nın 64-bit sürümü gibi yüklemeniz gereken ek paketler olabilir. Bazıları için, exit ve / veya uname -m 'nın 64-bit sürümünü yüklemeye çalışırken onlara ihtiyacınız olduğunu bildirmiş olabilirsiniz. Başkaları için bilgilendirilmeyebilirsin.

(chrooting ve chroot edilmiş alanda işletilmesi için yukarıdaki yönergeleri bu ilişkili ancak farklı prosedürü üzerinde önemli temel almaktadır ve ayrıca benim bazı Launchpad CEVAPLAR mesajların, özellikle 6. ubuntu / + kaynak / gölge / + soru / 176749" > x86_64 ve ia32_libs yürütülebilir işaret Sezyum özel teşekkür 32 bit çekirdeği çalıştıran bir sistemde çalışmayacak.)

    
verilen cevap Eliah Kagan 22.11.2011 20:53
24

Yukarıda verildiği gibi yaptım:

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

Çalıştı. Ubuntu 12.04'te 64 bit çekirdekli 32-bit kullanıcı kümemi çalıştırabiliyorum.

    
verilen cevap VJ- 19.06.2012 02:05
6

Soru 32bit'den 64 bitlik bir yüklemeye" yükseltmek "mümkün mü? (Bunu okumaya teşvik etmeden önce onu okumadıysanız. Cevabınız iyi geldi.) Ayrıca tavsiye ederim Aşağıdaki linkleri okuyarak:

Daha iyi performans için 32 bit mi yoksa 64 bit mi kurmalıyım?

32 bit yüklemeyi 64 bit birime nasıl geçirebilirim?

32-bit ve 64-bit arasındaki farklar nelerdir ve hangisini seçmeliyim?

Mümkün: Evet

Kolay mı: HAYIR!

Sorununuz hafızadaysa, Ubuntu 32 Bit'in 4 GB'den fazla RAM okuyabileceğini bilmelisiniz (64 GB'a kadar). En son Ubuntu 32 Bit versiyonunu kullanarak 32 Bit veya 64 Bit mimarisine sahip ve daha fazla RAM'e sahip olan bir bilgisayar sorun olmayacaktır. Sadece ekstra RAM okuyacak ve çalışacak.

    
verilen cevap Luis Alvarado 25.03.2013 03:29
5

Bu cevaplar biraz modası geçmiş. Çapraz değerlendirme artık Debian için Debian wiki 'de belgelenmiştir, ancak yine de önerilmez.

Farklı bir mimariden bir çekirdeği kurmak artık burada açıklandığı kadar kolay, ancak yeni 'apt' önceki bir mimariden paketleri tanımayacak ve bu yüzden tüm ön uçları çok sayıda kırık paketler bildirebilir. Bu, tüm bağımlılıkları diğer mimariye göre değiştirmeyi veya apt ve dpkg'ı 32-bit olarak değiştirmeyi gerektirir.

Dolayısıyla, en iyi yaklaşım ilk olarak dpkg --get-selections 'nin sonuçlarının kaydedilebilmesi, bundan i386 şeridinin kaydedilmesi ve her bir bağımlılık için bir amd64 paketinin önbelleğe yüklenmesi olabilir:

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

En iyi ihtimalle, bağımlılıkları çözmede yavaş ve zaman alıcı olma olasılığı yüksektir.

    
verilen cevap Cedric Knight 31.05.2017 19:43
4

Bu talimatlar sistem açılışınızı 64 bit kernel ile yapar, ancak userland programlarının çoğunu değiştirmez.

Sistemimi 64 bit CPU ile yükselttikten sonra, 32 bit 14.04.2 Ubuntu'mda 64 bitlik bir çekirdek yüklemek istedim (codename: Trusty). Bunu yapmak için root user olarak şu komutları girdim:

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

Notlar:

  1. Bu, 32 bit çekirdeğinizi güvenilir olarak kaldırabilir - varsayılan olarak - güncelleştirilmiş bir çekirdek (ütopikten gelen çekirdek) ile birlikte gönderilir, bkz. 14.04 Sürüm Notları . Bu durumda mevcut çekirdeğiniz 64 bit çekirdeği ile kurulacak ve böylece kaldırılacaktır. Bu fikri beğenmediyseniz, eski 64-bit kernel paketini "linux-generic-lts-trusty: amd64" yerine denemek isteyebilirsiniz.

  2. "--add-architecure" komutu zorunludur. Bu olmadan, paket sistemi farklı mimarilerden gelen paketleri desteklemez, bkz. Multiarch-HowTo

  3. apt-get 'sinin sisteminize ne yapacağını görmek için, "verbose simülasyon modu" nu etkinleştiren -Vs seçenekleri ile çalıştırın. Bu, kurulacak ve kaldırılacak tüm paketleri basacaktır.

  4. Yeni çekirdeği kullanarak sistem yüklerseniz de grub yapılandırmasına bağlıdır. Kök kullanıcı olarak, grup güncellemesi yapmak ve mevcut önyükleme yapılandırmasını yazdırmak için update-grub dosyasını çalıştırın. Listedeki ilk resim varsayılan olarak önyüklenir.

  5. Farklı bir çekirdek resmi seçmek için GRUB_HIDDEN_TIMEOUT=0 satırını /etc/default/grub dizininden kaldırdım ve kök kullanıcı update-grub olarak çalıştırdım. Önyükleme zamanında artık farklı bir çekirdek seçebilirsiniz (herhangi bir tuşa basmak için 10 saniyeniz var, aksi halde grup varsayılan çekirdeğe devam edecektir).

  6. En çok oyu alan cevap 2011’den geliyor ve benim düşünceme göre umutsuzca modası geçmiş. Multiarch, birden fazla mimariden çok sayıda mimariden kitap paketlerini çok fazla ado olmadan yüklemenizi sağlar.

verilen cevap Daniel K. 12.06.2015 23:45
2

Crossgrading (farklı bir mimariye yükseltmek) henüz desteklenmiyor.

    
verilen cevap tumbleweed 06.01.2012 10:53
2

Belki de aynı sorunla karşılaştığımda, bu işe yarayacak, yapmayı planladığım şey buydu:

İşletim Sisteminin 64 bitlik bir sürümünü edinin, bir bölüme kurun, belgeleri ve diğer öğeleri 32 bit yüklemeden kopyalayın, her şey güvenli bir şekilde kopyalandığında, sürücünün geri kalanını biçimlendirebilir ve kullanabilirsiniz.

    
verilen cevap ubuntufan 20.06.2012 13:10
2

Evet, ANY çapraz kuşak paketlerini kurmak için yabancı mimari çizgi kesinlikle çok önemlidir. Ancak bundan sonra, belirtilen diğer birkaç kullanıcı gibi yapın:

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

Bu sadece yapmalı ...

    
verilen cevap strawn_04 04.04.2013 08:19
2

Ubuntu 16.04 Xenial için reçetem, yeni kurulmuş 32 bit Ubuntu VM'de standart sistem ve SSH sunucusuyla ancak GUI olmadan test edildi:

sudo -s
dpkg --get-selections > pkg1
dpkg --add-architecture amd64
apt update
apt install linux-image-generic:amd64 thermald 

(termec yüklerdi: amd64 ve 32-bit çekirdek altında yeniden başlayamaz)

reboot

64 bit kernel ile yeniden başlatıldıktan sonra:

sudo -s
unset LANG
apt install apt:amd64 apt-utils:amd64

yazın 'Evet, dediğimi yap!' sorulduğunda, güvenli olacak

mkdir /tmp/upgrade 
cd /tmp/upgrade
pkgs() { dpkg -l | awk '=="''"{print }' | awk -F: '{print }' | sort -u
}
apt download $(comm -23 <(pkgs i386) <(pkgs amd64))
while ls *amd64*deb
do dpkg -i *amd64*deb
   dpkg -l | awk '=="ii" && =="amd64" {print }' | awk -F: '{print }' |
   while read a
   do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb
   done
done

yukarıdaki döngüde, başarıyla yüklenen ve dpkg listesinde 'ii' durumunu aldığımız .deb dosyalarını kaldırdık.

İlk girişimden başarılı olmadığından dpkg -i çalışmasını tekrarlamamız gerekiyor

reboot

şimdi, hem 64 bit kernel hem de kullanıcı alanı ile kalan i386 paketleri kaldırılabilir:

dpkg --purge $(dpkg -l | awk '=="i386"{print }')

Daha fazla gereksiniminiz için kullanabileceğiniz pkgs1 dosyasına kaydettiğiniz liste.

    
verilen cevap Wladimir Mutel 18.01.2018 15:18
1

Güzel soru. Etrafımda bir avı var ve alıntı yaptığınız kullanıcı hikayesi dışında, bunun nasıl yapılacağı konusunda hiçbir ayrıntı bulamıyorum. Tüm belgeler, yalnızca 64 bit işletim sistemlerinde 32 bit uygulamaların çalıştırıldığını belirtir.

Ancak, denemek istiyorsanız, aşağıdakileri deneyebilirsiniz ([1] adresindeki bağlantımdan türetilmiştir)

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

Bence bir 3264 çekirdeği ile başlamak zorunda kalacaksın, çünkü 32-bit herhangi bir 64-bit ikili dosyayı çalıştıramayacak. Ancak, 64-bit bir 32 bitlik ikili dosyaları çalıştırmalıdır (ia32-libs yüklü ise?).

64bit kernel yüklendikten ve önyüklendikten sonra, apt: amd64'i yüklemek için oradan gidebilir, ardından kullanıcı hikayesini daha önce alıntılanan, ubuntu-minimal, ubuntu-desktop, vb. gibi takip edebilirsiniz.

Düzenledikten sonra: amd64 yüklendi, bu noktada esasen geçiş yaptığınız için yabancı mimari çizgiyi kaldırabilirsiniz.

Feragatname: Test etmek için 32bit sistemim yok, bu yüzden tüm tahminler bu. İyi şanslar!

[1] İşte

    
verilen cevap Caesium 22.11.2011 20:52

Etiketlerdeki diğer soruları oku