Это уже превращается в какой-то холивар, а я не хочу спорить. Я просто перед тем, как пришел к своему окончательному методу, исследовал кучу других, в том числе и загрузку из ISO, т.к. это было конечно же проще всего.
И основная проблема тут в отсутствии стандартной связи между загрузчиком и ядром. Если в DOS можно перехватить функции BIOS, эмулировать виртуальный диск через них и DOS при этом прекрасно работает, то для Linux решение проблемы взаимодействия загрузчика с ядром уж очень костыльное. Надо сначала смонтировать виртуальный диск для ISO. Но это просто чтобы выцепить ядро и initrd. И дальше он уже не нужен, т.к. ядро его все равно не увидит. А дальше начинаются танцы с бубном, чтобы сказать как то ядру, что оно должно грузится из ISO. Зачем все это? И везде это все конечно же реализовано по разному. У всех ядер разные параметры командной строки. Они могут быть еще и плохо (или вообще никак) задокументированы. А где-то может быть вообще не реализовано. Стандартный же метод заключается в том, чтобы просто найти образ файловой системы на том же диске, с которого мы грузимся. Тут тоже есть место для костылей, т.к. обычно для этого есть стандартное место, но поменять путь к этому образу можно в любой системе и тут я никаких проблем никогда не встречал.
В любом случае спасибо за обновление propagator. Он был уж очень устаревшим по сравнению с Debian-подобными системами.