Saya memiliki sistem 32-bit yang berjalan pada prosesor 64-bit. Bagaimana cara mengubahnya menjadi all-64-bit, tanpa menginstal ulang? Saya telah melihat di suatu tempat bahwa itu bisa dilakukan sebagai hasil dari kerangka kerja Multiarch baru .
Saya memiliki sistem 32-bit yang berjalan pada prosesor 64-bit. Bagaimana cara mengubahnya menjadi all-64-bit, tanpa menginstal ulang? Saya telah melihat di suatu tempat bahwa itu bisa dilakukan sebagai hasil dari kerangka kerja Multiarch baru .
Jawaban:
TL; DR: Itu bisa dilakukan, tetapi rumit. Saya telah menguraikan alternatif di bagian bawah.
Sekarang deskripsi panjang , dan bawa dengan sebutir garam, karena saya mungkin tidak mengambil rute terbaik:
Itu mungkin, dan inilah yang saya lakukan selama dua malam terakhir: Ada entri wiki yang menggambarkan cara sekolah lama tanpa dukungan banyak orang. Sangat membantu untuk memperbaiki paket yang rusak.
Untuk memigrasi sistem basis Anda, lakukan ini :
$ 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
Beberapa paket Anda kemudian amd64, tetapi sebagian besar akan tetap i386. apt-get upgrade
akan menangani beberapa paket, apt-get -f install
akan memperbaiki beberapa kesalahan, tetapi sebagian besar paket tetap menggunakan i386. Jika Anda ingin mengatasinya, lewati bagian yang sulit;)
Menggunakan dpkg --get-selections | grep :i386
akan mengembalikan semua paket Anda, bahwa Anda masih harus bermigrasi.
Gagasan saya selanjutnya adalah:
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
Tapi ternyata itu ide yang buruk: beberapa paket tidak tersedia di amd64 (mis. Libc6-i686), apt-get akan bingung, dan banyak paket akan diinstal di kedua versi. Banyak pekerjaan manual yang harus dilakukan.
Lebih banyak kesulitan: Beberapa paket penting dapat diganti, sehingga Anda akan selalu menginstal binari untuk instalasi, tetapi beberapa paket harus dihapus dan diinstal lagi, misalnya saya mengalami masalah dengan tar. Saya menjalankan paket pada sistem lain, mengekstrak paket melalui ar p package.deb data.tar.gz | tar zx
dan kemudian mengedit scp
file yang diekstrak melalui scp -r ./* root@other_computer:/
, sehingga binari tersedia lagi. Bilas dan ulangi, dan scp
file ed akan ditimpa.
Apa yang akan saya lakukan sebagai gantinya
Saya telah melakukan yang berikut, setiap kali saya mengganti sistem:
Cadangkan /home
, /etc
(dan mungkin /var
,, /usr/local
beberapa file lain yang telah Anda ubah /root
,, ..., YMMV).
Dapatkan daftar paket yang diinstal dengan dpkg --get-selections > packagelist
dan salin file yang dihasilkan packagelist
juga.
Kemudian lakukan instal ulang yang bersih dari Debian, buat semua pengguna lagi, mungkin peran, dll.
Instal ulang semua paket dengan dpkg --set-selections < packagelist; apt-get -f install
.
Salin kembali direktori, file, dan cadangan yang sudah Anda buat.
Satu kelemahan dari pendekatan itu: Semua paket Anda, termasuk perpustakaan, akan ditandai sebagai yang diinstal secara manual, sehingga tidak akan dihapus instalasinya, ketika tidak ada lagi paket yang bergantung padanya.
apt-mark showauto
untuk mengekspor daftar yang diinstal secara otomatis dan apt-mark auto
untuk menandainya dalam instalasi baru.
x86_64
, dan tidak peduli apakah paket sistem saya tidak menggunakan prosesor 64-bit secara optimal ? Saya juga menjalankan OS 32-bit. Saya kira saya pikir prosesor saya 32-bit ketika saya pertama kali menginstal :(
Jawaban lain di sini menunjukkan bahwa walaupun secara teori ini mungkin, itu sangat kompleks dan mungkin tidak sepadan dengan usaha. Namun, Anda dapat melakukan instalasi yang bersih dan membuat prosesnya relatif tidak menyakitkan jika Anda tetap $HOME
menggunakannya.
Proses umumnya akan
Buat cadangan dari daftar paket yang diinstal dan daftar paket yang diinstal secara otomatis.
dpkg --get-selections '*' > package.list
apt-mark showauto >auto.list
Perhatikan bahwa Anda mungkin juga ingin menghapus arsitektur dari nama paket apa pun yang telah Anda instal menggunakan multiarch :
dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
Jika Anda /home
adalah partisi yang terpisah, pastikan untuk tidak memformatnya selama proses instalasi. Jika tidak ada di partisi terpisah, buat cadangan yang bisa Anda pulihkan nanti:
tar cvzf home_backup.tgz $HOME/
Setelah Anda menginstal sistem baru Anda, instal paket yang hilang
sudo dpkg --set-selections < package.list
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-mark auto $(cat auto.list)
Kembalikan $ HOME Anda. Salin file tgz dan ekstrak di direktori $ HOME Anda:
tar xvzf home_backup.tgz
Anda mungkin juga ingin melihat alat-alat yang disediakan Mint untuk membuatnya lebih mudah. Mereka semua harus dapat diinstal di Ubuntu juga.
Secara teori itu mungkin, tetapi kemungkinan berbahaya. Debian multiarch saat ini mendukung lib multiarch, tetapi bukan binari. Jadi begitulah.
Sistem ini terutama memahami arsitekturnya sendiri dpkg-architecture
(yang sebenarnya merupakan skrip perl, tetapi mengekstrak info lengkung dan menampilkannya), yang juga mengklaim dapat mengatur arsitektur.
Proses kasarnya adalah:
libgcc1
)dpkg-architecture -aamd64
untuk menggeser lengkungan Anda (Catatan, mungkin mengeluh tentang GCC)dpkg
dan dependensi amd64apt-get
dan kernel (Catatan, itu mungkin mengeluh BANYAK)apt-get
Langkah-langkah ini didasarkan pada apa yang saya ketahui tentang desain Debian telah menggunakannya hampir secara eksklusif di antara distro Linux selama 12 tahun terakhir (termasuk yang telah digunakan debtakeover
sebelumnya) dan pendekatan yang akan saya ambil. Jadi pertimbangkan ini dengan risiko Anda sendiri . Sistem Anda mungkin menjadi tidak dapat digunakan setiap saat setelah mencoba langkah 4. Alternatif untuk langkah 4 & 5 mungkin menjadi debbootstrap
.
Yang paling penting, saya sangat menyarankan mencoba ini pada VM sebelum melakukannya pada apa pun yang Anda pedulikan.
Semoga sukses, dan Semoga the Force menyertai Anda .
Bukan jawaban untuk pertanyaan, tetapi mungkin sulit untuk meningkatkan semua paket dari x86 ke amd64, tetapi Anda setidaknya dapat dengan mudah menginstal paket kernel amd64, yang setidaknya akan memungkinkan Anda untuk menjalankan aplikasi 64 bit dan mesin virtual dan wadah ( yang mungkin cukup untuk apa yang Anda butuhkan).
Cukup instal paket amd64 linux-image dengan dpkg -i --force-architecture
.
--force-architecture
tidak diperlukan, dan kernel amd64 dapat diinstal melalui apt pada i386.
Ada beberapa manual di luar sana, tetapi hampir tidak ada yang menunjukkan apa yang benar-benar diharapkan. Saya menulis ini di laptop Debian Wheezy yang baru saja saya selesaikan dari 32 bit ke 64 dan memang berhasil.
Saya mengikuti instruksi ini dan mereka benar-benar akurat tentang apa yang sebenarnya akan Anda hadapi:
http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html
Sebuah rekomendasi adalah untuk menjaga sistem tetap hidup selama seluruh proses, jangan reboot kecuali Anda yakin bahwa Anda telah memigrasi semuanya dan bahwa semua yang dihapus telah diinstal kembali (terutama paket-paket penting), atau Anda tidak akan menjalankan sistem lagi.
Mengikuti ide menggunakan awk , saya akhirnya menggunakan:
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
Saya harus menjalankannya beberapa kali. dpkg --get-selections
hanyalah daftar alfabet, sehingga paket di bagian atas yang memerlukan paket di bagian bawah akan dilewati. Jika Anda ingin melihat berapa banyak yang sedang diinstal, lakukan dpkg --get-selections | grep amd64 | wc -l
di dalam while
loop.
Saya memiliki sedikit pengalaman dengan masalah ini, tetapi saya percaya bahwa Anda benar ketika Anda mengatakan konversi dari 32 ke 64 harus mampu dengan multi-lengkungan. Saya akan berhati-hati tentang seberapa baik didukung sistem baru ini.
Berikut adalah salah satu dokumen yang saya baca yang membahas masalah ini, mungkin ini akan membantu Anda: https://wiki.ubuntu.com/MultiarchSpec
Perhatikan Kisah Pengguna ketiga. Berikut ini tautan lain seputar topik yang sama: https://help.ubuntu.com/community/MultiArch
Meskipun mungkin sedikit berbeda antara Debian dan Ubunutu, ini adalah fitur inti. Yang saya bayangkan Ubuntu dan Debian akan bekerja erat untuk mendapatkan struktur ini berfungsi di tanah sebelum Ubuntu menarik diri dan melakukan sesuatu yang mereka sukai.
Semoga berhasil!