Загрузка из командной строки GRUB, говорит, что partion не работает не существует

Используйте

for i in `awk '/}/ {if (NR!=1) print "";next} \
                {printf "%s ",$0,"}"}END{print ""}' yt.txt \
        |awk '{print $1}'|sort|uniq \
    `; \
    do \
        awk '/}/ {if (NR!=1) print "";next} \
            {printf "%s ",$0,"}"}END{printf ""} \
            ' yt.txt \
         |grep "$i"|sed 's/ /\n/g'|grep -v "$i"|sort|uniq \
            |awk -v var="$i" ' NR==1 {printf var} {print $0} END {print "}"}'  \
    ;done \

Та же команда в 1 строке ниже (для копирования)

for i in `awk '/}/ {if (NR!=1) print "";next} {printf "%s ",$0,"}"}END{print ""}' yt.txt|awk '{print $1}'|sort|uniq` ; do awk '/}/ {if (NR!=1) print "";next} {printf "%s ",$0,"}"}END{printf ""}' yt.txt|grep "$i"|sed 's/ /\n/g'|grep -v "$i"|sort|uniq|awk -v var="$i" ' NR==1 {printf var} {print $0} END {print "}"}' ;done

Объяснение:

Часть forвернет вам уникальный заголовок блока (abcd/efgh/a.jar,lkmn/opqr/b.zip) и передать его в блок do. Часть doсначала будет grepвсе строки для каждого заголовка, которые также будут включать дубликаты. Затем он исключит заголовок и объединит все оставшиеся строки под этим блоком заголовков, а затем добавит заголовок в первую строку. И хардкод }в конце.

Пример

bash-4.2$ cat yt.txt
abcd/efgh/a.jar
{
abcd/efgh/a.class
cdef/ghij/b.class
klmn/opqr/c.class
}
lkmn/opqr/b.zip
{
abcd/efgh/a.class
cdef/ghij/b.class
}
abcd/efgh/a.jar
{
cdef/ghij/b.class
d.class
}



bash-4.2$ for i in `awk '/}/ {if (NR!=1) print "";next} {printf "%s ",$0,"}"} \
> END{print ""}' yt.txt |awk '{print $1}'|sort|uniq` \
> ; do awk '/}/ {if (NR!=1) print "";next} {printf "%s ",$0,"}"}END{printf ""}' yt.txt \
>  |grep "$i"|sed 's/ /\n/g'|grep -v "$i"|sort|uniq \
> |awk -v var="$i" ' NR==1 {printf var} {print $0} END {print "}"}'\
> ;done
abcd/efgh/a.jar
{
abcd/efgh/a.class
cdef/ghij/b.class
d.class
klmn/opqr/c.class
}
lkmn/opqr/b.zip
{
abcd/efgh/a.class
cdef/ghij/b.class
}
1
01.04.2017, 13:41
1 ответ

У вас есть две проблемы: идентификация диска и идентификация раздела.

Grub считает разделы с 0, Linux считает разделы с 1. Итак, если Grub hd0 - это sda Linux, то Grub (hd0,5) - это Linux sda6 .

Раздел, который вы выбираете в качестве «корневого» в Grub, не обязательно является корневым разделом Linux. В Grub «root» - это просто ярлык, позволяющий не вводить обозначение раздела перед именами файлов. Если у вас есть отдельный раздел / boot , вы обычно устанавливаете его как корень Grub, потому что Grub заботится только о том, что находится в / boot (образ ядра и начальный образ RAM-диска ). Linux не заботится о том, что находится в / boot , кроме как обновить его.

Нумерация дисков в Grub и Linux может не совпадать. Grub использует BIOS компьютера для перечисления дисков. У Linux есть свои драйверы. Когда диски подключаются через другой интерфейс, трудно предсказать, в каком порядке они будут пронумерованы; это может быть тот, на который контроллер диска отвечает быстрее. Итак, hd0 Grub не обязательно является Linux sda .

Чтобы ваш компьютер загружался надежно, независимо от того, как подключены диски и какова синхронизация ответов контроллера, используйте метки или UUID вместо буквенно-цифровых обозначений. После загрузки запустите update-grub - обычно он должен сгенерировать файл /boot/grub/grub.cfg с использованием UUID. И Grub, и Linux будут перечислять доступные разделы при запуске и запоминать их UUID. В grub.cfg вы должны увидеть такие строки, как

search --no-floppy --fs-uuid --set=root 82aecd65-6423-4d95-9319-3034263ee747

и

linux /vmlinux root=UUID=82aecd65-6423-4d95-9319-3034263ee747 ro
1
28.01.2020, 00:58

Теги

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