Восстанавливаем SSD после BAD_CTX error

Восстанавливаем SSD после ошибки BAD_CTX



Тема восстановления SSD и другой flash памяти, как отказалось, не нова. Для SSD серии 320 в интернете существует много рекомендаций по восстановлению прошивки и обновлению. Но когда такая ситуация случается и летит система, то разбираться всегда сложно. Поэтому создаю эту памятку для быстрого восстановления в памяти особенностей возможного восстановления диска.
Сразу предупреждаю - представленный метод УНИЧТОЖАЕТ ВСЮ ИНФОРМАЦИЮ НА ДИСКЕ. Однако, тема создания резервных копий и сохранения информации.

Отдельная благодарность авторам следующих публикаций:
How to: Fix an unbootable Intel SSD suffering from the 8MB bug
Восстанавливаем запоротый SSD
Secure Erase SSDs

Суть проблемы: по разным причинам SSD disk, Flash накопитель или карта памяти становится размером 8 Мб. И попытки отформатировать, обнулить и т.п. стандартными методами системы безрезультатны.
С данными, как я уже говорил, я сразу попрощался. Так как, во-первых, у меня был настроен Fusion Drive, а, во-вторых, замечательная функция для экосистемы OS X, автоматическое резервное копирование, всегда спасает при потере информации.
В сети существует много рекомендаций по решению данной проблемы. Особенно рекомендуют провести безопасное стирание диска с помощью хорошо известной программы MHDD. Однако, MHDD программа под ОС DOS и даже создание загрузочного диска с MS DOS (PC DOS) не позволяет загрузить компьютер Mac. Можно вытащить диск из компьютера, для проведения всех операций на машине под управлением MS DOS, можно, но достаточно сложно и хлопотно (с учетом сложной конструкции компьютеров Mac).
Поэтому ищем другие пути решения проблемы. И как всегда более простое решение нашлось в "зоопарке" ОС Linux.
После использования множества Live CD (Live DVD), останавливаемся на Pappy Linux. Преимущества. Puppy Linux для решения нашей задачи:
- легковесный дистрибутив, который полноценно работает как с DVD, так и с USB;
- уже установлены базовые системные утилиты для работы с жестким диском (пакет hdparm);
- поддержка репозитория ubuntu и debian для установки некоторых нестандартных, но необходимых, утилит.
Процесс создания загрузочного Live DVD или Live USD не описываем, так как много стандартных рекомендаций есть в интернете.
Для восстановления диска необходимо установить еще пакет pm-utils.
Пакет необходим для переведения компьютера в режим сна. Это в дальнейшем потребуется для разблокировки функций низкоуровневого стирания диска.

Процесс диагностики и стирания диска с ошибкой BAD_CTX.



Предположим, что восстановлению подлежит первый диск в системе, а именно, /dev/sda для предотвращения ошибки будем в дальнейшем использовать /dev/sdX.

Для утончения точного названия диска, можно выполнить команду:

sudo disk -l
Для проверки состояния диска запускаем:

sudo hdparm -I /dev/sda

Если в состоянии диска присутствует флаг "frozen" (а он скорее всего присутствует).
Сбрасываем данную блокировку с помощью утилиты

pm-suspend
Компьютер переходит в режим сна, а после выходы из режима сна - флаг "frozen" сбрасывается.

Продолжаем восстановление.

ЕЩЕ РАЗ ПРОВЕРЬТЕ НАЗВАНИЕ ДИСКА!!!

Продолжаем восстановление.

Последовательно выполняем команды:
sudo hdparm --user-master user --security-set-pass abc /dev/sdXsudo time hdparm --user-master user --security-erase abc /dev/sdXsudo time hdparm --user-master user --security-erase-enhanced abc /dev/sdXsudo hdparm --dco-restore /dev/sdXsudo hdparm --yes-i-know-what-i-am-doing /dev/sdXsudo hdparm -I /dev/sda

В результате выполнения последней команды можно убедиться, что количество секторов на диске увеличилось, а его объем превышает ошибочные 8 гб.

Проводим операцию создания таблицы разделов и форматирование диска.
Разбить на разделы и отформатировать можно и даже лучше под OSX, однако для проверки все же можно провести данную операцию в Puppy Linux.

PS:

К сожалению, после таких операций восстановления SSD диск долго не прожил. Всего 2 года. Однако, 2 года тоже значительный срок, за который можно накопить на новый SSD :)

