Мне удалось решить эту проблему, но мне все еще интересно, есть ли лучшее и более простое решение.
В любом случае, если у вас есть плохие блоки в начале устройства и вы не можете записать живое изображение, вам следует создать два раздела:
Затем вы загружаете образ и проверяете смещение его первого раздела:
# parted /home/morfik/Desktop/debian-live-8.1.0-amd64-mate-desktop.iso
(parted) unit s
(parted) print
Model: (file)
Disk /home/morfik/Desktop/debian-live-8.1.0-amd64-mate-desktop.iso: 2015232s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 64s 2015231s 2015168s primary boot, hidden
Итак, это 64 сектора, что означает 64 * 512 = 32768 байтов.Теперь мы можем смонтировать этот образ:
# mount -o loop,offset=32768 /home/morfik/Desktop/debian-live-8.1.0-amd64-mate-desktop.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only
# ls -al /mnt
total 593K
dr-xr-xr-x 1 root root 2.0K 2015-06-06 16:09:57 ./
drwxr-xr-x 24 root root 4.0K 2015-06-08 20:54:43 ../
dr-xr-xr-x 1 root root 2.0K 2015-06-06 16:08:34 .disk/
dr-xr-xr-x 1 root root 2.0K 2015-06-06 15:59:10 dists/
dr-xr-xr-x 1 root root 2.0K 2015-06-06 16:09:41 install/
dr-xr-xr-x 1 root root 2.0K 2015-06-06 16:08:29 isolinux/
dr-xr-xr-x 1 root root 2.0K 2015-06-06 16:08:29 live/
dr-xr-xr-x 1 root root 2.0K 2015-06-06 15:59:00 pool/
dr-xr-xr-x 1 root root 2.0K 2015-06-06 16:09:37 tools/
-r--r--r-- 1 root root 133 2015-06-06 16:09:44 autorun.inf
lr-xr-xr-x 1 root root 1 2015-06-06 15:59:10 debian -> ./
-r--r--r-- 1 root root 177K 2015-06-06 16:09:44 g2ldr
-r--r--r-- 1 root root 8.0K 2015-06-06 16:09:44 g2ldr.mbr
-r--r--r-- 1 root root 28K 2015-06-06 16:09:57 md5sum.txt
-r--r--r-- 1 root root 360K 2015-06-06 16:09:44 setup.exe
-r--r--r-- 1 root root 228 2015-06-06 16:09:44 win32-loader.ini
У нас есть доступ к файлам, поэтому мы можем скопировать их во второй раздел предварительного диска:
# cp -a /mnt/* /media/morfik/good
Следующая команда жестко закодирует второй раздел в MBR, чтобы с него загрузиться:
printf '\x2' | cat /usr/lib/SYSLINUX/altmbr.bin - | dd bs=440 count=1 iflag=fullblock conv=notrunc of=/dev/sdb
Я использую файловую систему ext4 на втором разделе, поэтому мне нужно использовать extlinux, но в образе есть изолинукс. Мне не нужно удалять эту папку, вместо этого я могу изменить ее имя:
# mv isolinux extlinux
То же самое я должен сделать с файлом конфигурации внутри этой папки:
# mv isolinux.cfg extlinux.conf
Я не уверен, нужен ли этот шаг, но я все равно всегда копирую все файлы:
# cp /usr/lib/syslinux/modules/bios/* /media/morfik/good/extlinux/
Последнее, что нужно сделать, это установить VBR extlinux на второй раздел:
# extlinux -i /media/morfik/good/extlinux/
/media/morfik/good/extlinux/ is device /dev/sdb2
И это почти все. Я протестировал образ, он загружается, и живая система работает нормально. Это решение должно работать для всех видов живых изображений.
Не без внешней помощи, такой как:
/etc/sudoers
/etc/sudoers
Отметка времени /etc/sudoers
может быть слабым сигналом; если отметка времени тесно связана с вашим напоминанием, велика вероятность того, что оно было отредактировано для вашего доступа в то время, но также возможно, что у вас ранее был доступ, и случайное редактирование было для чего-то/кого-то еще.
/etc/sudoers
имеет очень старый штамп даты (явно не измененный ).
/etc/group
был изменен 6 часов назад. Разница между этим и /etc/group-
показывает, что моя учетная запись была добавлена.
Система якобы была сделана и готова для меня вчера, так что у меня есть ответ.
Спасибо всем.