- Миграция/Обновление Debian 8 Jessie GNU/Linux с 32-битной до 64-битной системы
- Подготовка
- Резервные копии
- Загрузка с помощью 64-битного ядра в 32-битную систему
- Подготовка файлов
- Откат до базовой 32-битной системы в Debian
- Обновление базового дистрибутива с 32 до 64-битной архитектуры
- Установка программ
- Заключение
- Правильная инструкция по установке linux-headers в Debian Stretch. uname -r|sed ‘s/[^-]*-[^-]*-//’ — работает неправильно?
- How to install the latest/stable version of Linux kernel on Ubuntu Linux using apt-get
- Method #1: Search and install the latest stable version
- Method #2: Install mainline kernel version v4.12.3
- A note about updating mainline kernel
Миграция/Обновление Debian 8 Jessie GNU/Linux с 32-битной до 64-битной системы
В этой статье описан способ преобразование рабочей системы архитектуры i386 в amd64 для Debian. При желании могут быть сохранены все существующие настройки и установленные программы, а может и нет 😀
Начиная с версии Debian GNU/Linux 7.0 Wheezy для пользователей стала доступна интересная возможность, которая называется мультиархитектура (multiarch). С этого момента в операционной системе могут одновременно находиться бинарные файлы (программы, библиотеки), которые относятся к различным архитектурам. На практике это обычно используется для запуска 32-битных программ из-под 64-битной ОС. Однако есть и более интересные применения.
Мы можем разрешить выполнение 64-битных программ из-под 32-х битной операционной системы. Затем заменить все 32-битные программы на их 64-битные аналоги. Что и будет продемонстрировано в этой статье.
Подготовка
Для успешного обновления ОС необходимо:
- 2-3 часа свободного времени;
- навыки работы с чистой коммандной строкой, без использования графического интерфейса;
- умение самостоятельно исправить недостающие зависимости пакетов с помощью dpkg и apt-get.
Многие детали, на подобии, на подобии: “завершите работу X-сервера и перейдите в консоль Linux с помощью комбинации клавиш Ctrl-Alt-F2”, будут опускаться. Подразумевается, что вы это можете сделать самостоятельно при необходимости.
Резервные копии
Cледует создать резервные копии всех файлов настроек, которые могут быть утерены в процессе обновления. Особенно если они располагаются в директории /etc, а не домашней папке пользователя. Однако следует помнить, что некоторые конфигурационные файлы не подходят для использования в различных архитектурах.
Универсального рецепта тут нет. К примеру, можно скопировать только те файлы, которые были созданы или отредактированы вручную (для моего десктопа было достаточно /etc/X11/xorg.conf и /boot/grub/grub.cfg).
Загрузка с помощью 64-битного ядра в 32-битную систему
Ядро Linux архитектуры i386 не позволяет запускать программы, скомпилированные под amd64. А вот 64-битное ядро может выполнять как 64, так и 32-битное программное обеспечение. И именно это нам и нужно:
- Разрешим пакетному менеджеру устанавливать программы с архитектурой amd64:
# dpkg —add-architecture amd64 - Обновим список пакетов:
# apt-get update - Установим 64-битное ядро:
# apt-get install linux-image-amd64:amd64
Кроме этого потребуется утилита, которая поможет скачать пакеты для базовой системы:
# apt-get install debootstrap
Теперь необходимо перезагрузить компьютер. В процессе установки ядра должен обновиться файл grub.cfg. Следует обязательно убедиться, что при загрузке ОС в качестве ядра была выбрана amd64-версия в меню GRUB2.
Подготовка файлов
Создадим файлы, содержащие в себе списки установленных пакетов для разных архитектур:
- # dpkg —get-selections «*:i386» | grep -v deinstall > packages.i386
- # dpkg —get-selections «*:amd64» | grep -v deinstall > packages.amd64
- # dpkg —get-selections «*:all» | grep -v deinstall > packages.all
Теперь скачаем пакеты, которые входят в состав базовой системы Debian.
- Для архитектуры i386:
# mkdir bootstrap-i386 # debootstrap —arch=i386 —download-only jessie ./bootstrap-i386 - Для архитектуры amd64:
# mkdir bootstrap-amd64 # debootstrap —arch=amd64 —download-only jessie ./bootstrap-amd64
Создадим файл, содержащий в себе список пакетов, которые входят в базовую поставку дистрибутива Debian:
# ls -l bootstrap-amd64/var/cache/apt/archives/ | egrep «.deb$» | cut -d «_» -f1 | awk » > packages.base
Последующие операции следует выполнять только при наличии достаточного количества времени. Потому как перезагрузки компьютера крайне нежелательны.
Откат до базовой 32-битной системы в Debian
Производим откат дистрибутива до базовых пакетов. При этой операции появится уведомление о том, что будет удалено текущее (amd64) ядро Linux. Следует подтвердить это действие.
# dpkg —clear-selections # cat packages.base | dpkg —set-selections # apt-get dselect-upgrade
Обновление базового дистрибутива с 32 до 64-битной архитектуры
В первую очередь обновим dpkg:
- # mkdir archives-dpkg/partial
- # apt-get install -d -y -o Dir::Cache::Archives=./archives-dpkg dpkg:amd64
- # mv -i archives-dpkg/dpkg_*.deb .
- # dpkg -i archives-dpkg/*.deb
- # dpkg -i dpkg_*.deb
- # mv -i dpkg_*.deb archives-dpkg
- # mkdir archives-apt/partial
- # apt-get install -d -y -o Dir::Cache::Archives=./archives-apt apt:amd64
- # dpkg -i archives-apt/*.deb
Очистим кэш пакетов:
Теперь несколько раз запускаем dpkg -i с пропуском ошибок, чтобы установить 64-битные пакеты для базовой системы:
# dpkg —abort-after=1000 -i bootstrap-amd64/var/cache/apt/archives/*.deb . # dpkg —abort-after=1000 -i bootstrap-amd64/var/cache/apt/archives/*.deb
Делать это нужно до тех пор, пока не разрешатся все зависимости. Если же остаются зависимости после 5-6 запуска, которые не могут разрешиться автоматически, то следует сделать это самостоятельно:
# dpkg —force-overwrite -i bootstrap-amd64/var/cache/apt/archives/имя_пакета.deb
На данном этапе параллельно будут сосуществовать две архитектуры базовой системы Debian: i386 и amd64. Необходимо удалить 32-битные пакеты:
- # apt-get autoremove
- # apt-get dselect-upgrade
Осталось переустановить 64-битное ядро Linux:
# apt-get install locales linux-image-amd64 grub-pc
Только после этого можно безопасно перезагрузить операционною систему.
На всякий случай проверьте, существуют ли еще 32-битные пакеты в системе и, удалите их в этом случае вручную:
# dpkg —get-selections «*:i386» | grep -v deinstall
Установка программ
Cформируем список программного обеспечение, которое было установлено до обновления Linux с 32 до 64-битной архитектуры:
# cat packages.all | grep -v deinstall > packages.final # cat packages.i386 | grep -v «:i386″ | grep -v deinstall | cut -f1 | awk » >> packages.final # cat packages.i386 | grep «:i386″ | grep -v deinstall | cut -f1 | awk » >> packages.final # cat packages.amd64 | grep ^linux-image | grep -v deinstall | cut -d: -f1 | awk » >> packages.final
Удалим архитектуру i386 из поддерживаемых и установим пакеты:
# dpkg —clear-selections # dpkg —remove-architecture i386 # dselect update # cat packages.final | dpkg —set-selections # apt-get dselect upgrade # apt-get install `dpkg —get-selections «*:i386» | grep -v deinstall | cut -f1 | cut -d: -f1 | sed ‘:a;N;$!ba;s/n/ /g’` # apt-get install `dpkg —get-selections «*:all» | grep -v deinstall | cut -f1 | cut -d: -f1 | sed ‘:a;N;$!ba;s/n/ /g’` # apt-get install `dpkg —get-selections «*:amd64» | grep -v deinstall | cut -f1 | cut -d: -f1 | sed ‘:a;N;$!ba;s/n/ /g’`
Будьте готовы к тому, что некоторые пакеты не будут самостоятельно устанавливаться. Причина заключается в том, что они создают файлы, размещаемые в местах не зависящих от архитектуры. При попытке установить свежую версию пакета другой архитектуры – выпадает ошибка.
Решить эту проблему достаточно просто. Необходимо лишь сначала очистить файлы конфигурации пакета для архитектуры i386:
# apt-get purge имя_пакета:i386
После чего повторить комманду установки. Кроме того, можно начать “жизнь с чистого листа” и вручную установить пакеты, не пользуясь сгенерированным списком, к примеру:
# apt-get install firefox ratpoison feh scrot gimp emacs sudo nano eclipse alsa-utils alsa-tools alsa-oss flashplugin-nonfree
Заключение
В результате всех этих операций у меня получился вполне себе рабочий 64-битный дистрибутив Debian. Надеюсь, что вы добьётесь того же результата =) Если же нет – задавайте вопросы в комментария, постараюсь на них как можно скорее ответить.
Источник
Правильная инструкция по установке linux-headers в Debian Stretch. uname -r|sed ‘s/[^-]*-[^-]*-//’ — работает неправильно?
(uname -r|sed ‘s/[^-]*-[^-]*-//’) — что вот это вот делает?
Но почему apt-get устанавливает linux-headers откуда-то отсюда:
Или нужно при установке обязательно указывать часть backports?
apt-get install -t stretch-backports linux-headers-`uname -r`
Я читал это, но не понял что вот это делает: (uname -r|sed ‘s/[^-]*-[^-]*-//’)? uname -r — понятно, но sed.. ‘s/[^-]*-[^-]*-//’)?!
Заменяет последовательность «[не минусы]минус[не минусы]минус» на пустую строку
Кстати, можно было написать uname -r | cut -d- -f3 , но люди почему-то любят использовать sed для всего.
Можно, но пока нет
А как желательно писать при установку пакетов для архитектуры процессора amd64?
apt-get install linux-image-amd64
apt-get install linux-image-$(uname -r|sed ‘s/[^-]*-[^-]*-//’)
Зачем это всё, когда есть мета-пакеты? Поставил мета-пакет и у тебя всегда будет актуальная версия ядра и хедеров после обновления.
для amd64 одинаково, но это-то заклинание именно такое, чтобы не задавать новичку лишний раз вопрос об архитектуре системы, чтобы работало везде.
замудрено больно, мне проще посмотреть что там есть вкусного
и потом полностью указать желаемое
Зачем это всё, когда есть мета-пакеты?
И какой мета-пакет нужен мне?
мне проще посмотреть что там есть вкусного
Ещё есть apt-cache policy
uname -r | cut -d- -f3-
linux-image-amd64 linux-headers-amd64 — если для обоих указать backports, то так и поставятся.
Вместо того, чтобы в гугле на первой странице найти ответ на вопрос, ты лезешь на форум спрашивать. Нет предела тупости.
А ну я уже поставил этот мета-пакет. Осталось только найти 5 пакетов для 390 драйвера. А эта установка мета-пакетов тоже нужна из backpor’ов насколько я понял.
Такой подход не всегда нужен. Иногда надо установить определённую версию, а не последнюю в случае указания мета-пакета.
Так для меня актуально ядро 4.17, а не 4.18, на который указывает мета-пакет.
в таком случае проще поставить нужную версию, чем колупать sed.
Правильная инструкция по установке linux-headers
Источник
How to install the latest/stable version of Linux kernel on Ubuntu Linux using apt-get
Method #1: Search and install the latest stable version
I tested this method on the following version of Ubuntu:
To find out your current version of Linux kernel, run:
$ uname -mrs
Linux 4.4.0-83-generic x86_64
To find out the latest version of Linux kernel type:
$ apt-cache search linux-generic
Sample outputs:
The highest possible version is 4.10.0-27. To install it just type the following apt-get command/apt command:
$ sudo apt install linux-image-4.10.0-27-generic
OR
$ sudo apt-get install linux-image-4.10.0-27-generic
Sample outputs:
You must reboot the Linux server, run:
$ rm *.deb
$ sudo reboot
Verify new version:
$ uname -mrs
Linux 4.10.0-27-generic x86_64
Method #2: Install mainline kernel version v4.12.3
First, if one is using select proprietary or out-of-tree modules (ex. vitualbox, nvidia, fglrx, bcmwl, etc.) unless there is an extra package available for the version you are testing, you will need to uninstall the module first, in order to test the mainline kernel. If you do not uninstall these modules first, then the upstream kernel more than likely will not boot.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
First visit kernel.org and note down the latest kernel version:
Fig.01: Note down kernel version
Fig.02: Downloading the latest build of mainline kernel
kernel-ppa/mainline/v4.12.3/linux-headers-4.12.3-041203-generic_4.12.3-041203.201707210343_amd64.deb
$ wget http://kernel.ubuntu.com/
kernel-ppa/mainline/v4.12.3/linux-image-4.12.3-041203-generic_4.12.3-041203.201707210343_amd64.deb
To verify the mainline build binaries, run:
$ wget http://kernel.ubuntu.com/
kernel-ppa/mainline/v4.12.3/CHECKSUMS
$ sha256sum —ignore-missing -c CHECKSUMS
Sample outputs:
You must see OK for all downloaded .deb files. Next, you need to install .deb files using dpkg command:
$ sudo dpkg -i *.deb
You must reboot the Linux server, run:
$ sudo reboot
Verify new version:
$ uname -mrs
Linux 4.12.3 -041203-generic x86_64
A note about updating mainline kernel
You must visit and download the latest version from the following url:
http://kernel.ubuntu.com/
kernel-ppa/mainline/
For example, download v4.13-rc1 as follows:
$ rm *.deb
$ wget http://kernel.ubuntu.com/
kernel-ppa/mainline/v4.13-rc1/linux-headers-4.13.0-041300rc1-generic_4.13.0-041300rc1.201707151931_amd64.deb
$ wget http://kernel.ubuntu.com/
kernel-ppa/mainline/v4.13-rc1/linux-image-4.13.0-041300rc1-generic_4.13.0-041300rc1.201707151931_amd64.deb
$ wget http://kernel.ubuntu.com/
kernel-ppa/mainline/v4.12.3/CHECKSUMS
$ sha256sum —ignore-missing -c CHECKSUMS
$ sudo dpkg -i *.deb
$ sudo reboot
$ uname -mrs
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Category | List of Unix and Linux commands |
---|---|
Documentation | help • mandb • man • pinfo |
Disk space analyzers | df • duf • ncdu • pydf |
File Management | cat • cp • less • mkdir • more • tree |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop Apps | Skype • Spotify • VLC 3 |
Modern utilities | bat • exa |
Network Utilities | NetHogs • dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop |
Searching | ag • grep • whereis • which |
Shell builtins | compgen • echo • printf |
Text processing | cut • rev |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Comments on this entry are closed.
You don’t have Docker support with this kernel version (v4.12.3).
If you install version 4.10.0-27, Docker will work well.
Hi,
About the method #1…
According to [1] and [2], in order to get a kernel as newer as possible in a most convenient way, you should install “linux-signed-generic-lts-XXX” (e.g., “linux-signed-generic-lts-xenial”) or unsigned version “linux-generic-lts-XXX” (e.g., “linux-generic-lts-xenial”) for Ubuntu before LTS 16.04, even prefer to install the newer “linux-signed-generic-hwe-16.04” or even more bleeding edge “linux-signed-generic-hwe-16.04-edge” for Ubuntu LTS 16.04 and newer; instead of specifying a version of linux kernel image package which won’t be automatically updated via “apt update/upgrade”. In this way, it will keep your kernel up to date as possible.
Some example commands to find out the proper kernel package name in Ubuntu:
$ apt-cache search linux-signed-generic-lts
linux-signed-generic-lts-utopic — Complete Signed Generic Linux kernel and headers (dummy transitional package)
linux-signed-generic-lts-vivid — Complete Signed Generic Linux kernel and headers (dummy transitional package)
linux-signed-generic-lts-wily — Complete Signed Generic Linux kernel and headers (dummy transitional package)
linux-signed-generic-lts-xenial — Complete Signed Generic Linux kernel and headers (dummy transitional package)
AND
$ apt-cache search linux-generic-lts
linux-generic-lts-utopic — Complete Generic Linux kernel and headers (dummy transitional package)
linux-generic-lts-vivid — Complete Generic Linux kernel and headers (dummy transitional package)
linux-generic-lts-wily — Complete Generic Linux kernel and headers (dummy transitional package)
linux-generic-lts-xenial — Complete Generic Linux kernel and headers (dummy transitional package)
AND
$ apt-cache search linux-signed-generic-hwe
linux-signed-generic-hwe-16.04 — Complete Signed Generic Linux kernel and headers
linux-signed-generic-hwe-16.04-edge — Complete Signed Generic Linux kernel and headers
$ apt-cache search linux-generic-hwe
linux-generic-hwe-16.04 — Complete Generic Linux kernel and headers
linux-generic-hwe-16.04-edge — Complete Generic Linux kernel and headers
Thanks for the article! I never leave comments but this was useful
Источник