32 bit (x86) Debian tabanlı bir sistemi 64 bit'e dönüştürme


36

64 bit işlemcide çalışan 32 bit sistemim var. Yeniden kurmadan nasıl all-64-bit'e dönüştürebilirim? Yeni Multiarch çerçevesinin bir sonucu olarak yapılabilecek bir yerde gördüm .


5
Bu sorunun cevabını merak ediyorum. 64 bit kapasiteli bir makinede 32 bitlik bir sistemim var (şu an 6+ yaşında, fakat şu an için hala devam ediyor). Bu makineyi ilk olarak 2007'de kurduğumda 32 bit kullanmamın tek nedeni, üzerinde 32 bit uygulamalar çalıştırmak istememdi. Yeni multiarch ile doğru anlarsam, 64 bit bir makineye 32 bit uygulamalar kolayca yüklenebilir. Yani, wheezy için 64 bit dönüştürmek güzel olurdu, ama ne kadar zor olacağını bilmiyorum. @ bahamat'ın VM kullanması önerisi kulağa hoş geliyor. Başarılı bir dönüşümü yönetirsem burada cevap veririm.
Faheem Mitha


AU üzerinde benzer bir soru: askubuntu.com/q/5018/178596
Wilf

Yanıtlar:


8

TL; DR: Yapılabilir ancak karmaşık. En altta bir alternatif belirttim.

Şimdi uzun bir açıklama yapın ve en iyi rotayı almadığım için bir tane tuzla alın:

Bu mümkün, ve işte son iki gece için yaptığım şey: Çok oklu desteği olmadan eski okul tarzını tanımlayan bir wiki girişi var . Kırık paketleri tamir etmek için yararlıdır.

Baz sistemini taşımak için, bunu :

$ 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

Paketlerinizden bazıları amd64, ancak çoğu i386 olarak kalacak. apt-get upgradebazı paketlerle ilgilenecek, bazı apt-get -f installhataları onaracak, ancak yine de çoğu paket i386 olarak kalacaktır. Bununla baş etmek istiyorsanız, o zaman zor kısmı atlayın;)

Kullanmanız dpkg --get-selections | grep :i386, hala taşımanız gereken tüm paketlerinizi döndürür.

Bir sonraki fikrim, yapmaktı:

