Czy po skopiowaniu rozruchowego dysku USB na inny dysk USB zostanie utworzony duplikat rozruchowego napędu?

37

Myślałem, że to trochę głupie pytanie, ale wyszukiwanie w Google wydaje się wskazywać , że nie można nawet skopiować / wkleić danych z dysku rozruchowego na inny dysk USB? Ale nawet gdybyśmy mogli go skopiować, dlaczego miałby nie działać? (czyli tworzenie duplikatu dysku rozruchowego)

zar
źródło
2
Co rozumiesz przez „kopiuj / wklej”? Oczywiście musisz skopiować części, które sprawiają, że jest to dysk rozruchowy (taki jak bootloader itp.), Ale nie ma powodu, aby to nie działało.
Jörg W Mittag,

Odpowiedzi:

56

Po prostu skopiowanie plików nie spowoduje utworzenia dysku rozruchowego. Nie tylko pliki na dysku flash USB sprawiają, że można go uruchomić, ale także konfiguracja tablicy partycji , metadane dotyczące organizacji zawartości dysku, która informuje komputer, czy można go uruchomić i czy jest to MBR, czy GPT .

Jak zauważono na cyberciti.biz :

Każdy dysk i partycja ma na sobie jakiś podpis i ciąg metadanych / magii. Metadane używane przez system operacyjny do konfigurowania dysków lub dołączania sterowników i montowania dysków w systemie.

Możesz jednak sklonować dysk flash za pomocą wielu narzędzi, takich jak dd , EaseUS Todo Backup , a także doskonałe i otwarte oprogramowanie Clonezilla i Rufus . (Podziękowania dla Alexa za przypomnienia o dd i Rufusie).

Istnieją nawet urządzenia elektroniczne, które automatycznie replikują dyski flash .

K7AAY
źródło
15
Właściwie nawet nie potrzebujesz dd: prosty cpwykona pracę - pamiętaj, aby użyć go w węźle urządzenia zamiast zawartości systemu plików.
Ruslan
To zaskakujące. Albo może nie. Ale przynajmniej dla mnie.
Jörg W Mittag,
1
„cat <source> destination” będzie działać poprawnie, zakładając, że celem nie jest strzelec niż źródło.
ysdx
@JoL Nie widziałeś (już usuniętego) komentarza Jörga. Mój był odpowiedzią na jego twierdzenie, cpże po prostu skopiuje węzeł urządzenia. Aby zapobiec nieporozumieniom, usunąłem też swój komentarz.
Ruslan
21

Kopiowanie kopiuje tylko pliki z sformatowanych partycji. Nie będziesz w stanie wykonać specjalnych czynności niezbędnych do uruchomienia systemu, takich jak ustawianie flag rozruchowych, pisanie modułu ładującego, a czasem nawet kopiowanie normalnych plików w odpowiednie miejsce (czytaj: sektor) na partycji i ustawianie atrybutów plików / permissions. O ile nie masz szczęścia, że ​​te rzeczy są dostępne, z powodu wcześniejszego utworzenia dysku rozruchowego, narzędzia do formatowania, które zapisuje moduł ładujący w MBR itp., Musisz wykonać więcej kroków, aby dysk rozruchowy


W szczególności podczas uruchamiania w trybie BIOS , BIOS szuka pierwszego sektora (MBR), aby sprawdzić, czy istnieje poprawna sygnatura rozruchowa 0xAA55 . Jeśli tak, to ładuje ten sektor i przekazuje kontrolę do modułu ładującego w MBR. MBR opisuje konfigurację partycji, dlatego nie może leżeć wewnątrz partycji i nie jest tym, co można skopiować za pomocą zwykłych narzędzi.

Poza tym, ponieważ MBR jest zbyt mały, aby był użyteczny, większość nowoczesnych programów ładujących dzieli proces rozruchu na wiele etapów , a kod rozruchowy w MBR ładuje kolejny etap. Dalsze etapy wewnętrzne są ponownie często umieszczane w regionach poza partycjami . Niektórzy mogą umieścić go w EBR , ale grub zwykle umieszcza swój drugi etap w pustym obszarze między pierwszą partycją a MBR, zwaną luką post-MBR. Dlatego jeśli ktoś nie wyrówna poprawnie partycji, Grub nie ma miejsca na umieszczenie kodu rozruchowego, co powoduje błąd osadzania

