Как я могу загрузиться в Arch Linux, используя initramfs, в Ubuntu Grub?

9.10 будет продолжать получать исправления безопасности и исправления, выпущенные до апреля 2011 года. Версия сервера 10.04 будет исправлена ​​до апреля 2015 года, так как это Long Term Release (LTS).

Я всегда выбирал чистую установку при обновлении версий и сохранял файлы конфигурации отдельно, поэтому я не знаю, будет ли обновление перезаписывать файлы конфигурации.

4
задан 26 May 2015 в 05:55

3 ответа

ОТРЕДАКТИРОВАННЫЙ: я протестировал его в своей системе рабочий Ubuntu 15.04, но я имею в Intel Processor на этом. Но что я сделал, для 30_os-prober файл, который является конфигурационным файлом для личинки, обнаруживающей операционные системы Linux, в /etc/grub.d папка, я добавил некоторые строки к нему. То, что это делает, является проверками CPU type и настраивает initrd строку соответственно.

Вот последний патч ниже:

Первый, создайте резервную копию Вашего /etc/grub.d/30_os-prober файл к другому местоположению.

mkdir ~/backup_init
sudo cp /etc/grub.d/30_os-prober ~/backup_init

тогда копия и вставка следующий здесь-сценарий к окну терминала для создания файла исправления.

TAB= 

тогда исправляют файлы вместе

sudo patch /etc/grub.d/30_os-prober ~/backup_init/patch30.do

тогда, необходимо быть в состоянии обновить личинку как нормальную

sudo update-grub

Hope, которой это помогает.

\t' cat > ~/backup_init/patch30.do << EOM *** backup_init/30_os-prober${TAB}2015-05-27 10:52:18.237381123 -0700$ --- /etc/grub.d/30_os-prober${TAB}2015-05-27 11:29:45.149420380 -0700$ *************** *** 22,27 **** --- 22,29 ---- datarootdir="/usr/share" quick_boot="1" + CPU=\`cat /proc/cpuinfo | grep -i vendor_id | head -1 | awk '{print $3}'\` + export TEXTDOMAIN=grub export TEXTDOMAINDIR="\${datarootdir}/locale" *************** *** 276,281 **** --- 278,286 ---- ${TAB}linux \${LKERNEL} \${LPARAMS} EOF if [ -n "\${LINITRD}" ] ; then + if [ "\${OS}" = "Arch" ] ; then + ${TAB}${TAB}LINITRD="/boot/intel-ucode.img \${LINITRD}" + fi cat << EOF ${TAB}initrd \${LINITRD} EOF EOM

тогда исправляют файлы вместе

sudo patch /etc/grub.d/30_os-prober ~/backup_init/patch30.do

тогда, необходимо быть в состоянии обновить личинку как нормальную

sudo update-grub

Hope, которой это помогает.

0
ответ дан 26 May 2015 в 05:55

На самом деле существует два файла, которые должны быть изменены для решения этой проблемы. Я протестировал это на своем Lubuntu 16.04.1 и Linux Manjaro.

В Ubuntu:

1) Файл /usr/lib/linux-boot-probes/mounted/40grub2 существует функция parse_grub_menu, который не обрабатывает все initrd параметры. Необходимо изменить' случай "1$" в... initrd) ':

a) удаляют присвоение

initrd="$(echo "$2" ...)"

, b) добавляют две строки вместо удаленной:

shift 1
initrd="$(echo "$@" | sed 's/(.*)//')"

2) Файл /etc/grub.d/30_os-prober в для цикла фиксируют присвоение LINITRD:

for LINUX in ${LINUXPROBED}; do
...
    LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"

первая фиксация берет всю доступную initrd информацию для Manjaro во внимание. Вторая фиксация очищает сгенерированную initrd строку путем изменения некоторого '^' символы на пробелы.

2
ответ дан 26 May 2015 в 15:55
  • 1
    Попробованный все предложенные возможные решения: проблема возникает, поскольку консоль командной строки не отвечает на мой пароль. Предложения? – cyberfool 25 August 2016 в 08:49

Я выполняю Manjaro и Arch, но по иронии судьбы Manjaro сделает подобную ошибку как Ubuntu. Таким образом, возможно, следующий патч в 30_os_prober может все еще помочь кому-то.

После:

LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"

Добавьте:

if [ "${OS}" = "Arch Linux" ] ; then
  LINITRD="/boot/intel-ucode.img ${LINITRD}"
fi
2
ответ дан 4 October 2019 в 14:29

Другие вопросы по тегам:

Похожие вопросы: