خب قبل از اینکه شروع کنم یک توضیحی بدم و بگم که آرچ ایزو چی هستش.

آرچ ایزو اسکریپتی هستش که توزیع آرچ باهاش از یک پروفایل بیلد میشه، قابلیت بیلد آرچ رو در قالب یک ایزو، تارفایل و حتی ایمیج هم داره.

مشکل ما چی بود؟

خب ما توی پارچ از این اسکریپت استفاده می‌کردیم، این اسکریپت بعد از بیلد یک فانکشنی داشت که به فایل os-release که برای نشون دادن رلیز توزیع و توضیحات توزیع هست دوتا خط تحت عنوان image_id و image_version رو اضافه می‌کرد که به شکل زیر بودن:

IMAGE_ID=Parchlinux Plasma
IMAGE_VERSION=2024.07.31

این عملش باعث می‌شد تا کاربر موقعی که توزیع رو آپدیت می‌کنه، یا حتی می‌خواد کرنل جدید نصب کنه همچین خطایی رو توی پایانه ببینه:

error: plasma command not found

این خطا همینطور باعث می‌شد تا پروسه نصب systemd-boot با خطا مواجه بشه و باعث بشه که پارچ رو با استفاده از سیستم‌دی بوت در محیط زنده نشه نصب کرد.

مشکل یابی و رفع

بعد از اندکی جست و جو و سورس‌خوانی به این نتیجه رسیدم که کل این مشکل مبارک از این فانکشن توی اسکریپت آرچ ایزو میاد:

    _os_release="$(realpath -- "${pacstrap_dir}/etc/os-release")"
    if [[ ! -e "${pacstrap_dir}/etc/os-release" && -e "${pacstrap_dir}/usr/lib/os-release" ]]; then
        _os_release="$(realpath -- "${pacstrap_dir}/usr/lib/os-release")"
    fi
    if [[ "${_os_release}" != "${pacstrap_dir}"* ]]; then
        _msg_warning "os-release file '${_os_release}' is outside of valid path."
    else
        [[ ! -e "${_os_release}" ]] || sed -i '/^IMAGE_ID=/d;/^IMAGE_VERSION=/d' "${_os_release}"
        printf 'IMAGE_ID=%s\nIMAGE_VERSION=%s\n' "${iso_name}" "${iso_version}" >>"${_os_release}"
    fi

که مجبور شدم از آرچ ایزو یک فورک بگیرم و این فانکشن رو حذفش کنم.

می‌تونید ویدئو کاملش رو از یوتوب یا پیرتوبم ببینید.