Wiele programów ładujących, takich jak LILO lub stare programy ładujące Windows / DOS, także zapisuje kod stały w MBR, na przykład pozycję następnego etapu lub plików systemowych. Nie działają, odczytując dane partycji, ale zamiast tego czytają niektóre sektory zakodowane na stałe, ponieważ zajmie to zbyt dużo kodu, aby przeanalizować system plików, który bardzo trudno jest wcisnąć w małe przestrzenie, takie jak luka MBR lub post-MBR. Nawet grub obsługuje takie twarde kodowanie . Oznacza to, że niektóre pliki systemowe muszą znajdować się w dokładnej lokalizacji , sektor po sektorze, czego nie można osiągnąć również przy użyciu zwykłej kopii. Właśnie dlatego widzisz „nieprzenoszalne pliki systemowe” podczas uruchamiania defragmentatora systemu Windows lub zmniejszania systemów plików, co czasami nie jest poprawne, ponieważ po prostu Windows boi się przenieść te pliki, mimo że nowoczesne programy ładujące są znacznie mądrzejsze i nie dbają o takie rzeczy.

W końcu musisz także ustawić partycję rozruchową jako aktywną, aby program ładujący wiedział, co uruchomić. Musi to zostać wykonane za pomocą narzędzia do partycjonowania lub ręcznej edycji szesnastkowej, ponieważ jest ono również umieszczane poza obszarem partycji.


W UEFI jest o wiele łatwiej. Wie o systemach plików FAT (i jeszcze więcej systemów plików w niestandardowych implementacjach), dlatego pliki rozruchowe są przechowywane na partycji systemowej EFI, AKA ESP . UEFI ładuje aplikacje * .efi do ESP, które następnie ładują systemy operacyjne.

Oprogramowanie układowe UEFI obsługuje uruchamianie z wymiennych urządzeń pamięci masowej, takich jak dyski flash USB. W tym celu urządzenie wymienne musi zostać sformatowane za pomocą systemu plików FAT12, FAT16 lub FAT32, podczas gdy moduł ładujący musi być przechowywany zgodnie ze standardową hierarchią plików ESP lub przez podanie pełnej ścieżki modułu ładującego do systemu menedżer rozruchu.

Zasadniczo wystarczy skopiować pliki * .efi do ESP i umieścić pliki systemowe w odpowiednim folderze. Jednak nadal istnieje mały problem, ponieważ partycja FAT zawierająca plik * .efi musi być oznaczona jako ESP w tabeli MBR lub GPT poza partycjami, czego nie można zrobić, kopiując jak wyżej. W szczególności należy zmienić typ partycji z 0Ch / 0Bh / cokolwiek na EFh w MBR i C12A7328-F81F-11D2-BA4B-00A0C93EC93B w GPT, ponieważ ESP nie jest tak naprawdę FAT12 / 16/32, ale niezależnym systemem plików opartym na rodzina systemów plików FAT


I wciąż istnieje wiele innych schematów partycjonowania, takich jak etykieta dysku BSD lub APM, które należy zmodyfikować inaczej, aby uruchomić. Albo nośniki USB mogły zostać sformatowane bez tablicy partycji (AFAIK Windows domyślnie to robi), dlatego też będzie się ładować inaczej. Ale obowiązuje ten sam limit: musisz zmodyfikować obszary niepartycjonowane