HEVC видео с поддержкой формата файлов QuickTime для macOS 10.13 и iOS 11

Ubuntu Server в сети MacOS (часть 10)

Ubuntu Server в сети MacOS (часть 10) - Установка VirtualBox на Ubuntu server или как установить Windows 8 на iPad.


Следуя логике («после части 1 всегда идет часть 10» ;), рассмотрим особенности установки, настройки VirtualBox под Ubuntu Server. Данная задача особенно актуальна для пользоватлей iOS, MacOS. Так как использование программ виртуализации под MacOS (VMWare Fusion, Parallels) достаточно дорогое удовольствие, а также они отхватывают значительную часть ресурсов самого MacOS. С другой стороны попробовать все преимущества Windows 8, 8.1) как операционную систему для планшетов при этом «не изменяя» iOS можно только в режиме сетевой виртуализации. Ну и конечно пользователей легальных программных продуктов порадует возможность использовать одну копию ПО (Win Pro, Office и т.п.) на VirtualBox машине с удаленным управлением (в том числе и через Интернет).

1. Виртуальные машины на основе VirtualBox и особенности их использования в Ubuntu Server.

Немного теории (как без нее)


2. Установка VirtualBox на Ubuntu Server 12.04.04.


2.1. Официальный сайт проекта в VirtualBox в интернете - https://www.virtualbox.org. На данной странице присутствуют два важных пунтка:
- ссылка на «phpVirtualBox AJAX web interface» (сейчас это  project site)
- вкладка Downloads - https://www.virtualbox.org/wiki/Downloads
Начнем со второй ссылки.

By downloading, you agree to the terms and conditions of the respective license.


Выбираем подпункт VirtualBox 4.3.10 for Linux hosts. В нем представлено краткое описание ссылок, версий, репозитариев для установки пакета.

Перед началом работы не забываем зайти в режим терминала и получить доступ к серверу через ssh%
ssh user@UNAS.local


2.2. В моем случае установлена базовая операционная система Ubuntu Server 12.04.04, значит репозитарий:
deb http://download.virtualbox.org/virtualbox/debian precise contrib
Для других версий системы (смотри ссылку во вкладке Downloads)


Для добавления данного репозитария существует два способа:

Открываем файл-источников
  • sudo nano /etc/apt/sources.list
и добавляем в него строчку (в конец файла)
  • deb http://download.virtualbox.org/virtualbox/debian precise contrib

Второй, через команду
  • sudo add-apt-repository 'deb http://download.virtualbox.org/virtualbox/debian precise contrib'
Второй способ не всегда срабатывает (так как в обычной поативки данная утилита отсутствует)

