- Question: Q: Не удается клонировать (восстановить из..) системный раздел с APSF с помощью дисковой утилиты
- Question: Q: OSStatus Error 22
- All replies
- Disk Utility fails with OSStatus error 22 during cloning/recovery operation
- Background:
- The Problem:
- 1 Answer 1
- Как преобразовать код iPhone OSStatus во что-нибудь полезное?
- Как преобразовать документ Word в PDF
Question: Q: Не удается клонировать (восстановить из..) системный раздел с APSF с помощью дисковой утилиты
(в заголовке ошибка, APFS, конечно же)
Длительное гугление, в том числе в яндексе, не дало вообще ни единого упоминания о подобной проблеме, потому прошу помочь мне здесь. Итак
Внутренний SSD MacBook Pro в GUID разделенный на два раздела с APFS в разных контейнерах, 256 гб под систему, остальное под данные.
Надо:
Скопировать системный раздел на внешний носитель аналогичного размера (256 гб) с помощью дисковой утилиты (восстановить из..), так, что б потом аналогичным образом, с помощью дисковой утилиты (запущенной, например, с установочной флешки), можно было восстановить чистую систему обратно если с ней что-то случится, к примеру.
(пожалуйста, не пишите здесь о Time Machine, мне в данной ситуации она не удобна)
Пока все было отформатированно в HFS+ – проблем не было никаких. Неоднократно клонировал и восстанавливал обратно таким образом систему, все шикарно работало. Но вот переехал на APFS, и понеслось..
С APFS в начале процесса клонирования (восстановления из раздела) все вроде бы протекает как обычно — сначала, собственно, само восстановление, потом после середины, проверка.
Но в конце процесса получаю следующую ошибку:
Обратному преобразователю APFS не удалось выполнить обратное преобразование тома – Неверный аргумент
Не удалось завершить операцию. (OSStatus, ошибка 22)
После закрытия окна с ошибкой (и даже переподключения носителя) в дисковой утилите отображается только носитель с пустым контейнером под APFS
• Предварительно форматировать целевой носитель со схемой разделов GUID в: ExFat, HFS+, и, собственно, APFS.
Кстати, в случае с предварительным APFS еще несколько моментов:
– во первых не пересоздается раздел (ну оно и понятно, ибо аналогичная фс), и соответственно имя целевого раздела на время восстановления остается прежним, в отличии от того, что на самом первом скрине (ASRNewVolume_28315)
– во вторых, после закрытия окна ошибки диск таки появляется доступным в Finder’е, и даже с таким же именем как у раздела-источника, но со странным содержимым — одни файл размером с раздел-источник и с именем ContainerToInvert.
Догадываюсь, что это как раз то, что по какой-то причине и не удалось преобразовать этому самому преобразователю APFS
• На самом носителе пробовал создать dmg образ, и восстановить системный раздел в него (очень странный способ от отчаяния, с еще более странными ошибками).
• Во всех случаях нажимал на «восстановить (из)» именно на разделе целевого носителя (когда пробовал форматировать его в APFS, то нажимал еще и на контейнере раздела), а не на самом носителе, т.к. тогда предлагает восстановить тоже со всего внутреннего носителя, а нужен только системный раздел.
Насколько я понимаю восстановление раздела из APFS (а возможно и из других фс) помимо самого восстановления и проверки, происходит с целой кучей дополнительных команд из графической оболочки дисковой утилиты, среди которых, судя по тексту ошибки, и некое «обратное преобразование APFS», о сути которого я понятия не имею. Если кто знает, какие именно даются команды в вышеуказанном процессе, опишите хотя бы их, возможно это натолкнет на правильное решение, а возможно их можно просто выполнить в терминале, изменив некоторые параметры (надеюсь сталкиваться с терминалом как можно меньше, ибо хоть и более-менее все понимаю, но не люблю с ним возиться)
Источник
Question: Q: OSStatus Error 22
I noticed recently that my Apple Airport Time Capsule stopped backing up my files. I tried to reconnect using time machine with no luck. Also, can’t access the additional drive connected to my time capsule. additionally, my air-print capabilities won’t work through the time capsule network but does work if I configure access through my IP provider network. Lastly, I disconnected my ethernet cable just to make sure that wasn’t the problem, ensured that my computer was connected through my time capsule wifi and tried to reconnect. No luck! Getting message «OSStatus error 22». Can anyone advise?
AirPort Time Capsule-OTHER, OS X El Capitan (10.11.4)
Posted on May 6, 2016 5:38 AM
All replies
Loading page content
Page content loaded
I think this is just a network failure.
Pondini has most of the common errors covered.. even though it is fairly old and a few OS X editions out of date.
The failure is not unusual on El Capo.. not at all.. the best thing to do is a full factory reset of the TC and start over.
Start from a factory reset. No files are lost on the hard disk doing this.
Factory reset universal
Power off the TC.. ie pull the power cord or power off at the wall.. wait 10sec.. hold in the reset button.. be gentle.. power on again still holding in reset.. and keep holding it in for another 10sec. You may need some help as it is hard to both hold in reset and apply power. It will show success by rapidly blinking the front led. Release the reset.. and wait a couple of min for the TC to reset and come back with factory settings. If the front LED doesn’t blink rapidly you missed it and simply try again. The reset is fairly fragile in these.. press it so you feel it just click and no more.. I have seen people bend the lever or even break it. I use a toothpick as tool.
Источник
Disk Utility fails with OSStatus error 22 during cloning/recovery operation
Background:
I need to upgrade the drive in my Macbook Pro. Following are some of its specs:
- MacBook Pro (17-inch, Late 2011)
- OS: High Sierra, v 10.13.6
- HDD: 500 GB SSD, w/ Macintosh HD & BOOTCAMP partitions
The Problem:
I need to upgrade the SSD to 1TB. I can accomplish this by cloning the 500GB drive to the 1TB drive. I will use Disk Utility from the Recovery HD volume to do this since both source and destination volumes in the cloning process will need to be unmounted.
I did this previously when upgrading the original mechanical HDD to SSD, but it was HFS-to-HFS. I quickly reviewed this article to verify nothing had changed. Finding no warnings, cautions or surprises, I began the process:
- boot with command — R to get into the Recovery HD volume
- start Disk Utility
- select Restore option
- designate source (500GB) & destination (1TB) drives
- Go!
This ran overnight (many hours). But instead of seeing a «Success» message this morning, I saw an error:
Research on this led me here. I initially concluded Apple had simply not upgraded the Recovery volume or the apps in it, but this proved not to be the case. Here’s what I’ve found:
- The upgrade to High Sierra converted the ‘primary’ volume to APFS, but left the Recovery volume as HFS.
- The version of Disk Utility ( DU ) in the Recovery volume of my MBP is the same version as DU in my ‘primary’ High Sierra volume — it was apparently upgraded concurrently with the High Sierra upgrade.
- Whatever the version of DU in the Recovery volume, the failure I experienced seems rather chronic.
The source disk is a Crucial SSD, a few years old & no known issues; the destination disk as also a Crucial SSD — about a week old. Nevertheless, I have now checked all volumes on both disks with First Aid in DU , and all are reported as «OK».
Based on all the above, I’ve concluded that my Recovery volume is unreliable and not fit for purpose.
I’ve found a 3rd party alternative solution, Carbon Copy Cloner. It has now successfully cloned the 500GB drive, and restored that to the new 1TB drive — I am «whole» again 🙂 My questions (at last) are:
Can the Recovery HD volume be upgraded — perhaps by installing a later version of Disk Utility from Mojave or Catalina, or a 3rd party app such as CCC?
Could the Recovery HD volume be converted from HFS to APFS and restored/installed on the internal SSD?
Can a Recovery HD volume be created on a thumb drive which could be made bootable?
1 Answer 1
I came here because I was looking for solutions about the error you quote, but instead your actual questions at the end of your text are about something else. It would be nice if you’d change your question title accordingly.
To answer your questions about recovery partitions:
If you install, even temporarily, a newer macOS, you should get a newer recovery partition along with it. I, for instance, have a separate 10.14.6 recovery system on one of my Macs (however, I wonder how that came to be, as there’s also a Recovery APFS volume insider the container where the Mojave system resides, so why would there also be a HFS+ partition with one?). Be aware that if you install a newer system on your current system disk, it might convert your current system volume from HFS to APFS. To prevent that, install it to a separate partition (though even then I’m not sure that Apple won’t simply convert all volumes on the disk to APFS), or best install it to an external disk.
Converting it into APFS is not needed and inadvisible — it would not gain you anything. Basically, the Recovery system is just a small EFI-based loader that’ll then load the BaseSystem image into a RAM disk and load the Recovery system from there.
I have copied entire HFS+-formatted recovery partitions to external USB disks, so I assume you could as well copy them onto a USB stick, as long as you format it with a GUID partition scheme first. The copy operation may be tricky, though — ideally, Disk Utility should let you do that with its Restore command — but it turns that that the new Disk Utility won’t even show Recovery partitions any more, so that’s not an option. The old Disk Utility from pre-10.11 systems may be able to, still.
Here’s what still works in my testing on Mojave with Terminal commands to copy a HFS+ formatted Recovery partition to an USB thumb drive (with GUID partition scheme):
Where diskVsW and diskXsY are the identifiers for the source and dest Recovery partitions that you’ll find with diskutil list .
You could also use hdiutil to create an image file of another Mac’s recovery partition and then later restore that with Disk Utility.
Also keep in mind that modern Macs can always load a recovery system from the internet, so there’s no need to keep one around for them.
Источник
Как преобразовать код iPhone OSStatus во что-нибудь полезное?
Как преобразовать документ Word в PDF
Мне более чем надоел этот iPhone SDK и документация к нему .
Звоню в AudioConverterNew
в документации в разделе «Возвраты»: там написано «возвращает код состояния» . действительно .
до сих пор, играя с параметрами, я смог получить только две разные ошибки, ни одна из которых не указана в нижней части справочника Audio Converter.
это mrep и? tmf (преобразование OSStatus в массив char), но конкретные коды на самом деле не важны.
насколько я могу судить, случайные коды ошибок определены в случайных файлах, поэтому вы не можете просто искать в одном файле, я не могу найти справочный документ, который просто позволяет вам искать код ошибки, чтобы получить дополнительную информацию, и из что я могу сказать, в OS X вы можете использовать GetMacOSStatusErrorString (), чтобы преобразовать ошибку во что-то полезное, но нет эквивалента для iPhone?
любая помощь будет принята с благодарностью.
хорошо, так что приведение их дает их в обратном порядке (что-то, что я проверил на «mrep», но не было в любом случае), fmt? находится в списке API Audio Converter и довольно понятен, если немного расплывчато, но достаточно справедливо, все же «perm» нет (хотя это может быть как-то связано с симулятором, не поддерживающим декодирование aac) и мой общий вопрос все еще в силе.
- Документы Apple
- 1 @matt Вы быстро нашли решение? Отличный вопрос кстати
Некоторые OSStatus представляют собой четырехзначные коды, поэтому вы можете использовать (извлеченный из образца кода iPhone SDK » CAXException.h ‘)
(См. IOS / C: Преобразование «целого числа» в четырехсимвольную строку, чтобы узнать о некоторых других способах преобразования fourcc в строку, включая Swift)
NSOSStatusErrorDomain NSError может декодировать некоторые ошибки ОС. См. Ответ @ tomk.
Если вам не нужно декодировать номер в программе для пользователя, вы можете использовать macerror сценарий, чтобы вручную узнать значение, как указано в ответе @lros. Список поддерживаемых OSStatus можно найти в его исходном коде в /System/Library/Perl/Extras/5.18/Mac/Errors.pm .
Также существует онлайн-сервис http://osstatus.com/, собирающий ошибки из всех общедоступных фреймворков. Они все еще не совсем завершены, например. отображение на -12792 упомянутый в комментарии отсутствует. Возможно это код из частного фреймворка.
- 1 Это генерирует предупреждение компилятора: «Аргумент вызова функции — неинициализированное значение» в условной строке if
- Вам не кажется, что если бы разработчик, который изобрел OSStatus, хотел, чтобы это была строка, он бы объявил ее как единицу, а не как целое число со знаком? Вы не можете или, по крайней мере, не можете «преобразовать» целое число в строку.
- 6 @tomk: (1) Вы понимаете, что этот фрагмент кода взят из официальных примеров кодов Apple? (2) Как вы могли быть уверены, что разработчик, придумавший OSStatus, не хочет использовать 4 байта как компактный способ хранения 4 символов? я уверен этот верно, потому что OSType происходит от Mac OS.
- Должен признаться, я нашел его только потом. Но как вы писали, «. каких-то OSStatus четыре . ». «mrep» и «? tmf» действительно не похожи на правильные коды ошибок. Смотрите мой ответ на общественный функция для преобразования OSStatus в строку ошибки.
- @tomk: Это потому, что вы читаете их задом наперед. Они есть perm (пермь— ошибка деления) и fmt? (неправильно ж-или-м-ат). У вашего общедоступного метода отображается «ошибка разрешения» и «неправильный формат» или просто «операция не может быть завершена»? Кстати, метод в этом ответе тоже общедоступен, просто он не выполняется в одной строке.
OSStatus — это целое число со знаком. Вы не можете преобразовать или «преобразовать» его в строку. Вы можете преобразовать его в NSError следующим образом:
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:osStatus userInfo:nil];
- 6 Вопрос старый, но я бы сказал, что это правильный ответ. Затем вы можете получить описательную строку, например 2012-11-05 22:28:52.338 foo[7300:707] Error Domain=NSOSStatusErrorDomain Code=-43 ‘The operation couldn’t be completed. (OSStatus error -43.)’ (fnfErr: File not found)
- 5 Таким образом вы не сможете получить ничего, кроме «Операция не может быть завершена» для многих ошибок. Комбинация этого ответа и принятого отлично работает.
- быстро он не дает ничего значимого для кода -12792, я также пробовал для некоторых других кодов, но ничего ..
- 1 Этот ответ был полезен, но основная проблема — плохая документация об ошибках — все еще остается проблемой. Попадание на поисковый сайт OSStatus помогло, но со стороны Apple это ошибка.
- «Вы не можете преобразовать или« преобразовать »его в строку» . вы знаете, что многие форматы файлов Apple и API-интерфейсы используют «4CC», которые представляют собой последовательности из 4 символов ASCII, преобразованных в целое число путем объединения их в большие числа. порядок байтов? (4CC также используются во множестве форматов мультимедийных файлов и, следовательно, проникли в библиотеки мультимедиа, отличные от Apple OS, например, Windows DirectShow использует их для идентификации кодеков). Это означает, что преобразование их в строки для отображения на самом деле очень разумно с ними делать.
Недавно я столкнулся с другим подходом: командой macerror. Распечатайте значение OSStatus как целое число со знаком. Затем в окне терминала (на вашем Mac, а не на iDevice!) Введите, например, macerror -50. Он ответит кратким описанием. Очевидно, это полезно только для вас во время разработки.
- 1 Похоже, что для подавляющего большинства кодов ошибок возвращается «неизвестный код ошибки».
Это доступно в macOS и iOS от 11.3 и выше.
Я знаю, что это старый пост, но я читал документацию по Apple в разделе, посвященном связкам ключей. Они упоминают метод, который используется для преобразования ошибок OSStatus в нечто читабельное.
Возвращает строку, объясняющую значение кода результата безопасности.
SecCopyErrorMessageString (статус OSStatus, недействительно * зарезервировано);
У меня это сработало с ошибками OSStatus связки ключей. Работает ли это для вас? Тебе понадобится Безопасность. добавлен в ваш проект, чтобы использовать этот метод.
- 5 К сожалению, SecCopyErrorMessageString не существует в iOS.
- Я понял. Я оставлю это на случай, если это поможет кому-то на Mac
- К сожалению, это работает не для всех OSStatus. Например, он не может распечатать ошибку с помощью Core Audio OSStatus.
- +1 Спасибо за это. Вот быстрый синтаксис: if let error: CFString = SecCopyErrorMessageString (status, nil) <
- 1 Он включен в iOS 11.3 и выше.
Вот код, который я написал, надеюсь, он сэкономит вам время на вводе . эээ, не знаю, как заставить его отображаться правильно.
- 1 Используйте макрос, сделайте строковое и сэкономьте еще больше ввода.
- Это полезно, хотя вам следует добавить аргументы в пользу 0 , что означает отсутствие ошибки.
Я объединил несколько ответов. На самом деле я искал что-то вроде «throw errorForStatusCode (status)». Но в итоге добились:
SecCopyErrorMessageString доступен в iOS 11.3 https://developer.apple.com/documentation/security/1542001-security_framework_result_codes
- 1 Отличный ответ для iOS 11.3 и новее
Недавно я нашел этот действительно хороший веб-сайт, который работал для всех значений статуса, которые я ему задавал. Это намного удобнее, чем просмотр заголовочных файлов фреймворка: http://www.osstatus.com/
Используйте программу OSX calc. В меню презентации выберите режим «программист». Затем введите свой код в десятичном представлении. Затем нажмите кнопку «ascii», и калькулятор покажет вам 4-символьный перевод, такой как «! Init», «! Cat» и т. Д.
Для iOS 11.3+ я использую расширение на OSStatus ���
которую вы можете назвать как
Написав это, я заметил, что это очень близко к предыдущему ответу @ RomanMykitchak (поэтому, пожалуйста, дайте ему положительный отзыв), но я оставлю его здесь, поскольку расширение может оказаться полезным для кого-то.
Я создал расширение OSStatus, которое может вам пригодиться. Он регистрирует полное сообщение об ошибках, связанных со звуком, в противном случае, если возможно, четырехзначный код, в противном случае номер OSStatus, который вы могли бы найти на https://www.osstatus.com
Кроме того, он добавляет полезную информацию, такую как файл, функция и строка, в которой произошла ошибка.
И использование будет:
Полученные логи для трех тестов:
2018-11-12 19: 41: 48.427606 + 0100 HexaSynth [5875: 102611] AUGraph Invalid Audio Unit, OSStatus = -10864 в SoftSynthesizer.swift — init (soundFontFileName :), строка 40
2018-11-12 19: 41: 48.428403 + 0100 HexaSynth [5875: 102611]! Dat, OSStatus = 560226676 в SoftSynthesizer.swift — init (soundFontFileName :), строка 41
2018-11-12 19: 41: 48.428638 + 0100 HexaSynth [5875: 102611] OSStatus = -125 в SoftSynthesizer.swift — init (soundFontFileName :), строка 42
- Спасибо за ответ. Код работает, но мне не хватало ошибок, связанных с AVAudioRecorder. Я позаимствовал ваш код и добавил сюда недостающие ошибки: stackoverflow.com/a/58348781/598057. Вы также можете добавить их сюда.
- 1 Я рад, что это было полезно для вас. Конечно, каждый должен корректировать код для ошибок, полезных в их контексте.
В большинстве случаев, возможно, вам просто нужно найти код ошибки в файлах .h
Я только что сделал скрипт на Python, чтобы найти код (когда вы отлаживаете / распечатываете код osstatus)
Если вы хотите создать утилиту командной строки для использования во время разработки и поддержки, вы все равно можете использовать устаревшие методы Carbon даже в версии 10.9 (Mavericks). Очевидно, вы не можете использовать это в приложении, которое отправляете в Apple для включения в магазины приложений.
Скомпилировать с помощью:
скопируйте это где-нибудь в свой $PATH :
и загрузите коды ошибок из файлов журнала или отчетов об ошибках:
В случае отсутствия строки описания удобно преобразовать значения OSStatus в строки, которые выглядят как их четырехсимвольные определения. По крайней мере, тогда вы можете использовать grep для заголовков в надежде найти комментарий о том, что означает статус.
- 1 Что эквивалентно CreateTypeStringWithOSType в Swift? Не получается использовать .
Это не прямой ответ на вопрос OP, но я думаю, что он будет полезен тем, кто обеспокоен этими кодами возврата OSStatus:
Найдите ключевое слово «Result Codes» в документации Xcode (Organizer), и мы получим более или менее категоризированные разделы документации по кодам возврата в результате «System Guides».
Если вам просто нужно использовать некоторые коды непосредственно в ваших пользовательских функциях, они очень полезны.
Ошибки OSStatus могут быть байтами, представляющими 4-символьный код, или любым количеством ошибок, определенным в MacErrors.h .
Если ошибка OSStatus 0 или noErr это означает, что у вас нет ошибки.
Или попробуйте найти свой номер ошибки в MacErrors.h :
Это может помочь.
- Это не работает на iOS 9 (других версий я не пробовал), потому что [NSBundle bundleWithIdentifier:@’com.apple.security’] возвращается nil .
для платформы безопасности на IOS, учитывая, что SecCopyErrorMessageString отсутствует на платформе, это DYI
добавьте коды ошибок внизу
к вашему собственному переключателю.
Это то, что вам нужно https://www.osstatus.com/. Просто найдите данный OSStatus.
OSStatus err; . printf («% s», (char *) & err);
- 8 Это приведет к приятному сбою, если в ближайшее время в стеке не останется 0 байт.
- Вы бы использовали printf («% d», err).
- 2 Даже присутствия Джона Скита на планете Земля недостаточно, чтобы ответить на этот вопрос правильно!
Источник