phuclv
źródło
1
To jest poprawna odpowiedź.
Margaret Bloom
Jest to najdokładniejsza odpowiedź, tak, ale nie sądzę, aby była bardziej poprawna niż odpowiedź zaakceptowana, na którą IMO w prosty sposób odpowiada na postawione pytanie.
Ian Kemp,
@IanKemp problem z zaakceptowaną odpowiedzią nie polega na tym, że jest prosty (to dobrze), ale co najwyżej technicznie niejednoznaczny :)
Margaret Bloom,
Jeśli oznaczysz wolumin pamięci USB jako aktywny - używając programu narzędziowego Windows DiskDd „diskpart” lub dowolnego menedżera partycji innej firmy - kopiując zawartość obrazu systemu Windows Vista / 7/8/10 ISO, pamięć USB staje się dyskiem rozruchowym systemu Windows; podczas uruchamiania nie dzieje się żadna rzecz związana z ramdrive ani dalsze montowanie. Oczywiście po oznaczeniu pendrive'a jako aktywnego wystarczy jedynie mały plik obrazu rozruchowego (bootmgr i bootmgr.efi w systemie Windows) na patyku; nie potrzeba skomplikowanych narzędzi. Spodziewałbym się prostej procedury wiersza poleceń w systemie Linux, znacznie łatwiejszej niż Windows.
Red.Wave
3

Tradycyjnie rozruch z BIOS-u wymagał specjalnego niewidocznego znacznika. Oto kilka przykładów :

  • Jeśli MBR podzielony na partycje („dysk twardy”), to w tablicy partycji
  • Jeśli dyskietka / superfloppy („dysk ZIP”), zasadniczo cały dysk sformatowany bez tablicy partycji, to w ciągu pierwszych kilku bajtów
  • Jeśli CD, to El Torito

W takich przypadkach nie można po prostu skopiować plików. Powstały napęd będzie niemożliwy do uruchomienia, ponieważ brakuje w nim specjalnych znaczników.

Jednak rozruch UEFI jest specjalny, mądrzejszy i konkretnie rozwiązuje te problemy. Jak zawsze polecam przeczytanie tego postu na blogu, aby uzyskać uproszczony starter do UEFI. Zwróć szczególną uwagę na sekcję awaryjnego rozruchu. Jest to również omówione tutaj nieco bardziej szczegółowo .

Wszystko, czego potrzebujesz, aby to zadziałało, to plik w określonej ścieżce na partycji, który będzie wyszukiwać oprogramowanie układowe. Aby uzyskać optymalną zgodność 1 , tak, powinna to być partycja w formacie FAT32 oznaczona jako partycja systemowa EFI na dysku z partycjami GPT. Jednak większość oprogramowania układowego przeszukuje również (pojedyncze) partycje na dyskach podzielonych na MBR i niepartycjonowanych (superfloppy).

Oznacza to, że wszystko, czego naprawdę potrzebujesz do rozruchu UEFI, to pojedyncza partycja sformatowana w systemie FAT32 1, zawierająca rezerwowy wpis rozruchu. W architekturze x86_64 oznacza to, że potrzebujesz tylko \EFI\BOOT\BOOTx64.EFIpliku. Możesz po prostu skopiować z jednego dysku flash na inny, w tym ten plik, i wszystko powinno działać.


1 FAT32 i GPT są wymagane przez standard. MBR i superfloppy nie są, AFAIK, ale ich obsługa jest dość uniwersalna wśród komputerów stacjonarnych. Laptop jest trochę bardziej ezoteryczny; tablety to losowanie, a Mac EFI jest wyjątkowy.

2 Standard UEFI wymaga obsługi FAT32. Niektóre oprogramowanie układowe może również obsługiwać NTFS (choć nie jest to gwarantowane), a faktycznie można osadzić sterownik NTFS w ESP FAT32.

Kok
źródło
0

To zależy od tego, co rozumiesz przez „kopiowanie”.

Skopiować i wkleić w GUI systemu operacyjnego? Nie, to nie zadziała - niektóre pliki potrzebne do rozruchowego USB będą uważane za „ukryte” / niewidoczne i nie zostaną skopiowane.

Istnieją rodzaje kopii, które będą działać. Jest to często nazywane „obrazowaniem” nowego USB w celu odróżnienia od „kopiowania” jego zawartości. Najczęstszym sposobem na to jest narzędzie wiersza polecenia, ale opcje graficzne są dostępne, jeśli są potrzebne.

To powinno być wystarczające tło, aby rozpocząć wyszukiwanie!

Szafir
źródło