Во время установки Linux куда меня ведет клавиша выхода?

Определение слова для grep -w— это последовательность буквенно-цифровых символов или символов подчеркивания (в локали или ограниченная ASCII в зависимости от реализации/версии и с вариациями в поведении, если вы поиск не начинается или не заканчивается символами слова ).

Некоторые инструменты, такие как zsh, vim, xterm, позволяют настроить определение слова . Но не в любой grepреализации, которую я знаю. Поэтому, если вам нужно другое определение слова , вам нужно реализовать его самостоятельно каким-то другим способом.

Например, если ваше определение слова должно быть любой последовательностью символов, отличной от двоеточия , вы должны сделать:

grep -E '(^|:)arun(:|$)'

(arunпосле(|)начала строки(^)или :, за которым следует либо :, либо конец строки($)).

Или стандартными базовыми регулярными выражениями:

grep '^\(.*:\)\{0,1\}arun\(:.*\)\{0,1\}$'

(начало строки (^), опционально (\{0,1\}), за которой следует последовательность символов (.*), заканчивающаяся на :, за которой следует arun,необязательно, за которым следует последовательность символов, начинающаяся с :и заканчивающаяся концом строки ($)).

Или с PCRE (в дополнение к описанному выше варианту ERE, который также поддерживается PCRE)

grep -P '(?<![^:])arun(?![^:])'

(arunпри условии, что не предшествует((?<!...)отрицательный просмотр -позади оператора )и не следует за((?!...)отрицательный просмотр -опережающий оператор )символом, отличным от:([^:]); тот, который вы также можете использовать сgrep -o(для вывода только слова ),grep -b(для возврата его смещения во вводе ),grep --color(для выделения слова )как с-w)

Или, если ваше определение слова должно быть обычным словом([[:alnum:]_])плюс дефис:

grep -E '(^|[^[:alnum:]_-])arun([^[:alnum:]_-]|$)'

и так далее.

1
20.10.2019, 21:01
1 ответ

Ответ, как ни странно, "это зависит от того, как именно вы загружаетесь".

Нажав TAB или ESCAPE, когда появится первое сообщение о CentOS, вы получите доступ к загрузчику и сможете при необходимости добавить различные параметры загрузки. Это приведет к подсказке boot:.

Если вы загружаетесь в устаревшем стиле BIOS с оптического носителя , подсказка boot:будет исходить от ISOLINUX, варианта оптического носителя загрузчика SYSLINUX . Вы можете увидеть его конфигурацию в каталоге /isolinux/на носителе. Фактический загрузчик ISOLINUX не является файлом :, он встроен непосредственно в структуру образа ISO9660.

Если вы загружаетесь в стиле UEFI с оптического носителя , запрос будет из GRUB2. Вы найдете загрузчик UEFI (как в 32-битной -, так и в 64-битной -версиях UEFI! )в каталоге /EFI/BOOTна носителе. Также на носителе есть вторая копия загрузчиков UEFI в /images/efiboot.img. Какая копия загрузчиков фактически используется, зависит от реализации прошивки, но поскольку они оба имеют одинаковое содержимое, это не имеет значения.

Загрузочные структуры El Torito файловой системы ISO9660 на установочном носителе CentOS будут иметь один набор параметров загрузки для загрузки в устаревшем стиле BIOS -(, относящийся к встроенному ISOLINUX ), и еще два набора параметров загрузки. для загрузки UEFI :один для 32 -бит ia32 UEFI, а другой для 64 -бит x64 UEFI. Оба этих параметра UEFI будут указывать на efiboot.img. Вы можете использовать инструмент dumpetдля просмотра полных загрузочных структур El Torito; другие инструменты, которые я пробовал, обычно показывают только первый набор параметров загрузки.

Вот пример вывода:

# dumpet -i CentOS-7-x86_64-DVD-1708.iso 
Validation Entry:
        Header Indicator: 0x01 (Validation Entry)
        PlatformId: 0x00 (80x86)
        ID: ""
        Checksum: 0x55aa
        Key bytes: 0x55aa
Boot Catalog Default Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load segment: 0x0 (0000:7c00)
        System type: 0 (0x00)
        Load Sectors: 4 (0x0004)
        Load LBA: 5074 (0x000013d2)
Section Header Entry:
        Header Indicator: 0x91 (Final Section Header Entry)
        PlatformId: 0xef (EFI)
        Section Entries: 1
        ID: ""
Boot Catalog Section Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load address: 0 (0x0000)
        System type: 0 (0x00)
        Load Sectors: 17976 (0x4638)
        Load LBA: 580 (0x00000244)

Но если вы использовали ddдля записи ISO-образа на USB-носитель и используете его для загрузки программы установки, система найдет загрузчики другим способом.

Во-первых, в процессе подготовки isohybridв самое начало образа ISO была встроена тщательно -созданная таблица разделов MBR, что указывает на то, что USB-носитель теперь имеет два раздела :, один из которых занимает полный размер Образ ISO с идентификатором типа 0x00 и другим небольшим разделом (~размером 10 МБ или меньше ), который, по-видимому, встроен в первый раздел с идентификатором типа 0xef, что указывает на то, что это системный раздел EFI (ESP ). ] на диске с разделами MBR -. Второй «раздел» фактически указывает на содержимое файла efiboot.img. Существует также структура таблицы разделов GPT, которая содержит в основном ту же информацию.

(Да, указание на то, что один раздел находится внутри другого, технически является нарушением ожидаемой структуры MBR, но загрузочная прошивка вряд ли будет придираться к таким деталям...)

Блок MBR также содержит основную загрузочную запись ISOLINUX, которая охватывает случай загрузки в стиле BIOS -с установочного образа, записанного на USB-носитель. Прошивка UEFI в режиме собственной загрузки будет игнорировать MBR и смотреть в ESP, откуда она найдет загрузчики UEFI (либо 32 -, либо 64 -бит ).

Если вы хотите увидеть, как работает образ ISO при записи на USB-носитель, используйте losetup -P /dev/loop0 CentOS-7-x86_64-DVD-1708.iso, а затем используйте fdisk -lи аналогичные инструменты для просмотра структуры разделов:

# losetup -P /dev/loop0 CentOS-7-x86_64-DVD-1708.iso
# fdisk -l /dev/loop0
Disk /dev/loop0: 4.2 GiB, 4521459712 bytes, 8830976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1302a8b3

Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1 *        0 8830975 8830976  4.2G  0 Empty
/dev/loop0p2       2320   20295   17976  8.8M ef EFI (FAT-12/16/32)

(Первый раздел имеет тип «Пустой», вероятно, потому, что нет допустимого идентификатора типа раздела MBR для файловой системы ISO9660...)

Теперь можно даже монтировать оба раздела (читать -только во избежание повреждений )и проверять, что находится внутри каждого из них.

Вы можете заметить, что вывод dumpetидентифицирует начало загрузочного образа ESP как LBA #580, а fdiskуказывает, что он начинается с блока #2320. Это связано с тем, что оптический носитель ISO9660 использует размер блока 2048 байт, в то время как USB-носитель использует более распространенный размер блока 512 -байт.

1
27.01.2020, 23:40

Теги

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