В моей практике "ошибка отсутствует HAL.DLL" означала, что в boot.ini, который был создан еще до первой перезагрузки было указано default=multi(0)disk(0)rdisk(0)partition(1)\windows
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\windows=WinXP /execute /fastdetect
Таким образом Windows готов запускаться, но первым, а я при этом загружался с флэшки, т.е. диск с WinXP уже был не (0), а (1). В таком случае нужно перегружаться БЕЗ ФЛЭШКИ, ведь Вы уже прошли стадию копирования файлов?
Если же Вы к этому еще и экспериментируете с разделами, то может быть в boot.ini нужно просто подправить номер диска и партиции, чтобы они соответствовали действительности. Меня для этого вполне устраивает WinPE_RusLiveMini.
PS. Нужно ли напоминать, что Windows умеет грузиться только с первого ( т.е. (hd0) ) винта и для загрузки не с первого необходимо пермапить винты? Например.
map (hd1) (hd0)
map (hd0) (hd1)
map --rehook