LINUX.ORG.RU

Ошибка с БД при переустановке Arch Linux

 , ,


0

1

Вчера запустил sudo pacman -Syyu, перезапустил ПК и не смог загрузиться - из вариантов только Reboot into firmware interface. Пошёл грузиться с Live DVD манжары. Загрузочные разделы под /boot/efi и просто /boot были размечены как гиговые /dev/nvme0n1p1 и nvme0n1p2, оба в FAT32. Один из них(который просто /boot) оказался с побитой ФС, не поддающейся восстановлению через FSCK. Я его форматнул и повторно выдал флаги boot_legacy и boot_grub(могу ошибаться, но в названии точно было grub). Попытался с того же Live DVD переустановить GRUB, но не мог войти в manjaro-chroot. Решил грузиться с флешки с последним дистрибутивом арча, где есть arch-chroot. Однако он не хочет работать, ибо, как я понял, внутри него нету /bin/bash. Решаться должно через pacstrap -k /mnt base, но он не хочет, потому что:

failed to initialize alpm library:
(root: /mnt, dbpath: /mnt/var/lib/pacman/)
Database is incorrect version

Каст pacman-db-upgrade не только молчит после исполнения, так ещё и не помогает. Pacman -Syyu(как я понял, это одно и то же) не может обновить все пакеты(а там на 200 мегабайт) потому что что-то ВНЕЗАПНО сжирает кучу места на диске(на рамдиске?), требуя под 250000 блоков из свободных около 67000. Через -Sy обновил только archlinux-keyring, повторно дважды кастовал pacman-db-upgrade и пошёл в archinstall, который всё равно не может пройти через arch-chroot из-за той самой библиотеки alpm.

Помогите ;-; Загрузчиком был GRUB


Ошибка с БД при переустановке Arch Linux

не мог войти в manjaro-chroot

как будто бы что то не так.

sudo pacman -Syyu

за такое руки ломать надо. раньше изза такого бомжара ломалась постоянно, пока дауны на «разработчиках» не догадались изменить скрипт.

Database is incorrect version

ну так rm -rf

usi_svobodi
()

Загрузочные разделы под /boot/efi и просто /boot были размечены как гиговые /dev/nvme0n1p1 и nvme0n1p2, оба в FAT32.

К проблеме может и не относится напрямую, но зачем тебе такая странная схема? Если ты делаешь отдельный EFI раздел, то используй нормальную линуксовую ФС, например ext-4 для /boot. Или совмещай /boot и EFI раздел в один большой с FAT-32.

Один из них(который просто /boot) оказался с побитой ФС, не поддающейся восстановлению через FSCK.

Почему это произошло? Ты нажал reset во время копирования нового ядра? Файловая система на ровном месте не ломается, особенно такая старая и простая, как FAT-32.

Попытался с того же Live DVD переустановить GRUB, но не мог войти в manjaro-chroot

Почему не смог? Что тебе помешало?

Решил грузиться с флешки с последним дистрибутивом арча, где есть arch-chroot. Однако он не хочет работать, ибо, как я понял, внутри него нету /bin/bash

Что означает эта фраза? Внутри чего нет /bin/bash? В ROOT разделе твоего линукса этот файл 100% есть. Если его там нет, то у тебя большие проблемы.

Решаться должно через pacstrap -k /mnt base

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

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

А если ты себе zsh поставил, то зачем пытаешься запустить bash

Пакет bash прописан в зависимостях у base и удалить его не получится. Да и в системе, очевидно, множество bash-скриптов. Поэтому bash работать должен в любом случае, даже если он дополнительно поставил zsh.

vbr ★★★★★
()

Загрузочные разделы под /boot/efi и просто /boot были размечены как гиговые /dev/nvme0n1p1 и nvme0n1p2, оба в FAT32.

Дофига два гига под ядро, ему столько не надо. Вот, например, как у меня, тоже не очень правильно, но переделывать лень.

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

Если ты делаешь отдельный EFI раздел, то используй нормальную линуксовую ФС, например ext-4 для /boot.

Так нельзя же. Только FAT-16 или FAT-32. По-крайней мере установщики манжары и мяты не давали.

Что означает эта фраза? Внутри чего нет /bin/bash? В ROOT разделе твоего линукса этот файл 100% есть.

