I've got a 32-bit Ubuntu instalasi berjalan pada 64-bit perangkat keras. Sekarang bahwa multi-arch telah dilaksanakan, saya ingin beralih ke 64-bit tanpa harus instal ulang OS.
Ini adalah salah satu user cerita ditangani oleh spec:
Shawn diinstal sistem nya menggunakan versi 32-bit dari Ubuntu, tapi hardware-nya adalah 64-bit dan ia ingin beralih. Dia secara manual menginstal amd64 versi dpkg dan apt, menggantikan versi i386 dan mengubah arsitektur yang digunakan sebagai default; kemudian ia menginstal amd64 ubuntu-minimal paket; kemudian ia menginstal amd64 ubuntu-desktop paket. Seiring waktu yang tersisa i386 packages diganti secara otomatis di-upgrade.
Namun, ketika mencoba untuk mengikuti petunjuk di sana, saya tidak dapat menemukan versi 64-bit dari dpkg atau apt.
Apakah ini cerita pengguna harus dilaksanakan dengan cara yang berbeda di final spec, atau apakah saya perlu melakukan sesuatu yang berbeda?
Singkatnya, bagaimana dapatkah saya beralih instalasi 32-bit ke 64-bit?
Pendekatan seperti ini sangat rumit, dan tidak akan pernah mengakibatkan semua paket anda menjadi amd64 versi
bukan i386
versi. Hanya paket-paket yang benar-benar menerima upgrade kemungkinan akan berubah dalam arsitektur, dan mungkin hanya jika ada paket lain yang tidak sedang di-upgrade mengandalkan mereka menjadi i386
arsitektur. Sejak beberapa paket tidak akan menerima setiap update sepanjang seluruh siklus rilis Ubuntu anda, anda mungkin tidak akan pernah memiliki sepenuhnya amd64
sistem yang menggunakan teknik tersebut. Selain itu, ada tentu saja tidak ada dukungan resmi untuk pendekatan seperti itu.
Anda akan baik-disarankan untuk mengganti yang sudah ada sistem Ubuntu dengan yang baru, instalasi 64-bit.
Namun, jika anda ingin mencoba teknik ini, anda akan memiliki untuk manual download .deb
file dpkg
dan apt
. Anda dapat menemukan mereka di dpkg
di Ubuntu dan apt
di Ubuntu pada halaman Launchpad--memperluas versi terbaru di bawah "Oneiric Ocelot" yang ditandai sebagai rilis, keamanan, dan/atau update (tapi mungkin anda don't ingin versi yang ditandai hanya diusulkan dan/atau backports, jika pernah ada satu). Kemudian men-download .deb
file yang ditandai amd64
. Secara khusus, file anda'll ingin adalah: satu ini untuk dpkg
(dan lain-lain yang terdaftar, terlalu, jika anda memiliki paket-paket yang diinstal) dan ini dan ini dan ini dan ini dan ini untuk apt
.
Sebelum anda melakukan apa-apa dengan file-file ini, anda harus pastikan untuk membuat cadangan semua dokumen-dokumen penting di sistem Ubuntu diinstal dan file penting lainnya (misalnya, musik, ebook, video), karena itu lebih mungkin bahwa mencoba teknik ini akan menjadi bumerang buruk dan meninggalkan Ubuntu anda benar-benar unusable.
Anda dapat menginstal paket-paket ini dengan menempatkan mereka dalam folder yang berisi tidak ada yang lain (misalkan folder yang disebut debs
dan dalam Popularitas
directory), dan kemudian menjalankan perintah ini:
sudo dpkg -Ri ~/Downloads/debs
Tentu saja, setelah anda've diinstal mereka, mereka tidak't benar-benar menjalankan, karena mereka executable 64-bit dan 32-bit sistem Ubuntu menjalankan kernel 32-bit (yang hanya akan menjalankan 32-bit executable). Pada kenyataannya, mereka mungkin bahkan tidak selesai menginstal, karena mereka mungkin memiliki post-install script yang memanggil mereka unrunnable 64-bit executable.
Ada berbagai cara mencoba untuk menginstal kernel 64-bit ke 32-bit sistem, tetapi mereka semua sangat rumit, jadi saya menyarankan anda untuk boot dari 64-bit Oneiric live CD (yang dengan sendirinya menjalankan kernel 64-bit), chroot ke dalam sistem Ubuntu diinstal, dan digunakan baru-baru ini diinstal 64-bit apt
dan dpkg
untuk menginstal kernel 64-bit.
Berikut ini adalah instruksi-instruksi tertentu untuk melakukan itu...tapi tolong jangan mengambil ini berarti bahwa I'm mengatakan akan bekerja. Saya belum mencoba ini. (Saya telah chrooted diinstal ke sistem Ubuntu dari live CD's dan dilakukan manajemen paket dan operasi lainnya, tapi saya belum mencoba cross-arsitektur operasi yang disarankan di sini.)
gunung | grep ' on / '
(dengan menyisipkan ke Terminal dan tekan enter). Anda harus melihat sesuatu seperti /dev/sda2 pada / type ext4 (rw,kesalahan=remount-ro,komit=0)
. Bagian anda're tertarik adalah nama perangkat sebelum on
(di contoh ini, it's /dev/sda2
). Ingat itu, atau menuliskannya. /
partisi. Jika anda memiliki terpisah /boot partisi, maka anda'll perlu tahu nama perangkat untuk itu juga. Jadi dalam hal ini, jalankan
gunung | grep ' di /boot '. Anda'll melihat sesuatu seperti
/dev/sda1 pada /boot type ext2 (rw)`. Ingat atau catat ini juga. sudo mount /dev/sda2 /mnt
(ganti /dev/sda2
dengan nama perangkat anda dapatkan pada langkah 1, jika berbeda). /boot
partisi, jalankan sudo mount /dev/sda1 /mnt/boot
(ganti /dev/sda1
dengan nama perangkat anda dapatkan pada langkah 2, jika berbeda). ping -c 4 launchpad.net
untuk melihat apakah koneksi Internet bekerja sepenuhnya dari dalam chroot. Anda're berharap untuk sesuatu seperti ini:
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 waktu=141 ms
64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 waktu=143 ms
64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=3 ttl=41 waktu=142 ms
64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 waktu=140 ms --- launchpad.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
9. Jika, sebaliknya, anda tidak dapat mengirim atau menerima paket, maka anda'll harus mengatur konektivitas Internet di chroot. Untuk melakukannya, jalankan perintah ini (untuk meninggalkan chroot, copy relevan file-file konfigurasi dari live CD ke dalam sistem chroot, dan masukkan kembali chroot):
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.tua
sudo cp /mnt/etc/hosts /mnt/etc/hosts.tua
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
sudo cp /etc/hosts /mnt/etc/hosts
Sementara umumnya anda harus menghentikan proses ini jika ada kesalahan, don't khawatir jika pertama dan/atau kedua dari empat perintah gagal, asalkan cara tertentu di mana ia gagal adalah dengan mengatakan bahwa /mnt/etc/resolv.conf
(atau /mnt/etc/hosts
) tidak ada.
Chroot kembali dan coba lagi:
sudo chroot /mnt
ping -c 4 launchpad.net
10. Jalankan perintah ini untuk membuat anda chrooted lingkungan sepenuhnya siap untuk digunakan:
export HOME=/root
export LC_ALL=C
11. Jika anda belum't dipasang .deb file untuk versi 64-bit dari
dpkgdan
apt, jadi lakukan sekarang. Jika anda tidak menginstal mereka tapi ada kesalahan konfigurasi, jalankan
dpkg --configure -auntuk memperbaikinya. (Mudah-mudahan yang akan bekerja...mungkin akan lebih baik untuk menunggu untuk mencoba untuk menginstal mereka sampai anda're di live CD lingkungan, dalam kasus menginstal versi 64-bit
dpkgsaat boot ke sistem diinstal daun
dpkgdalam keadaan tidak dapat digunakan.) 12. Dengan versi 64-bit dari
dpkgdan
aptdiinstal, dengan asumsi bahwa mereka akan secara otomatis menginstal 64-bit paket, anda sekarang dapat menghapus semua 32-bit kernel dan menginstal kernel 64-bit. Untuk menghapus anda 32-bit kernel, jalankan
dpkg -l | grep linux-. Ini daftar paket terinstall yang dimulai dengan
linux. Anda're lebih khusus tertarik dalam paket-paket yang mulai suka
linux-generic,
linux-image,
linux-serverdan/atau
linux-header. Menghapus file-file ini dengan
apt-get purge ...di mana
...diganti dengan dipisahkan oleh spasi daftar paket-paket yang anda're menghapus. 13. Sekarang instal paket-paket yang anda dihapus. (Sebenarnya, untuk paket yang berisi nomor versi di nama paket, seperti misalnya
linux-image-3.0.0-13-generik, anda hanya perlu menginstal terbaru berversi nama paket.) Melakukan ini dengan menjalankan
apt-get install ...di mana
...diganti dengan dipisahkan oleh spasi daftar paket-paket yang anda're menginstal. 14. Update boot loader configuration, unmount beberapa perangkat, dan meninggalkan chroot: update-grub umount /proc || umount -lf /proc umount /sys umount /dev/pts keluar sudo umount mnt/dev 15. Jika anda berlari
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.tuadan itu tidak gagal, maka sekarang jalankan
sudo cp /mnt/etc/resolv.conf.tua /mnt/etc/resolv.conf. 16. Jika anda berlari
sudo cp /mnt/etc/hosts /mnt/etc/hosts.tuadan itu tidak gagal, maka sekarang jalankan
sudo cp /mnt/etc/hosts.tua /mnt/etc/hosts. 17. Jika anda menginstal sistem telah terpisah
/bootpartisi, unmount bahwa:
sudo umount /mnt/boot 18. Unmount anda diinstal dengan sistem's
/partisi:
sudo umount /mnt 19. Meninggalkan jendela Terminal (run
exit), kemudian reboot (atau menutup) live CD sistem dan boot ke sistem yang terinstal. 20. Melihat apakah sistem ini dapat digunakan dan menjalankan kernel 64-bit (
uname -mharus mengatakan arsitektur adalah
x86_64). Ada juga mungkin paket-paket tambahan yang anda butuhkan untuk menginstal, seperti
ia32_libsdan/atau versi 64-bit dari
libc6, untuk ini untuk bekerja. Untuk beberapa dari mereka, anda mungkin akan memberitahu anda membutuhkan mereka ketika mencoba untuk menginstal versi 64-bit dari
dpkgdan/atau
apt. Untuk orang lain, anda mungkin tidak akan diberitahu. (Petunjuk di atas untuk chrooting dan beroperasi di chrooted lingkungan yang berbasis di bagian signifikan pada [ini terkait tetapi berbeda prosedur][10] dan juga pada beberapa [Launchpad Jawaban][11] tulisan saya, terutama #6 [di sini][12] dan #6 [di sini][13]. Dan terima kasih khusus untuk [Cesium][14] untuk menunjukkan bahwa 64-bit
dpkgdan
apt` executable won't berjalan pada sistem yang menjalankan 32-bit kernel.)
Seperti yang diberikan di atas, yang saya lakukan:
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
Itu bekerja. Saya mampu untuk menjalankan 32-bit userland dengan kernel 64-bit, di Ubuntu 12.04.
Meskipun pertanyaan ini mirip dengan https://askubuntu.com/questions/5018/is-it-possible-to-upgrade-from-a-32bit-to-a-64bit-installation?rq=1 (Jika anda belum baca ini sebelum saya mendorong anda untuk mencobanya. Jawaban yang diberikan tidak baik.) Saya juga sarankan untuk membaca link berikut:
https://askubuntu.com/questions/19803/for-better-performance-should-i-install-32-bit-or-64-bit?lq=1
https://askubuntu.com/questions/81824/how-can-i-switch-a-32-bit-installation-to-a-64-bit-one?lq=1
Apakah mungkin: Ya
Lebih mudah: TIDAK ada!
Jika masalah dengan memori, maka anda harus tahu bahwa Ubuntu 32 Bit dapat membaca lebih dari 4GB RAM (Up to 64 GB). Jadi menggunakan terbaru Ubuntu versi 32 Bit dengan komputer yang memiliki 32 Bit atau 64 Bit arsitektur dan menempatkan lebih banyak RAM tidak akan menjadi masalah. Itu hanya akan membaca RAM ekstra dan bekerja.
Jawaban-jawaban ini agak ketinggalan jaman. Cross-grading sekarang didokumentasikan untuk Debian Debian wiki, tapi itu's masih tidak dianjurkan.
Menginstal kernel dari arsitektur yang berbeda adalah sekarang semudah seperti yang dijelaskan di sana, tapi baru 'apt-get' tidak't mengenali paket dari arsitektur sebelumnya, dan sehingga semua front-end dapat laporan banyak paket yang rusak. Hal ini membutuhkan perubahan semua dependensi untuk arsitektur lain, atau kembali apt dan dpkg untuk 32-bit.
Jadi pendekatan terbaik mungkin untuk menyimpan hasil dari dpkg --get-selections
, strip :i386 dari itu, dan men-download aplikasi amd64 paket untuk masing-masing dependensi untuk cache:
apt-get --download-only install perl:amd64 python3:amd64 python3-gi:amd64 xorg:amd64...
Di's cenderung lambat dan memakan waktu penyelesaian dependensi.
Petunjuk ini membuat sistem anda boot dengan kernel 64-bit tetapi tidak mengubah sebagian besar program userland.
Setelah upgrade sistem saya dengan CPU 64-bit, saya juga ingin menginstal kernel 64-bit pada 32-bit Ubuntu 14.04.2 (codename: Terpercaya). Untuk melakukan hal ini saya masukkan perintah berikut sebagai root pengguna:
dpkg --add-architecture amd64
apt-get update
apt-get install linux-generic-lts-utopic:amd64
Catatan:
Ini mungkin menghapus kernel 32-bit seperti yang terpercaya - dengan default - kapal dengan update kernel (kernel dari utopic), lihat 14.04 Catatan Rilis. Dalam hal ini anda saat ini kernel konflik dengan kernel 64-bit untuk-bisa-diinstal dan oleh karena itu akan dihapus. Jika anda tidak suka ide ini, anda mungkin ingin mencoba yang lebih tua 64-bit kernel paket "linux-generic-lts-terpercaya:amd64" sebagai gantinya.
"--add-architecture" perintah yang sangat penting. Tanpa itu, sistem paket tidak mendukung paket dari arsitektur yang berbeda, lihat Multiarch-HowTo
Untuk melihat apa yang apt-get
akan lakukan untuk sistem anda, jalankan dengan pilihan Vs
yang memungkinkan "verbose mode simulasi". Ini akan mencetak semua paket yang akan diinstal dan dihapus.
Apakah anda boot sistem yang menggunakan kernel baru tergantung pada grub
konfigurasi. Sebagai root, jalankan update-grub` untuk membuat grub update dan cetak saat ini konfigurasi boot. Gambar pertama dalam daftar yang akan di-boot sebagai default.
Untuk memilih kernel yang berbeda gambar, saya dihapus line GRUB_HIDDEN_TIMEOUT=0
dari /etc/default/grub
dan berlari seperti root update-grub
. Pada saat boot, anda sekarang dapat memilih kernel yang berbeda (anda've punya waktu 10 detik untuk menekan tombol apapun jika tidak grub akan melanjutkan dengan kernel default).
Jawaban dengan suara terbanyak adalah dari tahun 2011 dan putus asa usang dalam pendapat saya. Multiarch memungkinkan anda menginstal library paket dari beberapa arsitektur pada mesin yang sama tanpa banyak basa-basi.
Resep saya untuk Ubuntu 16.04 Xenial, diuji pada yang baru diinstal 32-bit Ubuntu VM dengan standar sistem dan server SSH tapi tanpa GUI :
sudo -s
dpkg --get-selections > pkg1
dpkg --add-architecture amd64
apt update
apt install linux-image-generic:amd64 thermald
(yang lain itu akan menginstal thermald:amd64 dan gagal untuk me-restart bawah kernel 32-bit)
reboot
setelah reboot dengan kernel 64-bit :
sudo -s
unset LANG
apt install apt:amd64 apt-utils:amd64
tipe 'Ya, lakukan seperti yang aku katakan!' ketika ditanya, itu akan menjadi aman
mkdir /tmp/upgrade
cd /tmp/upgrade
pkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u
}
apt download $(comm -23 <(pkgs i386) <(pkgs amd64))
while ls *amd64*deb
do dpkg -i *amd64*deb
dpkg -l | awk '$1=="ii" && $4=="amd64" {print $2}' | awk -F: '{print $1}' |
while read a
do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb
done
done
dalam lingkaran di atas, kita hapus .deb file yang telah berhasil diinstal dan punya 'ii' status di dpkg daftar.
kita perlu mengulang dpkg-i
berjalan, karena tidak berhasil dari upaya pertama
reboot
sekarang, dengan kedua 64-bit kernel dan userspace, yang tersisa i386 packages dapat dihapus :
dpkg --purge $(dpkg -l | awk '$4=="i386"{print $2}')
daftar yang telah anda simpan di pkgs1
file yang dapat anda gunakan untuk setiap kebutuhan lebih lanjut.
Mungkin, karena saya menghadapi masalah yang sama, ini akan bekerja, itu adalah apa yang saya berencana untuk melakukan:
Mendapatkan versi 64-bit dari OS, install ke partisi, ketika selesai copy dokumen-dokumen dan barang-barang lainnya dari 32-bit menginstal, ketika semuanya aman disalin anda dapat memformat seluruh drive dan menggunakannya.
Ya, asing-arsitektur garis ini paling jelas penting untuk menginstal APAPUN lintas lengkung paket. Tapi setelah itu, lakukan beberapa pengguna lain disebutkan:
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
Itu yang akan kita lakukan itu...
Pertanyaan yang bagus. Saya telah berburu di sekitar dan lainnya dari user story yang anda kutip, saya dapat't menemukan rincian tentang bagaimana untuk melakukan hal ini. Semua dokumentasi yang menunjukkan itu's hanya untuk menjalankan aplikasi 32-bit pada yang sudah 64-bit OS.
Namun, jika anda're bersedia untuk bereksperimen, anda bisa coba cara berikut ini (yang berasal dari link saya di [1])
echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
sudo apt-get install linux-image:amd64
Saya pikir anda akan memiliki untuk memulai dengan amd64 kernel, sebagai 32-bit satu won't dapat menjalankan 64-bit biner. Namun 64-bit yang harus dijalankan biner 32-bit (jika ia32-libs diinstal?).
Jika anda mendapatkan 64 bit kernel diinstal dan diaktifkan, anda dapat pergi dari sana untuk menginstal apt:amd64, kemudian ikuti pengguna-kisah seperti yang dikutip sebelumnya, ubuntu-minimal, ubuntu-desktop, dll.
Setelah apt:amd64 diinstal, saya pikir anda dapat menghapus asing-arsitektur line karena anda pada dasarnya telah beralih pada saat itu.
Disclaimer: saya tidak memiliki 32bit sistem untuk tes jadi semua ini adalah dugaan. Good luck!