Загрузчик хранит initrd в местоположение в памяти и говорит ядру адрес памяти изображения initrd. Самые современные системы Linux используют initramfs схему с помощью dracut, который является на самом деле архивом cpio (а не образ диска), который распакован в tmpfs файловую систему, созданную ядром вскоре после выполнения.
можно использовать split
для разделения файла на несколько частей, и это имеет опцию только разделить в строках:
$ ls
bigfile
$ split -n l/2 bigfile
$ ls
bigfile xaa xab
это действительно только имеет смысл, если файл может быть разделен и организован в строках, который только верен для текстовых файлов.
с этим можно легко создать собственный делить-пополам-инструмент, например, что-то как следующее:
#!/bin/sh
TESTPROG=$1
DATA=$2
usage() {
echo "usage: $0 <testprog> <datafile>"
echo " will bisect <datafile> to the single line where <testprog> exits with '0'"
exit 1
}
if [ ! -x "${TESTPROG}" ]; then usage; fi
if [ ! -e "${DATA}" ] ; then usage; fi
BISECTDIR=$(mktemp -d)
splitfiles() {
split -e -n l/2 $1 ${BISECTDIR}/$2bisect_
echo ${BISECTDIR}/$2bisect_*
}
cleanup() {
rm -rf "${BISECTDIR}"
exit 0
}
i=1
while [ $(head -2 "${DATA}" | wc -l) -gt 1 ]; do
echo "testing: ${DATA} $(head -2 "${DATA}" | wc -l)" 1>&2
files=$(splitfiles ${DATA} ${i})
count=$(echo $files | awk '{print NF}')
if [ ${count} -lt 2 ]; then
cat $files
cleanup
fi
DATA=""
for f in $files; do
if ${TESTPROG} "${f}" 1>/dev/null 2>/dev/null; then
DATA="${f}"
break
fi
done
i=$(( i+1 ))
done
cleanup
протест: это поместит все разделенные пополам данные в /tmp
(изменитесь, определение BISECTDIR - Вы, не любят это); также это будет только очистка разделенные пополам файлы данных в конце. таким образом, Вам, возможно, понадобилось бы много пространства...