Не забываем выполнить комманды (есть на сайте https://www.virtualbox.org/wiki/Linux_Downloads):
  • sudo apt-key add oracle_vbox.asc
  • wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
  • sudo apt-get update


Теперь непосредственно устанавливаем пакет VirtualBox на сервер (в данном случае версию VirtualBox 4.2 (так как версия 4.3 не совместима с версией phpVirtualBox AJAX web interface 4.2)
  • sudo apt-get install virtualbox-4.2

Первый этап установки завершен. VirtualBox установлена на сервер. Однако это только половина процесса установки на сервер. Необходимо еще установить подсистему управления вирутальными машинами. В частности удаленного управления через http-протокол - phpVirtualBox AJAX web interface

2.3. Официапльный сайт проекта phpVirtualBox AJAX web interface - https://code.google.com/p/phpvirtualbox/. На данной странице указана ссылка на соответствующий файл на странице sourceforge.net/projects/phpvirtualbox/. В моем случае это:
http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.2-8.zip (ссылку можно скопировать перед открытием) - это версия 4.2-8.

Слудем дальнейшим инструкциям.

2.3.1. Подготавливаем работу утилиты:

  • sudo apt-get install apache2 php5 libapache2-mod-php5
  • sudo service apache2 restart

2.3.2. Содаем пользователя и группу

  • sudo adduser --ingroup vboxusers vbox

(придумываем и вводим пароль)

2.3.3. Качаем файл

  • wget 'http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.2-8.zip' -O phpvirtualbox.zip

2.3.4. Распаковываем файл в папку для дальнейшей работы с www-сервисом

  • sudo unzip phpvirtualbox.zip -d /var/www/phpvirtualbox

2.3.5. Создаем и редактируем файл конфигурации

  • cd /var/www/phpvirtualbox
  • sudo mv config.php-example config.php
  • sudo nano config.php

Изменяем:
  • $username=vbox
  • $password=PWD - ваш пароль

Добавляем строчку (снимаем комментарий) - отменяет необходимость авторизации при подключении к серверу настроек VirtualBox:
  • var $noAuth = true;

2.3.4. Создаем файл
  • sudo nano /etc/default/virtualbox

И добавляем в него следующую строчку:
  • VBOXWEB_USER=vbox

2.3.5. Перезапускаем сервер:

  • sudo /etc/init.d/vboxweb-service start

2.3.6. В браузере заходим на страничку сервиса
  • http://your-server/phpvirtualbox

где your-server - адрес или псевдоним сервера (например, 192.168.1.2)

Все должно работать !!!!
Теперь у нас есть возможность создавать и управлять виртуальными машинами. Но это еще не все.

3. Настройка VirtualBox



Теперь необходимо обеспечить доступ к вирутальным машинам (обычно по протоколу RDP).
Remote Desktop Protocol - это стандартный протокол по удаленному доступу к Windows удаленному столу, также используется по умолчанию в VirtualBox.

3.1. Вначале установим расширения VirtualBox (без него не будет работать расширение RDP и некоторые другие настройки)

  • wget http://download.virtualbox.org/virtualbox/4.2.20/Oracle_VM_VirtualBox_Extension_Pack-4.2.24-92790.vbox-extpack

имя файла уточняем на странице https://www.virtualbox.org/wiki/Downloads

  • sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.2*.vbox-extpack
  • sudo /etc/init.d/vboxweb-service stop
  • sudo /etc/init.d/vboxweb-service start

3.2. Устанавливаем RDP-client

В MacOS RDP-client наиболее удобный - это Microsoft Remote Desktop. Платная альтернатива (универсальная RDP и VNC протоколы) - Jump Desktop.
Однако, Microsoft Remote Desktop - бесплатный клиент и дает возможность насладиться в польной мере преимуществами Windows 8.1 Pro удаленного дисплея.
Для iOS и MacOS программа RDP и Jump DeskTop есть в магазине приложений!!!

Ubuntu Server в сети MacOS (часть 1)

Ubuntu Server в сети MacOS (часть 1) - Подготовка к установке.


Продолжительный период использования техники Apple и совместимых аксессуаров привело к образованию значительного запаса ненужного оборудования. Например, внешние firewire диски в новом поколении iMac подключать стало сложно, TimeCapsule первых поколений при замене дисков на более емкие значительно замедляют работу сети. При этом бюджетные NAS системы имеют обычно низкую скорость. В общем, возникла возможность и желание собрать NAS или даже минисервер, максимально используя имеющееся железо и с минимальными затратами.
Начем с самого начала. Выбор оборудования и определение затрат на создание NAS сервера, а также медиа-сервера и многое другое

1. Оборудование для NAS сервера (для тех у кого уже есть собранный ПК можно пропустить).


Первое и самое важно - корпус. Именно на него будем смотреть все время. Более того, я как параноик тишины, хочу, что бы корпус еще был тихий. Поэтому задача выбора корпуса стала самой сложной. В данном случае подойдут все модели формфактора MiniITX, но чем больше и дороже корпус, тем он обычно тише и дороже. Ищем золотую середину. В своих поисках остановился на двух моделях (без блоков питания - все цены указаны на начало 2014 года):
  • Бюджетный - Morex 6610 PC Case (70 usd) - есть возможность подключения до 4х дисков 3,5 дюйма, и даже DVD-ROM (что для мультимедиа сервера не маловажно);
  • Стильный - Fractal Design Node 304 (100 usd) - красивый, стильный, добротный, дорогой. Зато вмещает аж 6-ть дисков 3,5 дюйма (но без возможности установки DVD), 14 сантиметровый кулер + 2 дисковых (все с регулировкой скорости вращения с помощью переключателя «низко»-«средне»-«высоко»).
В качестве совсем бюджетной модели подойдет любой корпус и любого форм фактора, с минимальным блоком питания (так как система должна получиться маломощной). Выбор указанных выше моделей основан на миниатюрности и относительной тишине.
Второй этап - выбор блока питания (Опять же тихого и надежного. Мощность в данном случае не так важна). Получилось подобрать два варианта:
  • С 12 мм. вентилятором бюджетный Zalman ZM400-LE 400W. В дальнейшем можно скрутить защитную решетку, что тоже немного уменьшает шум (ориентир 30 usd);
  • Безвентиляторный (безбожно дорогой) Chieftec GPS-500C 80Plus Platinum 500W. Цена в пределах 150 USD.
И самое главное - материнская плата и процессор. В данном направлении широкий выбор. Остановимся на основных моделях форм-фактора MiniITX. Другие критерии:
  • наличие достаточного количества SATA шлейфов питания (желательно аппаратный RAID, хотя и не обязательно. А для дальнейшей совместимости hard RAID даже противопоказан);
  • память формата SO-DIMM (Очень актуально для пользователей, которые провели upgrade своей Apple техники. Многие не знают куда девать освободившиеся планки ;))
  • низкое энергопотребление системы в целом.
Из доступного на начало 2014 года предложения, получилось подобрать такие варианты :
  • все варианты с интегрированным CPU - хороши, но мало встроенных SATA портов (например, ASRock AD2550-ITX или Asus C8HM70-I/HDMI intCPU) - ориентир 90 USD. То есть надо еще докупать доп. контролер (30-50 USD). Итого: 120-150 USD.
  • Intel Base система. Большой выбор материснких плат на которых интегрированно по 4-е SATA разъема, а в отдельных системах присутствуют две Ethernet карты (на любителя), например, Gigabyte GA-H87TN s1150 mITX (ориентир 110 USD) или с двумя Ethernet, Hard Raid, miniPCI (для подключения SSD диска) - Asus Q87T s1150, Intel Q87, PCI-E 3.0x16 (Ориентир 160 USD). Процессор с минимальным энергопотреблением - Intel Core i3-4130T 2.9GHz/3MB/5GT/s (120 USD). Итого 230-270 USD.
  • AMD система (компромисс цена/качество). Материанская плата с 7-ю SATA разъемами: ASRock FM2A85X-ITX (95 USD). К ней нужна и память DDR3 стандартного размера - ориентир 50 USD . Процессор с низким энергопотреблением: AMD Richland A8-6500T 2.1GHz/3100MHz/4MB (100 USD). Итого: 245 USD.

Жесткие диски - САМОЕ ВАЖНО, но их выбор это тема целого исследования. Поэтому, уточню только основные особенности при выборе современных жестких дисков:
1. Не покупайте диски Desktop-класса, особенно WD Green (очень плохо работают в RAID массивах и вообще в NAS системах). При значительной нагрузке (круглосуточной работе) выходят из строя за год, а то и менее. При этом обязательный в данном случае RAID1 (минимум 2-а диска) получается дороже покупки одного более дорого диска.
2. Сегодня появились на рынке диски с маркировкой NAS. Из названия понятно, что ориентирвоаны на рассматриваемые системы. Они характеризуются длительным периодом эксплуатации и сравнительно низкой старостью вращения шпинделя (5400-5900 оборотов). В целом данные диски - оптимальный выбор. Очень рекомендую покупать сразу минимум 3и диска для формирования RAID5 массива.
3. Дорогие диски - специально для сервера (корпоративного класса). Характеризуются высокой скоростью и повышенной надежностью. Обычно в 2 раза дороже обычных дисков (Desktop и NAS уровня). Для домашнего сервера - эти диски на любителя. Хотя можно рассмотреть покупку именно даного диска для установки операционной системы, формирования надежного RAID массива и т.п.
Общие замечания - чем дешевле диск (с поправкой на емкость) - тем ниже его надежность и/или скоростные характеристики.

2. Установка и первичная настройка программного обеспечения на сервер.



Переходим к главному этапу - установка и первичная настройка ПО.
По различным причинам выбор пал именно на Ubuntu Server, так как данное решение
  • бесплатное и достаточно стабильное
  • практически не возникает проблем с поддерживаемым оборудование (не в пример с VMWare, тоже бесплатным, но очень капризным по отношению к оборудованию)
  • огромное число приложений и частных решений (от стандартного набора SMB, VPN, UPNP до специфического для MacOS - AFP (Netatalk) протокола, HFS+ файловых систем и т.п.)
  • имеет широкое распространение (официальная поддержка и значительное число решений в рамках сообщества).
Следующая проблема - выбор конкретного дистрибутива. На официальной странице ubuntu.ru представлены две серии стабильных выпусков: выпуск с длительной поддержкой (сейчас - Ubuntu Server 12.04.4, который существенно обновляет один раз в два года) и стандартный выпуск (обновляется два раза в год). С учетом ого, что сервер - это довольно стабильная система длительного пользования, мною выбран именно вариант с длительной поддержкой. Однако установка и стандартной версии значительно не изменила результата. Если есть желание повозиться с новыми программами, сервисами и т.п. То лучше ставить именно Ubuntu Server с полугодовым обновлением.
Кстати на счет выбора 32 или 64 битной Ubuntu server версии однозначного ответа не дам. Должно быть лучше AMD (x64) версия. однако, с ней связана определенная несовместимость старых программ, что тоже решается и будет дополнительно описано при рассмотрении процесса установки UPNP сервера.

В данном примере выбрава Ubuntu Server 12.04.4 AMD версия.

Подготовка загрузочного диска



Исходный файл дистрибутива можно скачать с официального сайта Ubuntu в по torrent или http протоколу - http://ubuntu.ru/get

Что делать с полученным файлом? Проще всего записать на CD-диск и провести установки с внешнего диска. Но поскольку эра CD ужа безвозвратно уходит в прошлое, большинству пользователей данный вариант недоступен. Поэтому необходимо записать загрузочный falsh-диск. В Windows для этого можно использовать программу UltraISO (на подробностях не буду останавливаться, так как настоящие «герои» всегда идут в обход ;)).