Происходит тоже самое, что и на манжаре: Failed to run bin/bash: no such file or directory. Хотя сейчас до меня что-то дошло и я зря монтировал раздел с /boot для легаси в /mnt. Сейчас смонтировал туда корень и chroot заработал

Заодно и подробней опиши, как твой диск сейчас разбит

Четыре раздела:

  • один FAT-32 под /boot с флагами legacy_boot, boot_grub
  • один FAT-32 под /boot/efi с флагами boot, esp
  • один EXT4 под корень
  • один EXT4 под /home

Дом я не трогаю, значит, по идее, я не могу там ничего потерять

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

Так нельзя же. Только FAT-16 или FAT-32.

Глупости какие. Раздел /boot читается grub-ом, а уж он-то поддерживает все линуксовые ФС. FAT нужен, если ты совмещаешь /boot и EFI разделы в одном (т.к. BIOS не умеет читать ext3 но умеет читать FAT). Но раз у тебя EFI раздел отдельный, значит к тебе это не применимо.

По-крайней мере установщики манжары и мяты не давали.

Почти наверняка ты что-то не так понял.

Происходит тоже самое, что и на манжаре: Failed to run bin/bash: no such file or directory. Хотя сейчас до меня что-то дошло и я зря монтировал раздел с /boot для легаси в /mnt. Сейчас смонтировал туда корень и chroot заработал

Ну вот стало понятней.

Для нормального chroot-а тебе надо:

  1. Смонтировать корень в /mnt.
  2. Смонтировать boot в /mnt/boot
  3. Смонтировать EFI в /mnt/boot/efi (если в твоей живой системе он монтируется туда).
  4. Делать arch-chroot.

Возможно ещё и home понадобится монтировать, но скорей всего это уже лишнее.

Вот после того, как ты всё вышеописанное смонтируешь и сделаешь успешный chroot, попробуй установить grub заново, если считаешь, что проблема в нём. Также стоит переустановить ядро.

Заодно ещё посмотри /mnt/etc/fstab и удостоверься, что монтируешь всё куда надо (с поправкой на /mnt, конечно).

А ещё, после всех этих переустановок посмотри dmesg на предмет I/O Error-ов. Вдруг у тебя просто диск умирает.

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

Там дебильная политика обновления ядра. В Арче и производных ядро всегда одно и обновляется всегда корректно. Держать 100500 ядер нет никакого смысла, совсем нет. Да и сам образ ядра сравнительно небольшой, initrd может быть больше, но и он не отжирает гигабайты места.

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

Теперь, когда внутри chroot надо писать pacman -S base linux, pacman пытается установить эти два пакета с кучей других(archlinux-keyring, bash, iproute2, glibc и т.д.) на 795 мегабайт. Видимо это обновления, которые не проходят и вываливаются в терминале в формате iproute2: /usr/share/man/man8/tipc.8.gz exists in filesystem и установка не проходит. Что сейчас можно сделать?

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

iproute2: /usr/share/man/man8/tipc.8.gz exists in filesystem и установка не проходит. Что сейчас можно сделать?

--overwrite="*" чтоб прям радикально. либо можешь повозиться базой. pacman -D -h посмотри.

usi_svobodi
()
Ответ на: комментарий от Tyse_EX

Тебе не надо переустанавливать base. Тебе надо переустановить пакеты linux, grub и установить grub на твой диск. Напиши pacman --sync --refresh --sysupgrade, это должно установить все обновления, а потом pacman --sync --refresh --sysupgrade grub linux чтобы переустановить конкретно эти два пакета. После этого прочитай ArchWiki: GRUB и разберись, как установить загрузчик GRUB на свой диск. Перед этим, конечно, тебе надо убедиться, что твои файловые системы нормально монтируются.

Это конкретно для Arch рецепт. Можешь попробовать не устанавливать обновления и выполнить pacman --sync grub linux чтобы только переустановить эти пакеты и ничего более. Арч рекомендует при всех операциях обновлять всё, но думаю, что конкретно в данном случае это не обязательно.

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

Закончилось всё тем, что grub вроде восстановился, даже стандартное ядро нашёл. Только при загрузке с него всё зависало на заставке MSI с редкими обращениями к SSD. Пришлось форматнуть корень. /usr/bin очень жалко, но таков путь. Спасибо всем за помощь. С советом @vbr мне уже удалось продвинуться достаточно далеко и понять, что я разнёс что-то дальше загрузочных разделов, но также и исправить проблему с БД

Tyse_EX
() автор топика