Deprecated: Grav\Common\Grav::setup(): Implicitly marking parameter $environment as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Grav.php on line 203

Deprecated: Grav\Common\Grav::header(): Implicitly marking parameter $response as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Grav.php on line 525

Deprecated: Grav\Common\Grav::fireEvent(): Implicitly marking parameter $event as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Grav.php on line 588

Deprecated: Grav\Common\Debugger::profile(): Implicitly marking parameter $message as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Debugger.php on line 547

Deprecated: Grav\Common\Debugger::stopProfiling(): Implicitly marking parameter $message as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Debugger.php on line 588

Deprecated: Grav\Common\Debugger::addEvent(): Implicitly marking parameter $time as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Debugger.php on line 779

Deprecated: Grav\Common\Data\Data::file(): Implicitly marking parameter $storage as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Data/Data.php on line 326

Deprecated: Grav\Common\Data\DataInterface::file(): Implicitly marking parameter $storage as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Data/DataInterface.php on line 83

Deprecated: RocketTheme\Toolbox\File\YamlFile::globalSettings(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/rockettheme/toolbox/File/src/YamlFile.php on line 48

Deprecated: RocketTheme\Toolbox\File\YamlFile::settings(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/rockettheme/toolbox/File/src/YamlFile.php on line 73

Deprecated: RocketTheme\Toolbox\File\AbstractFile::settings(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/rockettheme/toolbox/File/src/AbstractFile.php on line 67

Deprecated: Grav\Common\Utils::pathinfo(): Implicitly marking parameter $flags as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Utils.php on line 1008

Deprecated: Grav\Common\Utils::getPagePathFromToken(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Utils.php on line 1621

Deprecated: Grav\Common\Utils::getSupportPageTypes(): Implicitly marking parameter $defaults as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Utils.php on line 1950

Deprecated: Grav\Framework\RequestHandler\RequestHandler::__construct(): Implicitly marking parameter $container as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/RequestHandler/RequestHandler.php on line 36

Deprecated: Grav\Common\Processors\InitializeProcessor::handleRedirectRequest(): Implicitly marking parameter $code as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Processors/InitializeProcessor.php on line 418

Deprecated: Grav\Common\Iterator::filter(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Iterator.php on line 233

Deprecated: Grav\Common\Iterator::sort(): Implicitly marking parameter $callback as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Iterator.php on line 253

Deprecated: RocketTheme\Toolbox\ResourceLocator\UniformResourceIterator::__construct(): Implicitly marking parameter $locator as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/rockettheme/toolbox/ResourceLocator/src/UniformResourceIterator.php on line 37

Deprecated: Grav\Common\Plugin::__construct(): Implicitly marking parameter $config as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Plugin.php on line 75

Deprecated: Grav\Common\Plugin::inheritedConfigOption(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Plugin.php on line 417

Deprecated: Grav\Plugin\FormPlugin::onTwigVariables(): Implicitly marking parameter $event as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/form.php on line 416

Deprecated: Grav\Plugin\FormPlugin::form(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/form.php on line 1179

Deprecated: Grav\Plugin\FormPlugin::createForm(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/form.php on line 1231

Deprecated: Grav\Plugin\FormPlugin::createForm(): Implicitly marking parameter $form as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/form.php on line 1231

Deprecated: Grav\Common\Language\Language::getFallbackPageExtensions(): Implicitly marking parameter $fileExtension as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Language/Language.php on line 361

Deprecated: Grav\Common\Language\Language::getFallbackPageExtensions(): Implicitly marking parameter $languageCode as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Language/Language.php on line 361

Deprecated: Grav\Common\Language\Language::getFallbackLanguages(): Implicitly marking parameter $languageCode as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Language/Language.php on line 414

Deprecated: Grav\Common\Language\Language::translate(): Implicitly marking parameter $languages as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Language/Language.php on line 492

Deprecated: Grav\Common\Page\Pages::evaluate(): Implicitly marking parameter $self as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Pages.php on line 648

Deprecated: Grav\Common\Page\Pages::all(): Implicitly marking parameter $current as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Pages.php on line 1163

Deprecated: Grav\Common\Page\Pages::getList(): Implicitly marking parameter $current as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Pages.php on line 1237

Deprecated: Grav\Common\Page\Pages::recurse(): Implicitly marking parameter $parent as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Pages.php on line 1825

Deprecated: Grav\Framework\Session\Session::getCookieOptions(): Implicitly marking parameter $lifetime as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Session/Session.php on line 480

Deprecated: Grav\Common\Cache::getCacheAdapter(): Implicitly marking parameter $namespace as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Cache.php on line 244

Deprecated: Grav\Common\Cache::getCacheAdapter(): Implicitly marking parameter $defaultLifetime as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Cache.php on line 244

Deprecated: Grav\Common\Cache::getCacheDriver(): Implicitly marking parameter $adapter as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Cache.php on line 336

Deprecated: Grav\Plugin\Admin\Admin::getConfigurationData(): Implicitly marking parameter $post as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/admin/classes/plugin/Admin.php on line 907

Deprecated: Grav\Plugin\Login\Login::checkLoginRateLimit(): Implicitly marking parameter $ip as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 314

Deprecated: Grav\Plugin\Login\Login::resetLoginRateLimit(): Implicitly marking parameter $ip as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 333

Deprecated: Grav\Plugin\Login\Login::getIpKey(): Implicitly marking parameter $ip as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 344

Deprecated: Grav\Plugin\Login\Login::sendInviteEmail(): Implicitly marking parameter $message as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 523

Deprecated: Grav\Plugin\Login\Login::sendInviteEmail(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 523

Deprecated: Grav\Plugin\Login\Login::getPage(): Implicitly marking parameter $route as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 626

Deprecated: Grav\Plugin\Login\Login::getPage(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 626

Deprecated: Grav\Plugin\Login\Login::addPage(): Implicitly marking parameter $route as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 666

Deprecated: Grav\Plugin\Login\Login::addPage(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 666

Deprecated: Grav\Plugin\Login\Login::getRoute(): Implicitly marking parameter $enabled as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 688

Deprecated: Grav\Plugin\Login\Login::isUserAuthorizedForPage(): Implicitly marking parameter $config as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Login.php on line 735

Deprecated: Grav\Plugin\Email\Email::message(): Implicitly marking parameter $subject as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/email/classes/Email.php on line 72

Deprecated: Grav\Plugin\Email\Email::message(): Implicitly marking parameter $body as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/email/classes/Email.php on line 72

Deprecated: Grav\Plugin\Email\Email::message(): Implicitly marking parameter $contentType as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/email/classes/Email.php on line 72

Deprecated: Grav\Plugin\Email\Email::message(): Implicitly marking parameter $charset as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/email/classes/Email.php on line 72

Deprecated: Grav\Plugin\Email\Email::send(): Implicitly marking parameter $envelope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/email/classes/Email.php on line 92

Deprecated: Grav\Plugin\Form\Form::getFileUploadError(): Implicitly marking parameter $language as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/classes/Form.php on line 751

Deprecated: Grav\Plugin\Form\Form::removeFlashUpload(): Implicitly marking parameter $field as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/classes/Form.php on line 1259

Deprecated: Grav\Framework\Form\Traits\FormTrait::getData(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Traits/FormTrait.php on line 197

Deprecated: Grav\Framework\Form\Traits\FormTrait::submit(): Implicitly marking parameter $files as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Traits/FormTrait.php on line 369

Deprecated: Grav\Framework\Form\Traits\FormTrait::render(): Implicitly marking parameter $layout as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Traits/FormTrait.php on line 505

Deprecated: Grav\Framework\Form\Interfaces\FormInterface::submit(): Implicitly marking parameter $files as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Interfaces/FormInterface.php on line 143

Deprecated: Grav\Framework\Interfaces\RenderInterface::render(): Implicitly marking parameter $layout as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Interfaces/RenderInterface.php on line 37

Deprecated: Mf2\Parser::parse(): Implicitly marking parameter $context as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/webmention/classes/Parser.php on line 1100

Deprecated: Twig\Node\Node::__construct(): Implicitly marking parameter $tag as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/twig/twig/src/Node/Node.php on line 39

Deprecated: Twig\Environment::createTemplate(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/twig/twig/src/Environment.php on line 446

Deprecated: Grav\Framework\Route\Route::getBase(): Implicitly marking parameter $language as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Route/Route.php on line 95

Deprecated: Grav\Common\Backup\Backups::backup(): Implicitly marking parameter $status as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Backup/Backups.php on line 197

Deprecated: Grav\Common\Scheduler\Scheduler::run(): Implicitly marking parameter $runTime as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Scheduler/Scheduler.php on line 191

Deprecated: Grav\Common\Scheduler\Job::isDue(): Implicitly marking parameter $date as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Scheduler/Job.php on line 191

Deprecated: Grav\Common\Scheduler\Job::onlyOne(): Implicitly marking parameter $whenOverlapping as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Scheduler/Job.php on line 262

Deprecated: Twig\Loader\FilesystemLoader::__construct(): Implicitly marking parameter $rootPath as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/twig/twig/src/Loader/FilesystemLoader.php on line 37

Deprecated: Grav\Common\Twig\Extension\GravExtension::translateLanguage(): Implicitly marking parameter $languages as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Twig/Extension/GravExtension.php on line 935

Deprecated: twig_template_from_string(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/twig/twig/src/Extension/StringLoaderExtension.php on line 42

Deprecated: Grav\Plugin\Form\TwigExtension::includeFormField(): Implicitly marking parameter $default as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/classes/TwigExtension.php on line 146

Deprecated: Grav\Common\Page\Page::parent(): Implicitly marking parameter $var as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Page.php on line 2398

Deprecated: Grav\Common\Page\Interfaces\PageRoutableInterface::parent(): Implicitly marking parameter $var as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Interfaces/PageRoutableInterface.php on line 136

Deprecated: Grav\Framework\Flex\Flex::getDirectories(): Implicitly marking parameter $types as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Flex.php on line 97

Deprecated: Grav\Framework\Flex\Flex::getCollection(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Flex.php on line 128

Deprecated: Grav\Framework\Flex\Flex::getCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Flex.php on line 128

Deprecated: Grav\Framework\Flex\Flex::getObject(): Implicitly marking parameter $type as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Flex.php on line 274

Deprecated: Grav\Framework\Flex\Flex::getObject(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Flex.php on line 274

Deprecated: Grav\Framework\Flex\Flex::resolveKeyAndType(): Implicitly marking parameter $type as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Flex.php on line 306

Deprecated: Grav\Framework\Flex\Flex::resolveType(): Implicitly marking parameter $type as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Flex.php on line 326

Deprecated: Grav\Framework\Flex\Interfaces\FlexInterface::getDirectories(): Implicitly marking parameter $types as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php on line 49

Deprecated: Grav\Framework\Flex\Interfaces\FlexInterface::getCollection(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php on line 64

Deprecated: Grav\Framework\Flex\Interfaces\FlexInterface::getCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php on line 64

Deprecated: Grav\Framework\Flex\Interfaces\FlexInterface::getObject(): Implicitly marking parameter $type as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php on line 94

Deprecated: Grav\Framework\Flex\Interfaces\FlexInterface::getObject(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php on line 94

Deprecated: Grav\Framework\Form\FormFlash::addUploadedFile(): Implicitly marking parameter $field as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 323

Deprecated: Grav\Framework\Form\FormFlash::addUploadedFile(): Implicitly marking parameter $crop as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 323

Deprecated: Grav\Framework\Form\FormFlash::addFile(): Implicitly marking parameter $crop as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 351

Deprecated: Grav\Framework\Form\FormFlash::removeFile(): Implicitly marking parameter $field as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 372

Deprecated: Grav\Framework\Form\FormFlash::setUser(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 450

Deprecated: Grav\Framework\Form\FormFlash::setUserName(): Implicitly marking parameter $username as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 468

Deprecated: Grav\Framework\Form\FormFlash::setUserEmail(): Implicitly marking parameter $email as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 479

Deprecated: Grav\Framework\Form\FormFlash::addFileInternal(): Implicitly marking parameter $crop as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/FormFlash.php on line 541

Deprecated: Grav\Framework\Form\Interfaces\FormFlashInterface::addUploadedFile(): Implicitly marking parameter $field as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php on line 149

Deprecated: Grav\Framework\Form\Interfaces\FormFlashInterface::addUploadedFile(): Implicitly marking parameter $crop as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php on line 149

Deprecated: Grav\Framework\Form\Interfaces\FormFlashInterface::addFile(): Implicitly marking parameter $crop as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php on line 159

Deprecated: Grav\Framework\Form\Interfaces\FormFlashInterface::removeFile(): Implicitly marking parameter $field as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php on line 168

Deprecated: Grav\Plugin\FlexObjects\Flex::getDirectories(): Implicitly marking parameter $types as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/flex-objects/classes/Flex.php on line 113

Deprecated: Grav\Plugin\FlexObjects\Flex::getCollection(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/flex-objects/classes/Flex.php on line 150

Deprecated: Grav\Plugin\FlexObjects\Flex::getCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/flex-objects/classes/Flex.php on line 150

Deprecated: Grav\Plugin\FlexObjects\Flex::getObject(): Implicitly marking parameter $type as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/flex-objects/classes/Flex.php on line 188

Deprecated: Grav\Plugin\FlexObjects\Flex::getObject(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/flex-objects/classes/Flex.php on line 188

Deprecated: Grav\Framework\Flex\FlexDirectory::getConfig(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 159

Deprecated: Grav\Framework\Flex\FlexDirectory::getSearchOptions(): Implicitly marking parameter $options as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 201

Deprecated: Grav\Framework\Flex\FlexDirectory::getDirectoryForm(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 218

Deprecated: Grav\Framework\Flex\FlexDirectory::getDirectoryConfigUri(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 315

Deprecated: Grav\Framework\Flex\FlexDirectory::getDirectoryConfig(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 327

Deprecated: Grav\Framework\Flex\FlexDirectory::getCollection(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 376

Deprecated: Grav\Framework\Flex\FlexDirectory::getCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 376

Deprecated: Grav\Framework\Flex\FlexDirectory::getIndex(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 403

Deprecated: Grav\Framework\Flex\FlexDirectory::getIndex(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 403

Deprecated: Grav\Framework\Flex\FlexDirectory::getObject(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 426

Deprecated: Grav\Framework\Flex\FlexDirectory::getCache(): Implicitly marking parameter $namespace as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 442

Deprecated: Grav\Framework\Flex\FlexDirectory::getStorageFolder(): Implicitly marking parameter $key as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 511

Deprecated: Grav\Framework\Flex\FlexDirectory::getMediaFolder(): Implicitly marking parameter $key as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 520

Deprecated: Grav\Framework\Flex\FlexDirectory::createCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 560

Deprecated: Grav\Framework\Flex\FlexDirectory::createIndex(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 577

Deprecated: Grav\Framework\Flex\FlexDirectory::loadCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 631

Deprecated: Grav\Framework\Flex\FlexDirectory::update(): Implicitly marking parameter $key as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/FlexDirectory.php on line 1125

Deprecated: Grav\Framework\Flex\Traits\FlexAuthorizeTrait::isAuthorized(): Implicitly marking parameter $scope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php on line 37

Deprecated: Grav\Framework\Flex\Traits\FlexAuthorizeTrait::isAuthorized(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php on line 37

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getConfig(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 52

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getDirectoryForm(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 60

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getDirectoryConfigUri(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 81

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getCollection(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 110

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 110

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getIndex(): Implicitly marking parameter $keys as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 122

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getIndex(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 122

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getObject(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 133

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getCache(): Implicitly marking parameter $namespace as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 139

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getStorageFolder(): Implicitly marking parameter $key as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 150

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::getMediaFolder(): Implicitly marking parameter $key as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 156

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::createCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 177

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::createIndex(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 185

Deprecated: Grav\Framework\Flex\Interfaces\FlexDirectoryInterface::loadCollection(): Implicitly marking parameter $keyField as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php on line 208

Deprecated: Grav\Framework\Flex\Interfaces\FlexAuthorizeInterface::isAuthorized(): Implicitly marking parameter $scope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php on line 32

Deprecated: Grav\Framework\Flex\Interfaces\FlexAuthorizeInterface::isAuthorized(): Implicitly marking parameter $user as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php on line 32

Deprecated: Grav\Common\User\Traits\UserTrait::authorize(): Implicitly marking parameter $scope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/User/Traits/UserTrait.php on line 79

Deprecated: Grav\Common\User\Interfaces\AuthorizeInterface::authorize(): Implicitly marking parameter $scope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php on line 25

Deprecated: Grav\Plugin\Login\Events\PageAuthorizeEvent::__construct(): Implicitly marking parameter $config as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/login/classes/Events/PageAuthorizeEvent.php on line 40

Deprecated: Grav\Plugin\Form\Forms::createPageForm(): Implicitly marking parameter $name as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/classes/Forms.php on line 65

Deprecated: Grav\Plugin\Form\Forms::createPageForm(): Implicitly marking parameter $form as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/form/classes/Forms.php on line 65

Deprecated: Grav\Plugin\Taxonomylist::getChildPagesTags(): Implicitly marking parameter $current as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/user/plugins/taxonomylist/classes/taxonomylist.php on line 35

Deprecated: Grav\Common\Security::detectXssFromSvgFile(): Implicitly marking parameter $options as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Security.php on line 33

Deprecated: Grav\Common\Security::detectXssFromPages(): Implicitly marking parameter $status as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Security.php on line 98

Deprecated: Grav\Common\Security::detectXssFromArray(): Implicitly marking parameter $options as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Security.php on line 148

Deprecated: Grav\Common\Security::detectXss(): Implicitly marking parameter $options as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Security.php on line 179

Deprecated: Grav\Common\Page\Media::__construct(): Implicitly marking parameter $media_order as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Media.php on line 41

Deprecated: Grav\Common\Page\Medium\AbstractMedia::createFromArray(): Implicitly marking parameter $blueprint as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Medium/AbstractMedia.php on line 232

Deprecated: Grav\Common\Media\Traits\MediaUploadTrait::checkUploadedFile(): Implicitly marking parameter $filename as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php on line 74

Deprecated: Grav\Common\Media\Traits\MediaUploadTrait::checkUploadedFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php on line 74

Deprecated: Grav\Common\Media\Traits\MediaUploadTrait::checkFileMetadata(): Implicitly marking parameter $filename as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php on line 118

Deprecated: Grav\Common\Media\Traits\MediaUploadTrait::checkFileMetadata(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php on line 118

Deprecated: Grav\Common\Media\Traits\MediaUploadTrait::copyUploadedFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php on line 255

Deprecated: Grav\Common\Media\Traits\MediaUploadTrait::deleteFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php on line 332

Deprecated: Grav\Common\Media\Traits\MediaUploadTrait::renameFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php on line 374

Deprecated: Grav\Common\Media\Interfaces\MediaCollectionInterface::createFromArray(): Implicitly marking parameter $blueprint as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php on line 108

Deprecated: Grav\Common\Media\Interfaces\MediaUploadInterface::checkUploadedFile(): Implicitly marking parameter $filename as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php on line 35

Deprecated: Grav\Common\Media\Interfaces\MediaUploadInterface::checkUploadedFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php on line 35

Deprecated: Grav\Common\Media\Interfaces\MediaUploadInterface::copyUploadedFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php on line 54

Deprecated: Grav\Common\Media\Interfaces\MediaUploadInterface::deleteFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php on line 63

Deprecated: Grav\Common\Media\Interfaces\MediaUploadInterface::renameFile(): Implicitly marking parameter $settings as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php on line 72

Deprecated: Grav\Common\Page\Medium\ImageMedium::__construct(): Implicitly marking parameter $blueprint as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Medium/ImageMedium.php on line 47

Deprecated: Grav\Common\Page\Medium\Medium::__construct(): Implicitly marking parameter $blueprint as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Medium/Medium.php on line 46

Deprecated: Grav\Framework\Psr7\Response::__construct(): Implicitly marking parameter $reason as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Psr7/Response.php on line 38

Deprecated: Grav\Framework\Psr7\Response::withJson(): Implicitly marking parameter $status as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Psr7/Response.php on line 58

Deprecated: Grav\Framework\Session\Messages::clear(): Implicitly marking parameter $scope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Session/Messages.php on line 53

Deprecated: Grav\Framework\Session\Messages::all(): Implicitly marking parameter $scope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Session/Messages.php on line 86

Deprecated: Grav\Framework\Session\Messages::fetch(): Implicitly marking parameter $scope as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Framework/Session/Messages.php on line 108
Cloning, Converting, and Correcting | Matthew Miner's Blog

Matthew Miner's Basic-ish BlogMatthew Miner's Blog

Sometimes I might say something

Cloning, Converting, and Correcting

TECH TROUBLESHOOTING
Deprecated: Parsedown::blockSetextHeader(): Implicitly marking parameter $Block as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/erusev/parsedown/Parsedown.php on line 715

Deprecated: Parsedown::blockTable(): Implicitly marking parameter $Block as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/vendor/erusev/parsedown/Parsedown.php on line 853

Deprecated: Grav\Common\Page\Markdown\Excerpts::__construct(): Implicitly marking parameter $page as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Markdown/Excerpts.php on line 45

Deprecated: Grav\Common\Page\Markdown\Excerpts::__construct(): Implicitly marking parameter $config as nullable is deprecated, the explicit nullable type must be used instead in /home/public/blog/grav-admin/system/src/Grav/Common/Page/Markdown/Excerpts.php on line 45

For my birthday this year, my wonderful wife gave me a Silicon Power 2 TB M.2 SSD, which I requested, love, and recommend. It's both a very reasonable price and extremely fast, so it seemed like the perfect little upgrade for my computer until GPU prices come back down. I had previously upgraded my original hard drive to a larger hard drive and then upgraded that to a smaller SSD, so I was familiar with the experience and mostly knew what I was doing.

To start the migration, I just cloned my drive with Clonezilla, like I had before. The ISO I had was (I think) too old to work with my M.2 drive. (It just said Unable to find target partition "nvme0n1p1".) So I booted into a live Linux image, installed Clonezilla, and copied it from there. Everything worked fine. I booted Windows and all my drives were there. It was complaining that the cloned drives had the same UUIDs as the old ones, but that didn't sound hard to fix.

However, my partitions were still tiny and only filling 13% of my new drive. I rebooted back to Ubuntu to move it away and make both drives larger. After a small skerfuffle of GParted Bug: A partition cannot end (3651028992) after the end of the device (%2), which was just caused by rounding to the nearest MiB rounding the partition off the end of the drive (so I made 1 MiB empty between), I had my Linux partition resized. (It failed to resize NTFS for who knows why.)

However, I wasn't happy with just one Linux distribution. If I had been, I probably could have just resized C: in Windows and been at peace. Yet I had heard neat things about Nix and wanted to try out NixOS. It had sounded like a more practical alternative to Gentoo, so I downloaded and tried to install it. However, NixOs is unable to install an EFI on a drive with an MBR. (A Master Boot Record is a small partition at the start of a drive, describing the partitions on the drive and how to boot. An Extensible Firmware Interface is the new way to describe how to boot, typically used with the new GPT partition table.)

Since I had always been cloning my C: partition from drive to drive over the years, I never replaced the old MBR with a GPT. I figured now's as good a time as ever, so I used gdisk to convert it.

What a terrible mistake.

I installed NixOS, however it installed systemd-boot. I only really ever have used GRUB, and that's the only bootloader I have tools to edit, so I ran boot-repair and installed GRUB. This turned out to not actually remove systemd-boot and just made nothing boot, but running bootctl remove removed systemd-boot and everything was seemingly good again.

But…if you convert a drive containing Windows to UEFI without doing it with Windows' mbr2gpt, it seems there's no way to convert Windows anymore. Windows just said "Your PC/Device needs to be repaired. A required device isn't connected or can't be accessed. Error code: 0xc000000e" So, despite having spent hours converting it to GPT and getting Linux working thereon, for Windows' sake, I had to convert it back to MBR.

Thankfully, gdisk supports this too. It goes both ways. However, it does not handle it well. I had the following setup of partitions:

  1. Windows System Reserved partition
  2. Windows main "boot" partition
  3. EFI partition
  4. NixOS partition
  5. Ubuntu partition
  6. Linux swap partition

Since MBR can only handle four logical partitions, I had had my Linux partitions in an extended partition before converting to GPT. I had heard gdisk would handle creating extended partitions, but, uh…it did not. Instead of, say, putting the last three partitions into an extended partition, it instead just deleted them without warning.

This was more than a little scary to me. I always had the backup of copying it from my prior SSD again, but I decided on a riskier approach: remaking the partitions manually. Since gdisk just printed out all the info about the partitions, I could type that into the similarly-named fdisk and theoretically it should work, since all the data was there, just not the partition table.

Thankfully I left a little space for an extended partition's overhead, and this plan actually worked—probably my best performance in this whole debacle.

This didn't magically fix Windows's boot partition, so I had to still repair it from a Windows live image. I quickly threw a Windows 10 ISO onto my USB with Ventoy, which I love, but when I booted it, it said Status: 0xc000014c Info: The Boot Configuration Data for your PC is missing or contains errors. This took me quite a while to troubleshoot. There didn't seem to be any reason for it. I ran sha256sum on the ISO, and it didn't match. I copied it over again, and the same thing happened. It turned out that I was restarting too soon. As soon as Nautilus said it was copied, I restarted the computer. Yet just because it said it was copied, didn't mean it was. It was copied to the cached version of the drive, but it wasn't actually synced. I waited a little bit longer after copying and ensured the hash maybe, and I was good to go. Alternatively, I could have run sync before restarting.

With a correct copy of Windows on the drive, I was able to repair the Windows BIOS bootloader without too much issue by copying a new copy from the flash drive using bcdboot C:\windows /s S:, where S: is the letter I assigned the System Reserved partition using diskpart.

This worked, and I was able to boot into Windows again. However, my drive was still using MBR, so I was largely just back to square one. I figured it was better to plunge back in and try to convert it to GPT now while I kind of knew what I was doing rather than kick the can down the road another few years until my partition outgrew MBR's 2 TB limit. I tried to run mbr2gpt again, but apparently it can't work if a drive has extended partitions. I didn't need any EFI partition for now, so that's one down; by this point, I was pretty fed up with NixOS for a few reasons, so I was fine just deleting that; and then the swap partition was easy to remake and didn't need to be preserved. Yet even after trimming the number of partitions down and making everything a primary partition, mbr2gpt still didn't work. I'm not sure why copying the bootloader over didn't fix it 100%, but Windows still wasn't happy with the BCD.

I rebooted yet again to the Windows Recovery Environment terminal and began running the commands Google recommended. Nothing worked. No matter what commands I ran, nothing seemed to help. In fact, nothing seemed to do anything.

The explanation for this is that most disk utilities on Windows only work with one drive. Since I had multiple SSDs, it was only ever targeting my old drive with most of the commands. mbr2gpt lets you specify a drive, bcdboot and bcdedit do too, but bootrec doesn't. Its only flags are for which operation you want it to do. bcdedit is powerful, but no matter what I did with it, mbr2gpt wasn't happy. So the only way I had to repair my BCD was to remove every other drive so that the drive I wanted would be disk 0 and I could use bootrec. I didn't want to open my case again and physically unplug everything and then have to plug it back in, but I rebooted into my motherboard's UEFI interface and disabled all my other drives there (except the flash drive). Then, after booting back into the Windows Recovery Environment, I ran bootrec /rebuildbcd and then mbr2gpt /convert /disk:0.

This finally worked. I saw those three beautiful words: "Conversion completed successfully" It might be worth noting but I also deleted my Linux partition off the drive first and cloned it back over after. I don't think this was required, but I can't be sure how Windows would handle it.

I then rebooted excitedly, aaand it gave me a new error:

Your PC couldn't start properly

After multiple tries, the operating system on your PC failed to start, so it needs to be repaired.

Error code: 0xc0000001

This makes it sound like there's something wrong with the BCD even though it was successfully converted to an EFI. Thankfully that is not the case. What's actually happening here is that the motherboard is still in BIOS mode, so it's trying to load Windows's MBR, which no longer exists fully. All you have to do to fix this is going to your motherboard settings and enable UEFI boot instead. Windows then finally boots correctly off a GPT drive.

Again, in theory, there's nothing stopping you from booting with a BIOS on a GPT drive (since it has a protective MBR) or an EFI on an MBR drive, but in practice nothing seems to support this, especially not Windows. MBR and BIOS support have been maintained as legacy options, and GPT and EFI are the intended systems. No one seems to have taken the effort to enable mixing and matching these together. If you really knew what you were doing though, you could probably hack something together, but I only know enough to be dangerous, and frankly, I don't see a reason to do that.

Anyway, booting Windows seemed to be working now, but emphasis on "seemed". And even though I was disappointed in NixOS, I still wanted to continue dual booting with Ubuntu. So I booted into boot-repair yet again and ran it. Was a mistake for again while everything seemed to work fine, there was an underlying problem which I soon discovered.

See, cloning a drive is very thorough. Not only did it clone the partitions, the data therein, and the partition table, but it even clones the <