Запись iso-дистрибутива на flash в MacOS (в Ubuntu поступаем аналогично, только немного меняется синтаксис команд). Все команды выполняем в режиме терминала


1. Вначале для записи iso-файл образа диска установки на загрузочную flash-ку необходимо провести его конвертацию в формат .dmg с помощью системной утилиты hdiutil. Синтаксис смотри ниже.

hdiutil convert -format UDRW -o /Volumes/data/ubuntu-12.04.3-server-i386 /Volumes/data/ubuntu-12.04.3-server-i386.iso

где
/Volumes/data/ubuntu-12.04.4-server-amd64 - путь и имя файла .dmg
Volumes/data/ubuntu-12.04.4-server-amd64.iso - путь и имя исходного .iso файла

В операционной системе Ubuntu конвертировать .iso файл образа не надо.

2. Уточнение параметром компьютера и имя диска носителя flash.
Созданный файл (ubuntu-12.04.4-server-amd64.dmg)необходимо записать на Flash. Что бы определить какой именно диск является flash носителем используем утилиту diskutil.

diskutil list

У меня данная команда выводит следующий результат:

/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 999.3 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *3.0 TB disk1
1: EFI EFI 314.6 MB disk1s1
2: Apple_HFS MyBook09 3.0 TB disk1s2
3: Apple_Boot Recovery HD 650.0 MB disk1s3
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *7.8 GB disk2
1: DOS_FAT_32 DATA 7.8 GB disk2s1


