Для старых ядер надо было указывать системный раздел параметром загрузки root (например root=/dev/sda1 или root=/dev/ram). При full установке Puppy загружался намного быстрее без initrd.gz, строка initrd в menu.lst просто удалялась. Указанный раздел сразу монтировался в корень как блочное устройство. С современными ядрами такой фокус не проходит, обязателен initrd, который загружается в RAM, получается initramfs. Отсюда делаю вывод - pivot_root устарел.
А вообще всё это, о чём мы спорим, "мышиная возня". Любой грамотный программист на коленке напишет скрипт инициализации. Не верите? Спросите у Гугла.