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 .
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 .
Yanıtlar:
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 upgrade
bazı paketlerle ilgilenecek, bazı apt-get -f install
hataları 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 zx
ve sonra scp
ayıklanan dosyaları scp -r ./* root@other_computer:/
tekrar edindim , böylece ikili dosyalar tekrar kullanılabilir hale geldi. Durulayın ve tekrarlayın, scp
ed 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/local
diğer bazı dosyaları değiştirmiş, /root
, ..., YMMV).
Yüklü paketlerin bir listesini alın dpkg --get-selections > packagelist
ve elde edilen dosyayı packagelist
da 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.
apt-mark showauto
için, otomatik olarak yüklenen listeyi dışa aktarmak apt-mark auto
ve yeni yüklemede bunları işaretlemek için kullanabilirsiniz.
x86_64
ve 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 :(
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 $HOME
ve aynı şekilde tutarsanız işlemi nispeten ağrısız yapabilirsiniz .
Genel süreç olacak
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
Sizin /home
ayrı 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/
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)
$ 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.
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 .
Kaba işlem şöyle olacaktır:
libgcc1
)dpkg-architecture -aamd64
Kemerinizi kaydırmak için kullanın (Not, GCC hakkında şikayet edebilir)dpkg
ve bağımlılıklarını yüklemeye zorlaapt-get
Çekirdek ve çekirdek dahil temel temel sistem paketlerinin amd64 varyantlarını kurmaya zorlayın (Not, A LOT’u şikayet edebilir)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 .
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
.
--force-architecture
gerekli değildir ve amd64 çekirdeği i386'da apt ile yüklenebilir.
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).
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-selections
sadece 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
, while
döngü içinde yapın .
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!