Я пробовал
dd if=/dev/sdBIG of=/dev/sdSMALL bs=64K conv=noerror,sync
Но система после копирования и загрузки ругается на испорченный второй раздел и требует чтобы я все починил.
dd копирует весь диск побайтово и естественно будет ругаться на то что не может уместить 128G в 16G.
dd просто тупо перенёс начальные 16G из 128гигового диска(sdBIG) в 16G(sdSMALL), поэтому у вас не только второй раздел будет повреждён(я так понял первый раздел у вас меньше 16G) но и данные на нём так же будут повреждены.
Если итоговый раздел меньше чем исходный то вместо dd лучше использовать rsync.
В начале на sdSMALL создаёте нужные разделы с учётом того чтобы туда уместились все переносимые данные. Далее можно из живой системы или примонтировав нужный раздел перенести данные:
# rsync -aAXv --exclude={...} /откуда /куда
--exclude - папки которые исключаем при переносе
Как я понимаю первый раздел у вас корень, если так, то перенос из живой системы будет выглядеть примерно так:
# rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /куда
и на последок незабываем сделать корневой (первый) раздел загрузочным и при необходимости подправить загрузчик и fstab