LINUX.ORG.RU

Установка 64битного Linux из-под 32битного Linux на другой HDD

 , ,


0

3

Можно ли из-под запущенного 32-битного Linux установить систему на другой полностью чистый hdd? Интересует именно возможность установки без использования LiveCD.

Беглый поиск в инете говорит, что можно попробовать сделать это через виртуализацию (например, при помощи VirtualBox и raw-hdd). Может, у кого есть опыт/годные идеи?

Зачем это надо: чтобы можно было параллельно с установкой продолжить работать в 32-битной системе и просто из теоретического интереса.

★★★★☆

Можно ли из-под запущенного 32-битного Linux установить систему на другой полностью чистый hdd?

Да

Может, у кого есть опыт/годные идеи?

У меня нет

Goury ★★★★★
()

В Debin / Ubuntu есть debootstrap. Можешь в своём 32 битном дистрибутиве установить 64 битное ядро, перезагрузиться с 64 битным ядром и далее хоть посредством debootstrap, хоть посредством обычного chroot ставить 64 битный дистрибутив.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)

+ к debootstrap/febootstrap, если ядро 32-х битное, то qemu умеет запускать линуксовые бинари чужих архитектур без поднятия полноценной виртуалки (в debian/ubuntu для этого достаточно поставить пакет qemu-user-static и binfmt-support).

maloi ★★★★★
()
Ответ на: комментарий от kostik87

т.е. можно без проблем загрузить 64-битное ядро в 32-битной системе? не знал, надо попробовать... У меня Ubuntu, я так понимаю, можно просто выкачать 64-битный deb-пакет для ядра и распаковать его вместе с initrd?

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от maloi

если ядро 32-х битное, то qemu умеет запускать линуксовые бинари чужих архитектур без поднятия полноценной виртуалки (в debian/ubuntu для этого достаточно поставить пакет qemu-user-static и binfmt-support).

т.е. загрузить 64-битное ядро через qemu? И при этом вся остальная система подхватывается из хоста?

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Sahas

т.е. можно без проблем загрузить 64-битное ядро в 32-битной системе?

Можно, если в 64 битном ядре не отключена поддержка выполнения 32 битных бинарников.

У меня Ubuntu, я так понимаю, можно просто выкачать 64-битный deb-пакет для ядра и распаковать его вместе с initrd?

Можно подключить 64 битную архитектуру и просто установить пакет с 64 битным ядром.

Если видео драйвер используется открытый либо мантейнеры правильно собрали пакеты, то проблем не будет.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Если видео драйвер используется открытый либо мантейнеры правильно собрали пакеты, то проблем не будет.

попробую, о результатах отпишусь

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Sahas

открой генту и её хендбук, там подробно написано, как это сделать. правда для генты.

erzented
()
Ответ на: комментарий от Sahas

Нет, для qemu-user не нужно второе ядро. Оно работает по принципу wine - просто умеет запускать бинарники чужой архитектуры

maloi ★★★★★
()

Создай чистый раздел необходимого размера, создай на нем требуемую ФС, прокинь как raw в virtualbox, ставь обычным образом. Загрузчик не ставь. Если у тебя /boot отдельным разделом, тоже прокинь и примонтируй как /boot в госте. Аналогично, про EFI-раздел не забудь, если он есть. Но следи, чтобы у тебя ядра были с уникальными для каждого дистрибутива именами. Затем в хост-системе либо update-grub от рута, либо правишь lilo.conf и /sbin/lilo от рута. Все.

yars068 ★★★★
()

kostik87

Скачал 64-битное ядро для Ubuntu и заголовки, поставил через --force-all, ядро установилось, но с headers какая-то проблема:

sudo dpkg --force-all  -i linux-image-3.13.0-24-generic_3.13.0-24.47_amd64.deb linux-headers-3.13.0-24_3.13.0-24.47_all.deb

dpkg: предупреждение: проблема игнорируется, поскольку задан параметр --force:
dpkg: предупреждение: архитектура пакета (amd64) не соответствует архитектуре системы (i386)
(Чтение базы данных … на данный момент установлено 433170 файлов и каталогов.)
Preparing to unpack linux-image-3.13.0-24-generic_3.13.0-24.47_amd64.deb ...
Done.
Unpacking linux-image-3.13.0-24-generic (3.13.0-24.47) over (3.13.0-24.47) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-24-generic /boot/vmlinuz-3.13.0-24-generic
run-parts: executing /etc/kernel/postrm.d/zz-extlinux 3.13.0-24-generic /boot/vmlinuz-3.13.0-24-generic
P: Checking for EXTLINUX directory... found.
P: Writing config for /boot/vmlinuz-3.13.0-44-generic...
P: Writing config for /boot/vmlinuz-3.13.0-24-generic...
  No volume groups found
P: Installing debian theme... done.
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-24-generic /boot/vmlinuz-3.13.0-24-generic
Preparing to unpack linux-headers-3.13.0-24_3.13.0-24.47_all.deb ...
Unpacking linux-headers-3.13.0-24 (3.13.0-24.47) over (3.13.0-24.47) ...
Настраивается пакет linux-image-3.13.0-24-generic (3.13.0-24.47) …
Running depmod.
update-initramfs: deferring update (hook will be called later)
Not updating initrd symbolic links since we are being updated/reinstalled 
(3.13.0-24.47 was configured last, according to dpkg)
Not updating image symbolic links since we are being updated/reinstalled 
(3.13.0-24.47 was configured last, according to dpkg)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-24-generic /boot/vmlinuz-3.13.0-24-generic
run-parts: executing /etc/kernel/postinst.d/dkms 3.13.0-24-generic /boot/vmlinuz-3.13.0-24-generic
Error! Your kernel headers for kernel 3.13.0-24-generic cannot be found.
Please install the linux-headers-3.13.0-24-generic package,
or use the --kernelsourcedir option to tell DKMS where it's located
...

