Bagaimana cara mengubah sistem berbasis Debian 32-bit (x86) menjadi 64-bit


36

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 .


5
Saya tertarik pada jawaban untuk pertanyaan ini. Saya punya sistem 32 bit pada mesin yang mampu 64 bit (yang sekarang berusia 6+ tahun, tetapi masih berlaku untuk saat ini). Satu-satunya alasan saya menggunakan 32 bit ketika saya awalnya menginstal mesin ini pada tahun 2007, adalah karena saya ingin menjalankan aplikasi 32 bit di atasnya. Dengan multiarch baru, jika saya mengerti dengan benar, aplikasi 32 bit dapat dengan mudah diinstal pada mesin 64 bit. Jadi, alangkah baiknya untuk mengonversi ke 64 bit untuk mengi, tapi saya tidak tahu betapa sulitnya itu. Saran @ bahamat untuk menggunakan VM terdengar bagus. Jika saya mengelola konversi yang berhasil saya akan jawab di sini.
Faheem Mitha


Pertanyaan serupa tentang AU: askubuntu.com/q/5018/178596
Wilf

Jawaban:


8

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 upgradeakan menangani beberapa paket, apt-get -f installakan memperbaiki beberapa kesalahan, tetapi sebagian besar paket tetap menggunakan i386. Jika Anda ingin mengatasinya, lewati bagian yang sulit;)

Menggunakan dpkg --get-selections | grep :i386akan 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 zxdan kemudian mengedit scpfile yang diekstrak melalui scp -r ./* root@other_computer:/, sehingga binari tersedia lagi. Bilas dan ulangi, dan scpfile 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/localbeberapa file lain yang telah Anda ubah /root,, ..., YMMV).

Dapatkan daftar paket yang diinstal dengan dpkg --get-selections > packagelistdan salin file yang dihasilkan packagelistjuga.

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.


1
"Apa yang akan saya lakukan sebagai gantinya" ... man, saya yakin bahwa OP bertanya tanpa menginstal ulang: /
Braiam

@Braiam OP kemungkinan besar ingin melakukan itu tanpa menginstal ulang. Saya baru saja melaporkan pengalaman pribadi saya melakukan itu. Rute alternatif lebih mudah bagi saya, dan mungkin saya telah membuat beberapa kesalahan saat mengubah sistem.
Residuum

6
Untuk menandai paket yang diinstal secara otomatis, Anda dapat digunakan apt-mark showautountuk mengekspor daftar yang diinstal secara otomatis dan apt-mark autountuk menandainya dalam instalasi baru.
Adrien Clerc

Terima kasih telah menuliskan pengalaman Anda. "Jika Anda ingin mengatasinya, lewati bagian yang sulit;)" Bagaimana jika tujuan saya hanya untuk dapat mengembangkan perangkat lunak 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 :(
jberryman

7

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 $HOMEmenggunakannya.

Proses umumnya akan

  1. 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
    
  2. Jika Anda /homeadalah 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/
    
  3. 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)
    
  4. 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.


4

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.


PERINGATAN: SAYA TIDAK TELAH MELAKUKANNYA INI ATAU BAHKAN !!!


Proses kasarnya adalah:

  1. Instal varian multiarch dari semua perpustakaan Anda (yang paling penting libgcc1)
  2. Gunakan dpkg-architecture -aamd64untuk menggeser lengkungan Anda (Catatan, mungkin mengeluh tentang GCC)
  3. Unduh dan tampilkan semua komponen yang diperlukan (lihat selanjutnya)
  4. Paksa memasang varian dpkgdan dependensi amd64
  5. Paksa memasang varian amd64 dari paket sistem dasar esensial, termasuk apt-getdan kernel (Catatan, itu mungkin mengeluh BANYAK)
  6. Mulai ulang
  7. Agaknya instal sisa sistem dengan 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 debtakeoversebelumnya) 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 .


3

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.


1
--force-architecturetidak diperlukan, dan kernel amd64 dapat diinstal melalui apt pada i386.
jordanm

3

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.


1
Menarik untuk membaca apa yang sebenarnya terlibat, tetapi setelah membaca ini, saya pikir saya lebih baik dengan instalasi ulang. Terima kasih.
Faheem Mitha

Tautan itu tidak berfungsi untuk saya - sudahkah sumber dayanya dipindahkan?
Toby Speight

Oh ya, apakah Anda melihat tanggalnya? Saya menulis bahwa pada tahun 2013, barang-barang sering hilang di web dalam 6 tahun. Sayangnya, web masih tidak memiliki fungsi yang sangat mendasar: Menampilkan tautan yang rusak sebelum Anda mengklik tautan.
nigratruo

1

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-selectionshanyalah 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 -ldi dalam whileloop.


-1

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!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.