# apt-get install `dpkg --get-selections \
  | grep i386 \
  | awk {'gsub(/:i386/, ":amd64"); print $1'}`

Ancak bunun kötü bir fikir olduğu ortaya çıktı: amd64'te bazı paketler mevcut değil (örneğin libc6-i686), apt-get'nin kafası karışacak ve her iki sürümde de çok sayıda paket kurulacak. Yetenekli birçok el işi yapılması gerekiyor.

Daha fazla zorluk: Bazı temel paketler değiştirilebilir, böylece kurulum için her zaman ikili dosyaları takacaksınız, ancak bazı paketlerin tekrar sökülüp takılması gerekecek, örneğin tar ile bu problemim vardı. Paketleri başka bir sistemde okudum, paketleri ayıkladım ar p package.deb data.tar.gz | tar zxve sonra scpayıklanan dosyaları scp -r ./* root@other_computer:/tekrar edindim , böylece ikili dosyalar tekrar kullanılabilir hale geldi. Durulayın ve tekrarlayın, scped dosyalarının üzerine yazılacaktır.

Onun yerine ne yapardım

Sistemleri değiştirdiğimde aşağıdakileri yaptım:

Yedekleyin /home, /etc(ve belki /var, /usr/localdiğer bazı dosyaları değiştirmiş, /root, ..., YMMV).

Yüklü paketlerin bir listesini alın dpkg --get-selections > packagelistve elde edilen dosyayı packagelistda kopyalayın .

Ardından, Debian'ı temiz bir şekilde yeniden kurun, tüm kullanıcıları tekrar oluşturun, belki roller vb.

Tüm paketleri tekrar yükleyin dpkg --set-selections < packagelist; apt-get -f install.

Yedeklenen dizinleri, dosyaları geri kopyalayın ve çoğunlukla bitirdiniz.

Bu yaklaşımın bir dezavantajı: Kütüphaneler de dahil olmak üzere tüm paketleriniz elle kurulmuş olarak işaretlenecek ve hiçbir paket artık onlara bağlı olmadığında kaldırılmayacak.


1
/: "Ben bunun yerine ne yapardın" ... adam, ben OP yeniden yükleme olmadan sorulan emindim
Braiam

@Braiam OP büyük olasılıkla yeniden yüklemeden yapmak istedi. Sadece kişisel deneyimlerimi bunu yaparken rapor ediyordum. Alternatif rota benim için daha basit ve belki de sistemi dönüştürürken bazı hatalar yaptım.
Kalıntı 23:13

6
Otomatik olarak yüklenen paketleri işaretlemek apt-mark showautoiçin, otomatik olarak yüklenen listeyi dışa aktarmak apt-mark autove yeni yüklemede bunları işaretlemek için kullanabilirsiniz.
Adrien Clerc

Deneyiminizi yazdığınız için teşekkür ederiz. "Bununla başa çıkmak istiyorsan, o zaman zor kısmı atla;)" Amacım sadece yazılım geliştirebilmek x86_64ve sistem paketlerimin 64-bit işlemciyi en iyi şekilde kullanmamasını umursamıyorum ? Ayrıca 32 bit işletim sistemi kullanıyorum. Sanırım kurulumu ilk yaptığımda işlemcimin 32-bit olduğunu sanıyordum :(
jberryman

7

Buradaki diğer cevaplar, teorik olarak mümkün olsa da, çok karmaşık ve muhtemelen çabaya değmeyeceğini gösteriyor. Bununla birlikte, temiz bir kurulum yapabilir $HOMEve aynı şekilde tutarsanız işlemi nispeten ağrısız yapabilirsiniz .

Genel süreç olacak

  1. Yüklü paketlerinizin listesini ve otomatik olarak yüklenen paketlerin listesini yedekleyin.

    dpkg --get-selections '*' > package.list
    apt-mark showauto >auto.list
    

    Mimariyi, multiarch kullanarak yüklediğiniz paket adlarından da kaldırmak isteyebileceğinizi unutmayın :

    dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
    
  2. Sizin /homeayrı bir bölümünüzse, yükleme işlemi sırasında biçimlendirmediğinizden emin olun. Ayrı bir bölümde değilse, daha sonra geri yükleyebileceğiniz bir yedekleme yapın:

    tar cvzf home_backup.tgz $HOME/
    
  3. Yeni sisteminizi kurduktan sonra eksik paketleri kurun.

    sudo dpkg --set-selections < package.list 
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-mark auto $(cat auto.list)
    
  4. $ HOME'nuzu geri yükleyin. Tgz dosyasını kopyalayın ve $ HOME dizininize çıkarın:

    tar xvzf home_backup.tgz
    

Ayrıca , Mint'in bunu kolaylaştırmak için sunduğu araçlara bir göz atmak isteyebilirsiniz . Hepsi de Ubuntu'ya yüklenebilmelidir.


4

Teoride mümkün, ancak muhtemelen haince. Şu anki debian multiarch multiarch lib'leri desteklemekte ancak ikili dosyaları desteklememektedir. İşte bu var.

Sistem öncelikle kendi mimarisini anlar dpkg-architecture(ki aslında bir perl betiğidir, ancak kemer bilgisini çıkarır ve görüntüler), ayrıca mimariyi ayarlayabildiğini iddia eder .


UYARI: BU VEYA HERHANGİ BİR TARAFINDAN SUNULMAMIŞTIR !!!


Kaba işlem şöyle olacaktır:

  1. Tüm kütüphanelerinizin multiarch değişkenini yükleyin (en önemlisi libgcc1)
  2. dpkg-architecture -aamd64Kemerinizi kaydırmak için kullanın (Not, GCC hakkında şikayet edebilir)
  3. Gerekli tüm bileşenleri indirin ve aşamalı hale getirin (sonraki bölüme bakın)
  4. Amd64 değişkenini dpkgve bağımlılıklarını yüklemeye zorla
  5. apt-getÇekirdek ve çekirdek dahil temel temel sistem paketlerinin amd64 varyantlarını kurmaya zorlayın (Not, A LOT’u şikayet edebilir)
  6. Yeniden Başlatma
  7. Muhtemelen sistemin geri kalanını da apt-get

Bu adımlar, Debian'ın tasarımını yalnızca son 12 yıldaki Linux dağıtımları arasında (daha debtakeoverönce kullanmış olmak dahil ) ve neredeyse benim kullanacağım yaklaşımda kullandığını biliyorum. Yani bunu kendi sorumluluğunuzdadır düşünün . Sistem adımlar 4 & 5 için adım 4. Alternate denemeden sonra herhangi bir zamanda kullanılamaz hale gelebilir belki olabilir debbootstrap.

En önemlisi, önemsediğiniz bir şey üzerinde yapmadan önce bunu bir VM üzerinde denemenizi şiddetle tavsiye ederim.

İyi şanslar ve Güç sizinle olsun .


3

Sorunun cevabı değil, ancak tüm paketleri x86'dan amd64'e yükseltmek zor olabilir, ancak en azından 64 bit uygulamaları ve sanal makineleri ve kapları çalıştırmanıza izin verecek olan amd64 çekirdek paketini kolayca yükleyebilirsiniz ( ihtiyacınız olan şey için yeterli olabilir).

Sadece amd64 linux-image paketini ile yükleyin dpkg -i --force-architecture.


1
--force-architecturegerekli değildir ve amd64 çekirdeği i386'da apt ile yüklenebilir.
Ürdün

3

Dışarıda epeyce el kitabı var, ancak gerçekte ne olacağını hiç bir şov göstermiyor. Bunu 32 bitden 64'e yükseltmeyi yeni bitirdiğim bir Debian Wheezy dizüstü bilgisayarına yazıyorum ve gerçekten işe yarıyor.

Bu talimatları izledim ve gerçekte neyle karşılaşacağınız konusunda gerçekten çok hassaslardı:

http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html

Bir öneri, sistemin tüm süreç boyunca enerjili kalmasını sağlamak, her şeyi geçirdiğinizden ve kaldırılan her şeyin tekrar kurulduğundan (özellikle gerekli paketler) emin olmadığınız sürece sistemi yeniden başlatmayın (ya da özellikle gerekli paketler).


1
Neyin dahil olduğunu okumak için ilginç, ancak bunu okuduktan sonra, yeniden yüklemeyle daha iyi olduğumu düşünüyorum. Teşekkürler.
Faheem Mitha

Bu bağlantı benim için çalışmıyor - kaynak taşındı mı?
Toby Speight

Evet, tarihi gördün mü? 2013 yılında, sık sık 6 yıl içinde webde kaybolacaklarını yazdım. Ne yazık ki, web hala çok temel bir işleve sahip değil: Bir bağlantıyı tıklatmadan önce kopuk bağlantıları gösterme.
nigratruo

1

Awk kullanma fikrinin ardından , şunu kullandım:

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

Birkaç kez çalıştırmak zorunda kaldım. dpkg --get-selectionssadece alfabetik bir listedir, bu nedenle en alttaki paketleri gerektiren paketler üstünden geçilecektir. Kaç tane takıldığını izlemek istiyorsanız dpkg --get-selections | grep amd64 | wc -l, whiledöngü içinde yapın .


-1

Bu konuda çok az deneyime sahibim, ancak 32'den 64'e kadar dönüştürme işleminin çoklu yayında yetenekli olması gerektiğini söylediğinizde haklı olduğunuza inanıyorum. Bu yeni sistemin ne kadar iyi desteklendiğine rağmen dikkatli olurdum.

İşte, konuyu tartışırken okuduğum belgelerden biri, belki de bu size yardımcı olacaktır: https://wiki.ubuntu.com/MultiarchSpec

Üçüncü Kullanıcı Hikayelerine dikkat edin. İşte aynı konunun etrafında başka bir bağlantı: https://help.ubuntu.com/community/MultiArch

Debian ve Ubunutu arasında biraz farklı olsa da, bu temel bir özellik. Ubuntu ve Debian'ın Ubuntu'nun çekip kendi zevkine uygun bir şey yapmadan önce bu yapıyı zeminde işlemesini sağlamak için yakından çalışacağını hayal ediyorum.

İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.