Перезагрузился с 64битным ядром, загрузился lightdm, но клавиатура не работает =) При попытке зайти в гостевой режим - fail (но это понятно - nvidia-модули не скомпилировались)

Идея с виртуализацией мне как-то больше импонирует, попробую метод yars068 или maloi...

Sahas ★★★★☆
() автор топика

Если пользуешься slackware — то всё просто, можешь запустить в chroot инсталлер, подсунуть ему 64-битные пакеты и всё поставить. Можно даже без инсталлера. Затем просто указать загрузчику на ядро новой системы и перезагрузиться в неё, сделав необходимые настройки.

Никакой замены ядра и виртуализации не требуется.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Sahas

Я тебе не говорил ставить через dpkg -i.

Идея с виртуализацией мне как-то больше импонирует

Ну молодец, чуть что подумать нужно сразу в кусты ...

kostik87 ★★★★★
()
Ответ на: комментарий от Xenius

Вообще-то chroot требует заранее подготовленной среды. Телодвижений будет все же больше. Вообще, способов поставить слакварь сильно больше одного, простейший — через installpkg из работающей Slackware.

yars068 ★★★★
()
Ответ на: комментарий от yars068

Вообще-то chroot требует заранее подготовленной среды.

Зачем? Просто распаковываешь initrd от slackware и slackware64, делаешь им diff, если отличие только в бинарных файлах, то всё просто, если есть различия в скриптах, то придётся скрестить инсталлеры, взяв скрипты от 64 и бинари от обычной. Далее в полученное дерево монтируешь /proc /sys /dev и директорию с пакетами и делаешь chroot, после чего можно ставить обычным инсталлером.

Хотя надо посмотреть на скрипты инсталлера, не запускают ли они программы из установленной системы?

Xenius ★★★★★
()
Ответ на: комментарий от Sahas

Я тебе написал:

Можно подключить 64 битную архитектуру и просто установить пакет с 64 битным ядром.

Это значит, что в начале нужно сказать менеджеру пакетов, что ты хочешь в свою 32 битную систему добавить поддержку 64 битной архитектуры:

dpkg --add-architecture amd64
либо изменить подключение источников пакетов в /etc/apt/sources.list с указанием архитектур:
deb [arch=amd64,i386] http://ftp.ubuntu.com/ubuntu/ имя_релиза main universe
Затем обновить список пакетов:
apt-get update
и наконец поставить пакет с 64 битным ядром:
apt-get install linux-image:amd64

Вот что нужно было сделать.

Можно было вообще пакеты не ставить, а распаковать пакет с ядром, взять из него образ ядра и модули и положить их /lib/modules, после чего просто загрузиться с этим ядром, переключиться на использование открытого видео драйвера, в случае необходимости внести правки в xorg.conf или переместить (удалить) его.

Хотя нет, нужно было сделать ещё кое-что в начале, а именно подумать.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)
Ответ на: комментарий от kostik87

ок, спасибо, теперь понял

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Xenius

Нет, установщик в initrd и он вполне себе самодостаточен.

yars068 ★★★★
()

Mission accomplished

В общем, получилось без проблем (почти) установить систему через VirtualBox

Через dpkg --add-architecture amd64 и прописывание доп.архитектуры в spurces.list не удалось - вроде, всё прописывается и apt-get update добавляет пакеты для amd64, но при попытке установить пакет через apt-get install [пакет]:amd64 ругается, что такого пакета не найдено, хотя просто [пакет] устанавливается. Провозился с этим 15 мин, решил, что овчинка не стоит выделки, и перешёл к установке через VB, благо всё для этого было подготовлено.

Порядок моих действий

1) При помощи gparted размечаем новый диск (пусть это будет /dev/sdc). Заранее это делать не обязательно, поскольку можно переразметить при установке линукса в виртуальной машине.

2) Создаём виртуальный raw-диск для VirtualBox:

sudo vboxmanage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdc

3) Надо сменить владельца файла с root на своего пользователя (допустим, user), иначе VirtualBox не сможет с этим файлом работать:

sudo chown user:user ~/hdd.vmdk

Также на просторах инета нашёл совет добавить своего пользователя в группу disk. Не уверен, что это точно надо делать, но на всякий пожарный сделал:

sudo gpasswd -a user disk

и перезапустил сессию.

4) В VirtualBox создать новую виртуальную машину (64 бит), в качестве диска указать существующий (~/hdd.vmdk).

5) Закачать iso-образ любимого 64-битного дистрибутива (у меня это xubuntu), запустить виртуальную машину с этим образом, установить систему обычным образом.

Загрузчик можно тоже сразу поставить (не забыть при разметке диска установить флаг «boot» на нужный раздел). Я не любитель новомодных UEFI и GPT, поэтому в качестве типа таблицы разделов указал MBR (msdos).

6) Перезагрузиться с нового диска.

7) PROFIT!.. Почти - возникла проблема с видеодрайвером (фак энвидия, как сказал гуру), но это уже дело поправимое...

Sahas ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.