Это должно сработать:
grep -rlZ "wrongtext" ~/Library/Calendars | xargs -0 sed -i '' 's/wrongtext/righttext/g'
Я добавил параметр -Z
в grep
, чтобы добавить ноль байт вместо новой строки после каждого имени файла. Таким образом, команда работает также со странными именами файлов. xargs
затем считывает ввод, разделенный нулевым байтом -0
, и вызывает команду sed
.
Сейчас существует более простой подход, который, вероятно, будет хорошо работать как с RHEL/CentOS, так и с Fedora ISO --, поскольку он является частью проекта lorax
, который RHEL и Fedora используют для создания своих ISO-образов в первую очередь, мкксисо . Я тестировал его только на Fedora 32.
При тестировании я обнаружил ошибку; если исходный ISO загружается как на UEFI, так и на Mac, новый ISO загружается только на Mac и в устаревших системах BIOS. Исправлен в этот PR , но он еще не выпущен, но mkksiso
— это простой скрипт Python, который вы можете просто загрузить отдельно, если остальная часть lorax
установлена.
Внедрение кикстарта теперь так же просто, как:
sudo dnf install lorax
wget -cN https://raw.githubusercontent.com/weldr/lorax/master/src/sbin/mkksiso
chmod +x mkksiso
sudo./mkksiso -V MyNewVolumeID path/to/kickstart path/to/orig.iso path/to/
см. напр.https://github.com/michel-slm/luks-kickstarts/blob/master/rebuild.sh
Основываясь на ответах Томаса и Кевина , мне удалось получить рабочую процедуру, основанную на xorriso
, которую можно получить в EPEL. Мои цели были похожи на цели Кевина :
Успешно протестировано с RHEL 7.5 и 7.6.
xorriso
из EPEL. $ISO_SRC
. ks.cfg
)и сценарии в $SCRIPTS
. Извлечь файлы, которые необходимо настроить, из ISO в$FILES
:
isolinux/isolinux.cfg
EFI/BOOT/grub.cfg
images/efiboot.img
Измените файлы конфигурации загрузки *.cfg
в $FILES
:
Примечание :Я не изменяю метку диска (или идентификатор тома )намеренно. Он чувствителен к пробелам (потенциально любым специальным символам ), и мне было проще использовать его повторно вместо замены.
добавить параметр кикстарта в команду загрузки
'(.*)(hd:LABEL=\S+)(.*)'
→'\1\2 inst.ks=\2:/$SCRIPTS/ks.cfg\3'
установить меню загрузки по умолчанию для устаревшей загрузки вisolinux.cfg
'^\s*menu default\s*\n'
→''
установить меню загрузки по умолчанию для загрузки UEFI вgrub.cfg
'set default=.*'
→'set default="0"'
Изменить загрузочный образ UEFI images/efiboot.img
в$FILES
:
$FILES/EFI/BOOT/grub.cfg
Создайте собственное изображение:
xorriso \
-indev "$ISO_SRC" \
-map "$SCRIPTS" /"$SCRIPTS" \
-map "$FILES" / \
-boot_image any replay \
-outdev "$ISO_DST"
Команда копирует содержимое исходного ISO-образа $ISO_SRC
, объединяет содержимое локальных каталогов и воспроизводит все параметры загрузки из исходного образа в целевой образ $ISO_DST
. Дальнейшие действия не требуются.
geniso
Мне было трудно следовать geniso
методу, описанному Кевином . Мне удалось создать выходной образ ISO, однако geniso
жаловался на невозможность изменить образ isolinux.bin
, поэтому мне пришлось извлечь и его. В процедуре об этом не сказано.
Я столкнулся со стеной при включении загрузки UEFI с помощью isohybrid
. Он вернул ошибку, я не нашел обходного пути для:
$ isohybrid --uefi rhel-custom.iso
isohybrid: rhel-custom.iso: boot loader does not have an isolinux.bin hybrid
signature. Note that isolinux-debug.bin does not support hybrid booting
Я создал роль Ansible, которая выполняет задачу:build _boot _iso .