ТУТ ВНИМАТЕЛЬНО!!!
Исходя из полученного листинга доступных дисков видно, что к компьютеру подключены 3 диска (/dev/disk0, /dev/disk1, dev/disk2). Никогда не используйте /dev/disk0 (это практически всегда системный диск). Я знаю, что моя flash на 8 Gb. Смотрим на листинг комманды diskutil. Есть диск размеров 7,8 Gb. Значит, сорее всего, подходит.
В приведенном примере диск flash - это /dev/disk2

В ubuntu для вывода списка дисков используем fdisk -l

3. Обязательно демонтируем диск /dev/disk2

diskutil unmountDisk /dev/disk2

Если данную операцию не произвести, получим ошибку «Диск занят» (не забываем демонтируем именно выбранный диск Flash).

В ubuntu для данных целей применяет стандартную команду
sudo umount /dev/sdc2 (для disk2)

4. Запись образа (АККУРАТНО С СИНТАКСИСОМ ИМЕНИ ДИСКА - можно удалить информацию на системном носителе)

Запись образа производиться по аналогии со всеми unix-подобными системами (OSX, Ubuntu и т.п.) командной dd (посекторная запись данных):

sudo dd if=/Volumes/data/ubuntu-12.04.4-server-amd64.dmg of=/dev/rdisk2 bs=1m

где
ubuntu-12.04.4-server-amd64.dmg - файл диска образа системы
of=/dev/rdisk2 - обозначение диска Flash (того самого /dev/disk2. Для диска /dev/disk3 данный параметр будет of=/dev/rdisk3 и т.п.)


Загрузочный flash готов.
Не забываем извлечь диск командой diskutil

diskutil eject /dev/disk2