変数に何が入っているか調べたい

参考

Jekyllでは生成されたサイトに対する情報は、グローバル変数siteを通してアクセスできます。 siteがどんな情報を持っているか、ちょっと見てみます。index.mdに戻って、次の一行を追加します。

---
layout: default
title: Oh! My JK
---
#Welcome to my JK Home Page!

{{ site }}  <!-- ここを追加 -->

これが動かなかったので、変数をDumpする方法を調べた

inspectフィルタ

Inspect
Convert an object into its String representation for debugging.
{{ some_var | inspect }}

とのことで、inspectフィルタで表示されるらしい。

{{ page | inspect }}

実行してみる

{ "content": "## 変数に何が入っているか調べたい\n\n参考\n\n* Jekyllいつやるの?ジキやルの?今でしょ!\n* Templates - Jekyll\n\n{% capture text %}\nJekyllでは生成されたサイトに対する情報は、グローバル変数siteを通してアクセスできます。\nsiteがどんな情報を持っているか、ちょっと見てみます。index.mdに戻って、次の一行を追加します。\n\n{% raw %}\n\n---\nlayout: default\ntitle: Oh! My JK\n---\n#Welcome to my JK Home Page!\n\n{{ site }} &lt;!-- ここを追加 --&gt;\n\n{% endraw %}\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source=’\nJekyllいつやるの?ジキやルの?今でしょ!\n’ | markdownify | remove: ‘<p>’ | remove: ‘</p>’ %}\n{% include cite.html text=text source=source %}\n\n\nこれが動かなかったので、変数をDumpする方法を調べた\n\n## inspectフィルタ\n\n{% capture text %}\n\n{% raw %}\nInspect\n: Convert an object into its String representation for debugging.\n: {{ some_var | inspect }}\n{% endraw %}\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source=’\nTemplates - Jekyll\n’ | markdownify | remove: ‘<p>’ | remove: ‘</p>’ %}\n{% include cite.html text=text source=source %}\n\nとのことで、inspectフィルタで表示されるらしい。\n\n{% raw %}\nliquid\n{{ page | inspect }}\n\n{% endraw %}\n\n実行してみる\n\n> {{ page | inspect }}\n", "output": null, "excerpt": "<h2 id=\"変数に何が入っているか調べたい\">変数に何が入っているか調べたい</h2>\n\n", "previous": { "content": "<h2 id=\"さすがにみづらい\">さすがにみづらい</h2>\n\n<p>post用のレイアウトを作ってなかったがさすがにみづらいので仮で作った。</p>\n\n<p>参考:</p>\n\n<ul>\n <li><a href=\"http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/\">Jekyllいつやるの?ジキやルの?今でしょ!</a></li>\n <li><a href=\"http://getbootstrap.com/components/#page-header\">Components - Bootstrap#Page header</a></li>\n <li><a href=\"http://getbootstrap.com/css/#description\">CSS - Bootstrap#description</a></li>\n <li><a href=\"https://shopify.github.io/liquid/filters/date/\">date – Liquid template language</a></li>\n</ul>\n\n<p>結果として今はこんな感じ</p>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>—\nlayout : default\n—\n\n<span class=\"nt\">&lt;header</span> <span class=\"na\">class=</span><span class=\"s\">\"page-header\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;h1&gt;</span>{{page.title}}<span class=\"nt\">&lt;/h1&gt;</span>\n <span class=\"nt\">&lt;dl</span> <span class=\"na\">class=</span><span class=\"s\">\"dl-horizontal\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;dt&gt;</span>created<span class=\"nt\">&lt;/dt&gt;</span>\n <span class=\"nt\">&lt;dd&gt;</span>{{page.date | date : \"%F\"}}<span class=\"nt\">&lt;/dd&gt;</span>\n <span class=\"nt\">&lt;dt&gt;</span>last change<span class=\"nt\">&lt;/dt&gt;</span>\n <span class=\"nt\">&lt;dd&gt;</span>{{page.lastchange}}<span class=\"nt\">&lt;/dd&gt;</span>\n <span class=\"nt\">&lt;/dl&gt;</span>\n<span class=\"nt\">&lt;/header&gt;</span>\n\n<span class=\"nt\">&lt;div</span> <span class=\"na\">class=</span><span class=\"s\">\"row\"</span><span class=\"nt\">&gt;</span>\n {{ content }}\n<span class=\"nt\">&lt;/div&gt;</span>\n</code></pre></div></div>\n\n<p>過程は以下</p>\n\n<h2 id=\"jekyllでpost用のレイアウトを作る\">Jekyllでpost用のレイアウトを作る</h2>\n\n<blockquote class=\"blockquote\">\n \n<h3 id=\"postのレイアウト\">Postのレイアウト</h3>\n\n<p>次に記事にも専用のレイアウトを用意します。layoutsディレクトリ以下に<code class=\"highlighter-rouge\">post.html</code>を作って、次のような内容にします。</p>\n\n<div class=\"language-sh highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>% touch _layouts/post.html\n</code></pre></div></div>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>—\nlayout: default\n—\n<span class=\"nt\">&lt;header&gt;</span>\n <span class=\"nt\">&lt;div&gt;</span>{{ page.date | date_to_string }}<span class=\"nt\">&lt;/div&gt;</span>\n <span class=\"nt\">&lt;h1&gt;</span>{{ page.title }}<span class=\"nt\">&lt;/h1&gt;</span>\n<span class=\"nt\">&lt;/header&gt;</span>\n\n<span class=\"nt\">&lt;div</span> <span class=\"na\">class=</span><span class=\"s\">‘main’</span><span class=\"nt\">&gt;</span>\n {{ content }}\n<span class=\"nt\">&lt;/div&gt;</span>\n\n<span class=\"nt\">&lt;footer&gt;</span>\n <span class=\"nt\">&lt;p&gt;</span>- rendered with post template -<span class=\"nt\">&lt;/p&gt;</span>\n<span class=\"nt\">&lt;/footer&gt;</span>\n</code></pre></div></div>\n\n<p>Front-Matterでdefault.htmlを読み込むようにします。これによりpost.htmlはdefault.htmlのサブテンプレートになります。header部分に投稿日とタイトルを表示するようLiquidで指定します。</p>\n\n<p>なお、<code class=\"highlighter-rouge\">{{ page.date | date_to_string }}</code>はJekyllで拡張されたLiquidのフィルターという機能を使って、\n出力の整形を行なっています(<a href=\"http://jekyllrb.com/docs/templates/\">Templates</a>)。\ndefault.htmlと同様に、このテンプレートが読み込まれたことを見るために <strong>rendered with post template</strong> を追加しておきます。</p>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/\">Jekyllいつやるの?ジキやルの?今でしょ!</a>\n</cite></footer>\n</blockquote>\n\n<p>これを参考にbootstrap風味にする。</p>\n\n<blockquote class=\"blockquote\">\n \n<h1 id=\"page-header\">Page header</h1>\n\n<p>A simple shell for an h1 to appropriately space out and segment sections of content on a page.\nIt can utilize the h1’s default small element, as well as most other components (with additional styles).</p>\n\n<div class=\"page-header\">\n <h1>Example page header <small>Subtext for header</small></h1>\n</div>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nt\">&lt;div</span> <span class=\"na\">class=</span><span class=\"s\">\"page-header\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;h1&gt;</span>Example page header <span class=\"nt\">&lt;small&gt;</span>Subtext for header<span class=\"nt\">&lt;/small&gt;&lt;/h1&gt;</span>\n<span class=\"nt\">&lt;/div&gt;</span>\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://getbootstrap.com/components/#page-header\">Components - Bootstrap#Page header</a>\n</cite></footer>\n</blockquote>\n\n<p><strong>page-header</strong> クラスがあるので利用する。</p>\n\n<p>他に作成日時と、変更日時を独自に仕込んでいるので入れたい。</p>\n\n<blockquote class=\"blockquote\">\n \n<h4 id=\"horizontal-description\">Horizontal description</h4>\n\n<p>Make terms and descriptions in <code class=\"highlighter-rouge\">&lt;dl&gt;</code> line up side-by-side.\nStarts off stacked like default <code class=\"highlighter-rouge\">&lt;dl&gt;</code>s, but when the navbar expands, so do these.</p>\n\n<dl class=\"dl-horizontal\">\n <dt>Description lists</dt>\n <dd>A description list is perfect for defining terms.</dd>\n <dt>Euismod</dt>\n <dd>\n Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.\n Donec id elit non mi porta gravida at eget metus.\n </dd>\n <dt>Malesuada porta</dt>\n <dd>Etiam porta sem malesuada magna mollis euismod.</dd>\n <dt>Felis euismod semper eget lacinia</dt>\n <dd>\n Fusce dapibus, tellus ac cursus commodo,\n tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.\n </dd>\n</dl>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nt\">&lt;dl</span> <span class=\"na\">class=</span><span class=\"s\">\"dl-horizontal\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;dt&gt;</span>…<span class=\"nt\">&lt;/dt&gt;</span>\n <span class=\"nt\">&lt;dd&gt;</span>…<span class=\"nt\">&lt;/dd&gt;</span>\n<span class=\"nt\">&lt;/dl&gt;</span>\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://getbootstrap.com/css/#description\">CSS - Bootstrap#description</a>\n</cite></footer>\n</blockquote>\n\n<blockquote class=\"blockquote\">\n \n<h1 id=\"date\">date</h1>\n\n<p>Converts a timestamp into another date format.\nThe format for this syntax is the same as <a href=\"http://strftime.net/\">strftime</a>.</p>\n\n<h3 id=\"input\">Input</h3>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>{{ article.published_at | date: \"%a, %b %d, %y\" }}\n</code></pre></div></div>\n\n<h3 id=\"output\">Output</h3>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>Fri, Jul 17, 15\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"https://shopify.github.io/liquid/filters/date/\">date – Liquid template language</a>\n</cite></footer>\n</blockquote>\n\n<p>定義リストとこの書式制御を利用することにした。</p>\n", "output": "<!DOCTYPE html>\n<html lang=\"ja\">\n <head>\n <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \n <meta name=\"keywords\" content=\"bootstrap,jekyll\">\n\n\n <title>Jekyll:postsのレイアウトについて考える</title>\n\n <!– bootstrap and jQuery include –>\n <link rel=\"stylesheet\" href=\"https://leico.github.io/TechnicalNote/css/style.css\">\n <script type=\"text/javascript\" src=\"https://leico.github.io/TechnicalNote/js/jquery-3.1.1.min.js\"></script>\n <script type=\"text/javascript\" src=\"https://leico.github.io/TechnicalNote/js/bootstrap/bootstrap.min.js\"></script>\n <!– bootstrap and jQuery include –>\n\n <!– MathJax include –>\n <script type=\"text/javascript\" src=\"https://leico.github.io/TechnicalNote/js/MathJax/MathJax.js?config=TeX-MML-AM_HTMLorMML\"></script>\n\n <!– Google Analytics –>\n <script>\n (function(i,s,o,g,r,a,m){i[‘GoogleAnalyticsObject’]=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,’script’,’https://www.google-analytics.com/analytics.js’,’ga’);\n \n ga(‘create’, ‘UA-100782315-1’, ‘auto’);\n ga(‘send’, ‘pageview’);\n </script>\n\n <!– Atom feed –>\n <link type=\"application/atom+xml\" rel=\"alternate\" href=\"https://leico.github.io/TechnicalNote/atom.xml\" title=\"TechnicalNote\" />\n</head>\n\n\n <body>\n <div class=\"container\">\n <div class=\"row\">\n\n\n <div class=\"col-md-8\">\n\n <header class=\"page-header\">\n <h1>Jekyll:postsのレイアウトについて考える</h1>\n <div class=\"row\">\n\n <div class=\"col-6\">\n <dl class=\"dl-horizontal\">\n <dt>created</dt>\n <dd>2017-02-03</dd>\n <dt>last change</dt>\n <dd>2017-06-16 23:05:15 +0000</dd>\n </dl>\n </div>\n\n <div class=\"col-6 text-right\">\n <a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?’http’:’https’;if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+’://platform.twitter.com/widgets.js’;fjs.parentNode.insertBefore(js,fjs);}}(document, ‘script’, ‘twitter-wjs’);</script>\n </div>\n\n </div>\n </header>\n\n <div class=\"row\">\n\n <div class=\"col-12\">\n <h2 id=\"さすがにみづらい\">さすがにみづらい</h2>\n\n<p>post用のレイアウトを作ってなかったがさすがにみづらいので仮で作った。</p>\n\n<p>参考:</p>\n\n<ul>\n <li><a href=\"http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/\">Jekyllいつやるの?ジキやルの?今でしょ!</a></li>\n <li><a href=\"http://getbootstrap.com/components/#page-header\">Components - Bootstrap#Page header</a></li>\n <li><a href=\"http://getbootstrap.com/css/#description\">CSS - Bootstrap#description</a></li>\n <li><a href=\"https://shopify.github.io/liquid/filters/date/\">date – Liquid template language</a></li>\n</ul>\n\n<p>結果として今はこんな感じ</p>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>—\nlayout : default\n—\n\n<span class=\"nt\">&lt;header</span> <span class=\"na\">class=</span><span class=\"s\">\"page-header\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;h1&gt;</span>{{page.title}}<span class=\"nt\">&lt;/h1&gt;</span>\n <span class=\"nt\">&lt;dl</span> <span class=\"na\">class=</span><span class=\"s\">\"dl-horizontal\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;dt&gt;</span>created<span class=\"nt\">&lt;/dt&gt;</span>\n <span class=\"nt\">&lt;dd&gt;</span>{{page.date | date : \"%F\"}}<span class=\"nt\">&lt;/dd&gt;</span>\n <span class=\"nt\">&lt;dt&gt;</span>last change<span class=\"nt\">&lt;/dt&gt;</span>\n <span class=\"nt\">&lt;dd&gt;</span>{{page.lastchange}}<span class=\"nt\">&lt;/dd&gt;</span>\n <span class=\"nt\">&lt;/dl&gt;</span>\n<span class=\"nt\">&lt;/header&gt;</span>\n\n<span class=\"nt\">&lt;div</span> <span class=\"na\">class=</span><span class=\"s\">\"row\"</span><span class=\"nt\">&gt;</span>\n {{ content }}\n<span class=\"nt\">&lt;/div&gt;</span>\n</code></pre></div></div>\n\n<p>過程は以下</p>\n\n<h2 id=\"jekyllでpost用のレイアウトを作る\">Jekyllでpost用のレイアウトを作る</h2>\n\n<blockquote class=\"blockquote\">\n \n<h3 id=\"postのレイアウト\">Postのレイアウト</h3>\n\n<p>次に記事にも専用のレイアウトを用意します。_layoutsディレクトリ以下に<code class=\"highlighter-rouge\">post.html</code>を作って、次のような内容にします。</p>\n\n<div class=\"language-sh highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>% touch _layouts/post.html\n</code></pre></div></div>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>—\nlayout: default\n—\n<span class=\"nt\">&lt;header&gt;</span>\n <span class=\"nt\">&lt;div&gt;</span>{{ page.date | date_to_string }}<span class=\"nt\">&lt;/div&gt;</span>\n <span class=\"nt\">&lt;h1&gt;</span>{{ page.title }}<span class=\"nt\">&lt;/h1&gt;</span>\n<span class=\"nt\">&lt;/header&gt;</span>\n\n<span class=\"nt\">&lt;div</span> <span class=\"na\">class=</span><span class=\"s\">‘main’</span><span class=\"nt\">&gt;</span>\n {{ content }}\n<span class=\"nt\">&lt;/div&gt;</span>\n\n<span class=\"nt\">&lt;footer&gt;</span>\n <span class=\"nt\">&lt;p&gt;</span>- rendered with post template -<span class=\"nt\">&lt;/p&gt;</span>\n<span class=\"nt\">&lt;/footer&gt;</span>\n</code></pre></div></div>\n\n<p>Front-Matterでdefault.htmlを読み込むようにします。これによりpost.htmlはdefault.htmlのサブテンプレートになります。header部分に投稿日とタイトルを表示するようLiquidで指定します。</p>\n\n<p>なお、<code class=\"highlighter-rouge\">{{ page.date | date_to_string }}</code>はJekyllで拡張されたLiquidのフィルターという機能を使って、\n出力の整形を行なっています(<a href=\"http://jekyllrb.com/docs/templates/\">Templates</a>)。\ndefault.htmlと同様に、このテンプレートが読み込まれたことを見るために <strong>rendered with post template</strong> を追加しておきます。</p>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/\">Jekyllいつやるの?ジキやルの?今でしょ!</a>\n</cite></footer>\n</blockquote>\n\n<p>これを参考にbootstrap風味にする。</p>\n\n<blockquote class=\"blockquote\">\n \n<h1 id=\"page-header\">Page header</h1>\n\n<p>A simple shell for an h1 to appropriately space out and segment sections of content on a page.\nIt can utilize the h1’s default small element, as well as most other components (with additional styles).</p>\n\n<div class=\"page-header\">\n <h1>Example page header <small>Subtext for header</small>\n</h1>\n</div>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nt\">&lt;div</span> <span class=\"na\">class=</span><span class=\"s\">\"page-header\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;h1&gt;</span>Example page header <span class=\"nt\">&lt;small&gt;</span>Subtext for header<span class=\"nt\">&lt;/small&gt;&lt;/h1&gt;</span>\n<span class=\"nt\">&lt;/div&gt;</span>\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://getbootstrap.com/components/#page-header\">Components - Bootstrap#Page header</a>\n</cite></footer>\n</blockquote>\n\n<p><strong>page-header</strong> クラスがあるので利用する。</p>\n\n<p>他に作成日時と、変更日時を独自に仕込んでいるので入れたい。</p>\n\n<blockquote class=\"blockquote\">\n \n<h4 id=\"horizontal-description\">Horizontal description</h4>\n\n<p>Make terms and descriptions in <code class=\"highlighter-rouge\">&lt;dl&gt;</code> line up side-by-side.\nStarts off stacked like default <code class=\"highlighter-rouge\">&lt;dl&gt;</code>s, but when the navbar expands, so do these.</p>\n\n<dl class=\"dl-horizontal\">\n <dt>Description lists</dt>\n <dd>A description list is perfect for defining terms.</dd>\n <dt>Euismod</dt>\n <dd>\n Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.\n Donec id elit non mi porta gravida at eget metus.\n </dd>\n <dt>Malesuada porta</dt>\n <dd>Etiam porta sem malesuada magna mollis euismod.</dd>\n <dt>Felis euismod semper eget lacinia</dt>\n <dd>\n Fusce dapibus, tellus ac cursus commodo,\n tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.\n </dd>\n</dl>\n\n<div class=\"language-html highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nt\">&lt;dl</span> <span class=\"na\">class=</span><span class=\"s\">\"dl-horizontal\"</span><span class=\"nt\">&gt;</span>\n <span class=\"nt\">&lt;dt&gt;</span>…<span class=\"nt\">&lt;/dt&gt;</span>\n <span class=\"nt\">&lt;dd&gt;</span>…<span class=\"nt\">&lt;/dd&gt;</span>\n<span class=\"nt\">&lt;/dl&gt;</span>\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://getbootstrap.com/css/#description\">CSS - Bootstrap#description</a>\n</cite></footer>\n</blockquote>\n\n<blockquote class=\"blockquote\">\n \n<h1 id=\"date\">date</h1>\n\n<p>Converts a timestamp into another date format.\nThe format for this syntax is the same as <a href=\"http://strftime.net/\">strftime</a>.</p>\n\n<h3 id=\"input\">Input</h3>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>{{ article.published_at | date: \"%a, %b %d, %y\" }}\n</code></pre></div></div>\n\n<h3 id=\"output\">Output</h3>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>Fri, Jul 17, 15\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"https://shopify.github.io/liquid/filters/date/\">date – Liquid template language</a>\n</cite></footer>\n</blockquote>\n\n<p>定義リストとこの書式制御を利用することにした。</p>\n\n </div>\n\n <div class=\"col-12\">\n <hr>\n <a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?’http’:’https’;if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+’://platform.twitter.com/widgets.js’;fjs.parentNode.insertBefore(js,fjs);}}(document, ‘script’, ‘twitter-wjs’);</script>\n </div>\n\n </div>\n\n </div>\n \n <div class=\"col-md-4\">\n <h2>\n <a href=\"https://leico.github.io/TechnicalNote/\">\n Technical Note\n </a>\n </h2>\n\n \n\n \n\n <h3>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll\">github pages &amp; Jekyll Top</a>\n </h3>\n\n \n <h3>github pagesの管理</h3>\n <ul>\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/update-github-page\">github-pages環境のアップデート</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/fix-3.4.3\">github-pages jekyll 3.4.3不具合の対処法</a>\n </li>\n\n \n </ul>\n \n <h3>Jekyllの導入</h3>\n <ul>\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/rbenv-homebrew\">rbenvをHomebrewからインストールする</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/Ruby-research\">Ruby開発環境についての調査</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/rbenv-install\">rbenvをアプリケーションフォルダにインストールする</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/rbenv-usage\">rbenvコマンドの利用方法</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/bundle-usage\">bundlerの利用方法</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/jekyll-usage\">jekyllの利用方法</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/github-pages-debug\">Github Pagesのデバッグ環境を整える</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/github-pages-generator\">Github Pages Gemを、複数のプロジェクトからエイリアスで参照する</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/worth-bundle-install\">gemを間違えてグローバルにインストールしてしまった場合</a>\n </li>\n\n \n </ul>\n \n <h3>Install frameworks</h3>\n <ul>\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/jekyll-bootstrap4-submodule\">Github Pagesにsubmoduleとしてbootstrapを入れる</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/mathjax-install\">MathJaxをインストールする</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/jekyll-bootstrap-install\">Github Pagesにbootstrap sassをインストールする</a>\n </li>\n\n \n </ul>\n \n <h3>Jekyll variables</h3>\n <ul>\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/collection-variable\">Collection変数を調査する</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/site-variables\">site変数の内容調査</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/display-value\">変数の中身をページに表示する</a>\n </li>\n\n \n </ul>\n \n <h3>Tips</h3>\n <ul>\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/jekyll-syntaxhighlight\">Jekyllのシンタックスハイライトのテーマを作って変更する</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/cite-include\">Jekyll &amp; Bootstrapで引用の書きかた</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/jekyll-atom\">Collectiosの変更に追従するAtomフィードを設置する</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/liquid-raw\">liquidのソースコードを表示する</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/page-menu\">ページメニューの作り方</a>\n </li>\n\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/Jekyll/post-layout\">Jekyll:postsのレイアウトについて考える</a>\n </li>\n\n \n </ul>\n \n </div>\n \n\n</div>\n\n </div>\n <footer class=\"container\">\n <hr>\n <div class=\"row\">\n <div class=\"col\">\n <p class=\"text-right\">\n <a href=\"https://leico.github.io/TechnicalNote/atom.xml\">Atom</a>\n </p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-8\">\n <div class=\"row\">\n <div class=\"col-md-4\">\n <figure class=\"figure\">\n <img src=\"https://leico.github.io/TechnicalNote/image/logo.png\" class=\"figure-img rounded\" width=\"200px\" height=\"auto\" alt=\"\">\n </figure>\n </div>\n <div class=\"col-md-4\">\n <h5>contact</h5>\n <ul class=\"list-unstyled\">\n <li> <a href=\"https://github.com/leico\" class=\"user-mention\">@leico</a> </li>\n <li> <a href=\"https://www.twitter.com/1_0101\">twitter</a>\n</li>\n <li> <a href=\"https://leico.github.io\">web</a>\n </li>\n</ul>\n </div>\n </div>\n </div>\n <div class=\"col-md-4\">\n <h5>Merchandise/Schwags</h5>\n <p><small class=\"text-muted\">支援してくれるとうれしい</small></p>\n <iframe frameborder=\"0\" height=\"220\" width=\"160\" src=\"https://leico.official.ec/items/6694858/widget/small\"></iframe>\n </div>\n </div>\n <p class=\"text-right\">\n <small class=\"text-muted\">© 2017 leico.</small>\n </p>\n\n</footer>\n\n </body>\n</html>\n", "excerpt": "<h2 id=\"さすがにみづらい\">さすがにみづらい</h2>\n\n", "previous": { "content": "<h2 id=\"きっかけ\">きっかけ</h2>\n\n<p>家で半年くらい動いていたRaspberry PiのMicro SDが死んだ。\n原因は誤って起動中にSDカードを抜いてしまったことだろう。確実に。</p>\n\n<p>壊れ方がおもしろくて、カードの内容はちゃんと読める。\n起動はするのだが、書き込めない。ファイルの更新とかが一切反映されない。</p>\n\n<p>不幸中の幸い、ある時点までのデータは読めるのでこれを元にバックアップを取り、\n新しいMicro SDにコピーすることにした。</p>\n\n<p>参考</p>\n\n<ul>\n <li><a href=\"http://karaage.hatenadiary.jp/entry/2015/06/09/080000\">MacでRaspberry PiのSDカードをハードコピー(バックアップ)</a></li>\n <li><a href=\"http://5-seasons.blogspot.jp/2010/05/macdd.html\">5 Seasons: Macでddコマンド。</a></li>\n <li><a href=\"http://myboom.mkch.net/modules/pukiwiki/171.html\">Raspberry Piで大きな容量のSDカードから小さな容量のSDカードへまるごとコピーする</a></li>\n <li><a href=\"http://memo.saitodev.com/home/virtualbox/\">VirtualBox | saito’s memo</a></li>\n <li><a href=\"https://www.velocihost.net/clients/knowledgebase/29/Fix-the-apt-get-install-error-Media-change-please-insert-the-disc-labeled–on-your-Linux-VPS.html\">Fix the apt-get install error: “Media change: please insert the disc labeled …” on your Linux VPS</a></li>\n <li><a href=\"https://wiki.debian.org/SourcesList\">SourcesList - Debian Wiki</a></li>\n</ul>\n\n<h2 id=\"リカバリー方法\">リカバリー方法</h2>\n\n<p>Raspberry Piのデータを抜き出して新しいMicro SDにコピーするのだが、\n新しいMicro SDの容量が元のMicro SDより少しでも小さいとコピーできない。</p>\n\n<p>コピーするためにMicro SDのデータに作られているパーティションのサイズを変更しなければならない。</p>\n\n<p>パーティションを変更する方法として、VirtualBox VM上のDebianでGPartedを動かすことにした。</p>\n\n<p>VirtualBoxでRaspberry PiのSDを読めるようにしなければならないため、\n途中SDから抜き出したデータをVirtualBoxのディスクデータに変換しなければならない。</p>\n\n<p>また、復元先のMicro SDに正常に書き込めるように、復元先と同じサイズかそれ以下のディスクイメージを作る必要がある。\nもちろん、こちらもVirtualBox用ディスクデータから変換する。</p>\n\n<p>結果、ざっくりとした手順はこうなる。</p>\n\n<ol>\n <li>Micro SDからRaspberry PiのRAWデータを抜き出す\n <ul>\n <li><code class=\"highlighter-rouge\">dd</code>コマンドで抜き出す</li>\n </ul>\n </li>\n <li>Raspberry PiのRAWデータをvdiファイルに変換する\n <ul>\n <li><code class=\"highlighter-rouge\">VBoxManage</code>を使う</li>\n </ul>\n </li>\n <li>復元先のMicro SDのイメージを用意する\n <ul>\n <li>こちらも空の状態で一旦<code class=\"highlighter-rouge\">dd</code>で抜き出した</li>\n </ul>\n </li>\n <li>復元先のデータをvdiファイルに変換する</li>\n <li>VirtualBoxにDebianを用意する\n <ul>\n <li>osboxes.orgのvdiデータを利用した</li>\n <li>Raspberry Pi、復元先のディスクをDebianに追加する</li>\n </ul>\n </li>\n <li>Debianにgpartedをインストールする\n <ol>\n <li><code class=\"highlighter-rouge\">/etc/apt/sources.list</code>を変更する</li>\n <li>Debianを最新の状態にする</li>\n <li>gpartedをインストールする</li>\n </ol>\n </li>\n <li>Raspberry Piのパーティションサイズを変更する</li>\n <li>Raspberry Piのパーティションを復元先のディスクにコピーする</li>\n <li>復元先のサイズにパーティションを拡張する</li>\n <li>復元先のvdiファイルをディスクイメージに戻す</li>\n <li>復元先のディスクイメージをMicro SDに書き込む\n <ul>\n <li>こちらも<code class=\"highlighter-rouge\">dd</code>コマンドを用いる</li>\n </ul>\n </li>\n</ol>\n\n<h2 id=\"micro-sdからraspberry-piのrawデータを抜き出す\">Micro SDからRaspberry PiのRAWデータを抜き出す</h2>\n\n<p>まずはRaspberry Pi のMicro SDがどこに割り当てられているか確認する。\n確認方法は、Macでは<code class=\"highlighter-rouge\">diskutil list</code>が利用できる。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>diskutil list\n—\n/dev/disk2 (external, physical):\n #: TYPE NAME SIZE IDENTIFIER\n 0: FDisk_partition_scheme *7.9 GB disk2\n 1: DOS_FAT_32 boot 78.6 MB disk2s1\n 2: Linux 7.9 GB disk2s3\n</code></pre></div></div>\n\n<p>今回の場合<code class=\"highlighter-rouge\">/dev/disk2</code>がRaspberry PiのMicro SDだった。</p>\n\n<p>ディスク番号が判明したところで自動マウントされている<code class=\"highlighter-rouge\">boot</code>をアンマウントする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>diskutil unmount /Volumes/boot\nVolume boot on disk2s1 unmounted\n</code></pre></div></div>\n\n<p>アンマウントできたので、データを吸い出す。</p>\n\n<blockquote class=\"blockquote\">\n \n<h4 id=\"イメージ読み出し\">イメージ読み出し</h4>\n\n<p>以下は/dev/disk2がSDドライブの場合の例。以下のコマンドでSDカードの中身をRPi.imgというイメージファイルに読み出します。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>$ sudo dd if=/dev/disk2 of=~/RPi.img\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://karaage.hatenadiary.jp/entry/2015/06/09/080000\">MacでRaspberry PiのSDカードをハードコピー(バックアップ)</a>\n</cite></footer>\n</blockquote>\n\n<blockquote class=\"blockquote\">\n \n<p>でも、Linux君達とは少し違うところもあるようで、</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>Ritsu:Desktop tetsu$ dd if=/dev/zero of=test bs=1M count=10\ndd: bs: illegal numeric value\n</code></pre></div></div>\n\n<p>と怒られてしまいました。(;´Д`)</p>\n\n<hr />\n\n<p>10MBのデータファイルを作成する場合は、</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>% dd if=/dev/zero of=test bs=1024000 count=10 \n\n10+0 records in\n10+0 records out\n10240000 bytes transferred in 0.105885 secs (96708667 bytes/sec)\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://5-seasons.blogspot.jp/2010/05/macdd.html\">5 Seasons: Macでddコマンド。</a>\n</cite></footer>\n</blockquote>\n\n<p>ということなので、こうする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>dd if=/dev/rdisk2 of=~/backup.img bs=1024000\n</code></pre></div></div>\n\n<p><strong>/dev/disk2</strong> ではなく <strong>/dev/rdisk2</strong> にしている。ディスク番号の前に <strong>r</strong> をつけると\nRaw状態で読み書きができるようになる。 <strong>r</strong> なしの場合、OS側が安全に読み書きできるように\n余分な処理を入れるため遅い。</p>\n\n<h2 id=\"小さいmicor-sdへ移行するための加工\">小さいMicor SDへ移行するための加工</h2>\n\n<blockquote class=\"blockquote\">\n \n<p>今回は、16GBのSDカード(実際は16GBのマイクロSDカード)から8GBのSDカードへまるごとコピーしてみました。\nもちろんコピー元のSDカードでコピー先のSDカードの容量を超えて使用しているとコピーはできません。\n今回は、コピー元のパーティションサイズを縮小してコピー先へコピーします。</p>\n\n<p>コピーするにはGpartedというフリーのパーティション編集ツールをつかいます。\nGpartedを使い慣れている方なら以下の説明は不要かもしれません。</p>\n\n<p>Raspberry PiにつながるUSBのCD/DVDなどがあればRaspberry Pi上でもできると思いますが、もってないのでパソコン上で行いました。\nパソコン上で行うには、SDカードのリード/ライトできるUSBアダプタなど2つ(ソース、ディスティネーション)必要です。</p>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://myboom.mkch.net/modules/pukiwiki/171.html\">Raspberry Piで大きな容量のSDカードから小さな容量のSDカードへまるごとコピーする</a>\n</cite></footer>\n</blockquote>\n\n<p>検索してみると他にもRaspberry Piのパーティションを<code class=\"highlighter-rouge\">gparted</code>を用いてサイズ変更している人はそこそこいる。\nこの人はGPartedのLive CDで直接Micro SDからMicro SDへコピーをしているが、\nコンピュータにCDドライブがないので直接コピーができない。</p>\n\n<p>USBメモリも予備がないのでUSBブートも諦め、今回は<a href=\"https://www.virtualbox.org/\">VirtualBox VM</a>でコピーする。</p>\n\n<h2 id=\"raspberry-piのイメージをvdiに変換する\">Raspberry Piのイメージをvdiに変換する</h2>\n\n<p>まずはRaspberry PiのイメージをVirtualBoxが読み込める形式にしなければならない。</p>\n\n<blockquote class=\"blockquote\">\n \n<p>RAWイメージから仮想ハードディスクイメージを作成する</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage convertfromraw sdb.img sdb.vdi –format VDI # VDIフォーマット\nVBoxManage convertfromraw sdb.img sdb.vmdk –format VMDK # VMDKフォーマット\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://memo.saitodev.com/home/virtualbox/\">VirtualBox | saito’s memo</a>\n</cite></footer>\n</blockquote>\n\n<p>初めて知ったがイメージからvdiへ変換するコマンドがVirtualBoxをインストールする際に自動的に入るようだ。\n便利なのでこれを使う。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage convertfromraw backup.img RPi.vdi –format VDI\n</code></pre></div></div>\n\n<p>そして移行先もVirtualBox側で読み込めないとマズいことに気づいた。\nなので移行先をコンピュータに接続。イメージを作り、vdi形式に変換する。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>dd if=/dev/rdisk2 of=~/recover.img bs=1024000\n\n—\n\nVBoxManage convertfromraw recover.img recover.vdi –format VDI\n</code></pre></div></div>\n\n<h2 id=\"virtualboxで動かすosを取得する\">VirtualBoxで動かすOSを取得する</h2>\n\n<p>VirtualBox上でGparted LiveCDを動かす手もあるはずだが、\n対応しているか不明=起動するのかわからない手段ではなく確実な方法で。</p>\n\n<p>VirtualBox上で<a href=\"https://www.debian.org/index.ja.html\">Debian</a>を動かし、\nDebianに<code class=\"highlighter-rouge\">gparted</code>をインストールして実行するようにした。慣れてるOSなので。</p>\n\n<p><a href=\"https://www.ubuntulinux.jp/download\">Ubuntuの場合、仮想マシン向けのハードディスクイメージを配布している</a>\nので、Debianも仮想HDDイメージがないか探したら<a href=\"https://www.osboxes.org/debian/\">OSBoxesが作成、配布しているものを見つけた。</a></p>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/01_osboxes.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/01_osboxes.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>OSBoxesダウンロード画面</p>\n\n<p>画像のところでダウンロードすることができる。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<h2 id=\"virtualboxで仮想マシンを作成\">VirtualBoxで仮想マシンを作成</h2>\n\n<p>別記事にまとめた。</p>\n\n<p><a href=\"https://leico.github.io/TechnicalNote/VirtualBox/VirtualBox-Create-VM\">VirtualBoxで仮想マシンを作成</a></p>\n\n<h2 id=\"仮想マシンにraspberry-piと復元先のmicro-sdファイルを追加する\">仮想マシンにRaspberry Piと復元先のMicro SDファイルを追加する</h2>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/02_virtualbox_config.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/02_virtualbox_config.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>マシンを選択して、左上2番目から設定。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/03_storage_tab.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/03_storage_tab.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>ストレージを追加する</p>\n\n<p>ストレージタブに移動し、SATAコントローラを選択後、サイドバー下部のHDD追加アイコンからハードディスクを追加</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/04_select_vhdd.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/04_select_vhdd.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>MicroSDファイルを追加</p>\n\n<p>先ほど作ったMicro SDのファイルをRaspberry Pi、復元先両方とも追加する。</p>\n\n<p>この時に仮想マシンのディレクトリに入れておくと混乱しない。</p>\n\n<p>仮想マシンは初期設定では<code class=\"highlighter-rouge\">~/VirtualBox VMs/</code>にまとめられている。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/05_config_end.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/05_config_end.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>終了</p>\n\n<p>追加されたら終了し、Debianを起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<h2 id=\"debianの設定\">Debianの設定</h2>\n\n<p>ログインには</p>\n\n<dl>\n <dt>ID</dt>\n <dd>osboxes.org</dd>\n <dt>PASS</dt>\n <dd>osboxes.org</dd>\n</dl>\n\n<p>を使う。</p>\n\n<p>まずは管理者rootになる。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>su root\n</code></pre></div></div>\n\n<p>この状態で<code class=\"highlighter-rouge\">apt-get install</code>すると</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>Media change: please insert the disc labeled …\n</code></pre></div></div>\n\n<p>というエラーが出る。</p>\n\n<blockquote class=\"blockquote\">\n \n<p>Open and modify the file /etc/apt/sources.list</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>vi /etc/apt/sources.list\n</code></pre></div></div>\n\n<p>You will see an output like this:</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>#\n\ndeb cdrom:[Debian GNU/Linux 7.0.0 _Wheezy - Official amd64 CD Binary-1 20130504-14:44]/ wheezy main\n\ndeb http://ftp.us.debian.org/debian/ wheezy main\ndeb-src http://ftp.us.debian.org/debian/ wheezy main\n\ndeb http://security.debian.org/ wheezy/updates main\ndeb-src http://security.debian.org/ wheezy/updates main\n\n# wheezy-updates, previously known as ‘volatile’\ndeb http://ftp.us.debian.org/debian/ wheezy-updates main\ndeb-src http://ftp.us.debian.org/debian/ wheezy-updates main\n~\n</code></pre></div></div>\n\n<p>This file contains all your package sources.\nYou might find a deb cdrom:[Debian GNU/Linux 7.0.0 <em>Wheezy</em> - Official amd64 CD Binary-1 20130504-14:44]/\nwheezy main line indicating a local CDROM as a package source.\nComment it out by placing a # symbol at the beginning of the line and save the file.</p>\n\n<p>You should leave it like this:</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>#\n\n# deb cdrom:[Debian GNU/Linux 7.0.0 Wheezy - Official amd64 CD Binary-1 20130504-14:44]/ wheezy main\n\ndeb http://ftp.us.debian.org/debian/ wheezy main\ndeb-src http://ftp.us.debian.org/debian/ wheezy main\n\ndeb http://security.debian.org/ wheezy/updates main\ndeb-src http://security.debian.org/ wheezy/updates main\n\n# wheezy-updates, previously known as ‘volatile’\ndeb http://ftp.us.debian.org/debian/ wheezy-updates main\ndeb-src http://ftp.us.debian.org/debian/ wheezy-updates main\n~\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"https://www.velocihost.net/clients/knowledgebase/29/Fix-the-apt-get-install-error-Media-change-please-insert-the-disc-labeled–on-your-Linux-VPS.html\">Fix the apt-get install error: “Media change: please insert the disc labeled …” on your Linux VPS</a>\n</cite></footer>\n</blockquote>\n\n<p><code class=\"highlighter-rouge\">sources.list</code>をみると、他にもなんか少ない。</p>\n\n<blockquote class=\"blockquote\">\n \n<h2 id=\"example-sourceslist\">Example sources.list</h2>\n\n<p>Below is an example of a <code class=\"highlighter-rouge\">sources.list</code> for Debian 8/Jessie.</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>deb http://httpredir.debian.org/debian jessie main\ndeb-src http://httpredir.debian.org/debian jessie main\n\ndeb http://httpredir.debian.org/debian jessie-updates main\ndeb-src http://httpredir.debian.org/debian jessie-updates main\n\ndeb http://security.debian.org/ jessie/updates main\ndeb-src http://security.debian.org/ jessie/updates main\n</code></pre></div></div>\n\n<p>If you also want the contrib and non-free components, add contrib non-free after main:</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>deb http://httpredir.debian.org/debian jessie main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie main contrib non-free\n\ndeb http://httpredir.debian.org/debian jessie-updates main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free\n\ndeb http://security.debian.org/ jessie/updates main contrib non-free\ndeb-src http://security.debian.org/ jessie/updates main contrib non-free\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"https://wiki.debian.org/SourcesList\">SourcesList - Debian Wiki</a>\n</cite></footer>\n</blockquote>\n\n<p>最終的にこのようにした。Example contrib non-free と同じ。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code># vi /etc/apt/sources.list\n\ndeb http://httpredir.debian.org/debian jessie main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie main contrib non-free\n\ndeb http://httpredir.debian.org/debian jessie-updates main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free\n\ndeb http://security.debian.org/ jessie/updates main contrib non-free\ndeb-src http://security.debian.org/ jessie/updates main contrib non-free\n</code></pre></div></div>\n\n<p><code class=\"highlighter-rouge\">apt</code>のカタログリストをアップデートし、Debianを最新の状態にする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code># apt-get update\n# apt-get upgrade\n</code></pre></div></div>\n\n<p>やっと、gpartedをインストールする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code># apt-get install gparted\n</code></pre></div></div>\n\n<h2 id=\"gpartedを使ってパーティションサイズ変更とコピー\">gpartedを使ってパーティションサイズ変更とコピー</h2>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/06Activities.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/06_Activities.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>Debianデスクトップ左上<code class=\"highlighter-rouge\">Activities</code>からgpartedを起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/07_select_gparted.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/07_select_gparted.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p><code class=\"highlighter-rouge\">gparted</code>で検索し、起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/08_authentication.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/08_authentication.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>パーティション操作を行うので、管理者権限での実行を求められる。</p>\n\n<p>管理者パスワードを入れて認証する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/09_boot_gparted.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/09_boot_gparted.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>gpartedが起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/10_select_RPi.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/10_select_RPi.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>まずは元々Raspberry Piが入っているディスクを選択する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/11_RPi_resize.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/11_RPi_resize.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>復元先に移動できるサイズにするために、\nRaspberry Pi本体のデータが入っているパーティションのサイズを変更する。</p>\n\n<p><code class=\"highlighter-rouge\">Resize/Move the selected partition</code>を選択</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/12_RPi_reduction.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/12_RPi_reduction.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>パーティション右端をドラッグして復元先に収まりそうなサイズに縮小する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/13_boot_copy.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/13_boot_copy.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>変更が完了したら各々のパーティションを復元先にコピーする。</p>\n\n<p>まずはbootをコピーし</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/14_select_recover.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/14_select_recover.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>復元先を選択し</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/15_paste.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/15_paste.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>パーティションを貼り付ける。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/16_paste_boot.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/16_paste_boot.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>貼り付けるとサイズ変更と同じ画面が表示される。</p>\n\n<p>なぜかRaspberry Piのパーティションの先頭4MiB分が使われていないので、\n<code class=\"highlighter-rouge\">Free space preceding (MiB):</code>の部分を <strong>4</strong> に変更する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/17_RPi_copy.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/17_RPi_copy.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n \n<p>PasteしてRaspberry Pi本体のデータもコピーする。</p>\n\n<p>Raspberry Pi本体のパーティションをコピーして</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/18_RPi_paste.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/18_RPi_paste.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>bootの後ろに貼り付ける。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/19_RPi_extend.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/19_RPi_extend.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>貼り付け終了後、パーティション後部に空白がある場合、パーティションをリサイズして埋める。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/20_Apply.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/20_Apply.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>全ての変更を適用</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/21_Progress.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/21_Progress.png\" class=\"img-fluid rounded mx-auto d-block\" />\n </a>\n <div class=\"card-block\">\n <p>パーティションのコピーが行われて、復元先にRaspberry Piがコピーされる。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<h2 id=\"復元先micro-sdをvdiからディスクイメージファイルに変換する\">復元先Micro SDをvdiからディスクイメージファイルに変換する</h2>\n\n<blockquote class=\"blockquote\">\n \n<ul>\n <li>仮想ハードディスクイメージをRAWイメージに変換する</li>\n</ul>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage clonehd sdb.vdi sdb.img –format RAW\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://memo.saitodev.com/home/virtualbox/\">VirtualBox | saito’s memo</a>\n</cite></footer>\n</blockquote>\n\n<p>こうした。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage clonehd ~/VritualBox\ VMs/recover.vdi ~/recover.img –format RAW\n</code></pre></div></div>\n\n<h2 id=\"復元先micro-sdへディスクイメージをコピーする\">復元先Micro SDへディスクイメージをコピーする</h2>\n\n<p>復元先のMicro SDをカードリーダにセットし、</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>dd if=recover.img of=/dev/rdisk2 bs=1024000\n</code></pre></div></div>\n\n<p>を実行する。\nRaspberry Piに刺し、Raspberry Piが起動できれば復元終了</p>\n", "output": "<!DOCTYPE html>\n<html lang=\"ja\">\n <head>\n <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \n <meta name=\"keywords\" content=\"Raspberry Pi,VirtualBox,debian,gparted\">\n\n\n <title>Raspberry Pi:VirtualBoxを使って死んだSDカードからリカバリー</title>\n\n <!– bootstrap and jQuery include –>\n <link rel=\"stylesheet\" href=\"https://leico.github.io/TechnicalNote/css/style.css\">\n <script type=\"text/javascript\" src=\"https://leico.github.io/TechnicalNote/js/jquery-3.1.1.min.js\"></script>\n <script type=\"text/javascript\" src=\"https://leico.github.io/TechnicalNote/js/bootstrap/bootstrap.min.js\"></script>\n <!– bootstrap and jQuery include –>\n\n <!– MathJax include –>\n <script type=\"text/javascript\" src=\"https://leico.github.io/TechnicalNote/js/MathJax/MathJax.js?config=TeX-MML-AM_HTMLorMML\"></script>\n\n <!– Google Analytics –>\n <script>\n (function(i,s,o,g,r,a,m){i[‘GoogleAnalyticsObject’]=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,’script’,’https://www.google-analytics.com/analytics.js’,’ga’);\n \n ga(‘create’, ‘UA-100782315-1’, ‘auto’);\n ga(‘send’, ‘pageview’);\n </script>\n\n <!– Atom feed –>\n <link type=\"application/atom+xml\" rel=\"alternate\" href=\"https://leico.github.io/TechnicalNote/atom.xml\" title=\"TechnicalNote\" />\n</head>\n\n\n <body>\n <div class=\"container\">\n <div class=\"row\">\n\n\n <div class=\"col-md-8\">\n\n <header class=\"page-header\">\n <h1>Raspberry Pi:VirtualBoxを使って死んだSDカードからリカバリー</h1>\n <div class=\"row\">\n\n <div class=\"col-6\">\n <dl class=\"dl-horizontal\">\n <dt>created</dt>\n <dd>2017-02-02</dd>\n <dt>last change</dt>\n <dd>2017-06-17 01:19:04 +0000</dd>\n </dl>\n </div>\n\n <div class=\"col-6 text-right\">\n <a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?’http’:’https’;if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+’://platform.twitter.com/widgets.js’;fjs.parentNode.insertBefore(js,fjs);}}(document, ‘script’, ‘twitter-wjs’);</script>\n </div>\n\n </div>\n </header>\n\n <div class=\"row\">\n\n <div class=\"col-12\">\n <h2 id=\"きっかけ\">きっかけ</h2>\n\n<p>家で半年くらい動いていたRaspberry PiのMicro SDが死んだ。\n原因は誤って起動中にSDカードを抜いてしまったことだろう。確実に。</p>\n\n<p>壊れ方がおもしろくて、カードの内容はちゃんと読める。\n起動はするのだが、書き込めない。ファイルの更新とかが一切反映されない。</p>\n\n<p>不幸中の幸い、ある時点までのデータは読めるのでこれを元にバックアップを取り、\n新しいMicro SDにコピーすることにした。</p>\n\n<p>参考</p>\n\n<ul>\n <li><a href=\"http://karaage.hatenadiary.jp/entry/2015/06/09/080000\">MacでRaspberry PiのSDカードをハードコピー(バックアップ)</a></li>\n <li><a href=\"http://5-seasons.blogspot.jp/2010/05/macdd.html\">5 Seasons: Macでddコマンド。</a></li>\n <li><a href=\"http://myboom.mkch.net/modules/pukiwiki/171.html\">Raspberry Piで大きな容量のSDカードから小さな容量のSDカードへまるごとコピーする</a></li>\n <li><a href=\"http://memo.saitodev.com/home/virtualbox/\">VirtualBox | saito’s memo</a></li>\n <li><a href=\"https://www.velocihost.net/clients/knowledgebase/29/Fix-the-apt-get-install-error-Media-change-please-insert-the-disc-labeled–on-your-Linux-VPS.html\">Fix the apt-get install error: “Media change: please insert the disc labeled …” on your Linux VPS</a></li>\n <li><a href=\"https://wiki.debian.org/SourcesList\">SourcesList - Debian Wiki</a></li>\n</ul>\n\n<h2 id=\"リカバリー方法\">リカバリー方法</h2>\n\n<p>Raspberry Piのデータを抜き出して新しいMicro SDにコピーするのだが、\n新しいMicro SDの容量が元のMicro SDより少しでも小さいとコピーできない。</p>\n\n<p>コピーするためにMicro SDのデータに作られているパーティションのサイズを変更しなければならない。</p>\n\n<p>パーティションを変更する方法として、VirtualBox VM上のDebianでGPartedを動かすことにした。</p>\n\n<p>VirtualBoxでRaspberry PiのSDを読めるようにしなければならないため、\n途中SDから抜き出したデータをVirtualBoxのディスクデータに変換しなければならない。</p>\n\n<p>また、復元先のMicro SDに正常に書き込めるように、復元先と同じサイズかそれ以下のディスクイメージを作る必要がある。\nもちろん、こちらもVirtualBox用ディスクデータから変換する。</p>\n\n<p>結果、ざっくりとした手順はこうなる。</p>\n\n<ol>\n <li>Micro SDからRaspberry PiのRAWデータを抜き出す\n <ul>\n <li>\n<code class=\"highlighter-rouge\">dd</code>コマンドで抜き出す</li>\n </ul>\n </li>\n <li>Raspberry PiのRAWデータをvdiファイルに変換する\n <ul>\n <li>\n<code class=\"highlighter-rouge\">VBoxManage</code>を使う</li>\n </ul>\n </li>\n <li>復元先のMicro SDのイメージを用意する\n <ul>\n <li>こちらも空の状態で一旦<code class=\"highlighter-rouge\">dd</code>で抜き出した</li>\n </ul>\n </li>\n <li>復元先のデータをvdiファイルに変換する</li>\n <li>VirtualBoxにDebianを用意する\n <ul>\n <li>osboxes.orgのvdiデータを利用した</li>\n <li>Raspberry Pi、復元先のディスクをDebianに追加する</li>\n </ul>\n </li>\n <li>Debianにgpartedをインストールする\n <ol>\n <li>\n<code class=\"highlighter-rouge\">/etc/apt/sources.list</code>を変更する</li>\n <li>Debianを最新の状態にする</li>\n <li>gpartedをインストールする</li>\n </ol>\n </li>\n <li>Raspberry Piのパーティションサイズを変更する</li>\n <li>Raspberry Piのパーティションを復元先のディスクにコピーする</li>\n <li>復元先のサイズにパーティションを拡張する</li>\n <li>復元先のvdiファイルをディスクイメージに戻す</li>\n <li>復元先のディスクイメージをMicro SDに書き込む\n <ul>\n <li>こちらも<code class=\"highlighter-rouge\">dd</code>コマンドを用いる</li>\n </ul>\n </li>\n</ol>\n\n<h2 id=\"micro-sdからraspberry-piのrawデータを抜き出す\">Micro SDからRaspberry PiのRAWデータを抜き出す</h2>\n\n<p>まずはRaspberry Pi のMicro SDがどこに割り当てられているか確認する。\n確認方法は、Macでは<code class=\"highlighter-rouge\">diskutil list</code>が利用できる。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>diskutil list\n—\n/dev/disk2 (external, physical):\n #: TYPE NAME SIZE IDENTIFIER\n 0: FDisk_partition_scheme *7.9 GB disk2\n 1: DOS_FAT_32 boot 78.6 MB disk2s1\n 2: Linux 7.9 GB disk2s3\n</code></pre></div></div>\n\n<p>今回の場合<code class=\"highlighter-rouge\">/dev/disk2</code>がRaspberry PiのMicro SDだった。</p>\n\n<p>ディスク番号が判明したところで自動マウントされている<code class=\"highlighter-rouge\">boot</code>をアンマウントする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>diskutil unmount /Volumes/boot\nVolume boot on disk2s1 unmounted\n</code></pre></div></div>\n\n<p>アンマウントできたので、データを吸い出す。</p>\n\n<blockquote class=\"blockquote\">\n \n<h4 id=\"イメージ読み出し\">イメージ読み出し</h4>\n\n<p>以下は/dev/disk2がSDドライブの場合の例。以下のコマンドでSDカードの中身をRPi.imgというイメージファイルに読み出します。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>$ sudo dd if=/dev/disk2 of=~/RPi.img\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://karaage.hatenadiary.jp/entry/2015/06/09/080000\">MacでRaspberry PiのSDカードをハードコピー(バックアップ)</a>\n</cite></footer>\n</blockquote>\n\n<blockquote class=\"blockquote\">\n \n<p>でも、Linux君達とは少し違うところもあるようで、</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>Ritsu:Desktop tetsu$ dd if=/dev/zero of=test bs=1M count=10\ndd: bs: illegal numeric value\n</code></pre></div></div>\n\n<p>と怒られてしまいました。(;´Д`)</p>\n\n<hr>\n\n<p>10MBのデータファイルを作成する場合は、</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>% dd if=/dev/zero of=test bs=1024000 count=10 \n\n10+0 records in\n10+0 records out\n10240000 bytes transferred in 0.105885 secs (96708667 bytes/sec)\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://5-seasons.blogspot.jp/2010/05/macdd.html\">5 Seasons: Macでddコマンド。</a>\n</cite></footer>\n</blockquote>\n\n<p>ということなので、こうする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>dd if=/dev/rdisk2 of=~/backup.img bs=1024000\n</code></pre></div></div>\n\n<p><strong>/dev/disk2</strong> ではなく <strong>/dev/rdisk2</strong> にしている。ディスク番号の前に <strong>r</strong> をつけると\nRaw状態で読み書きができるようになる。 <strong>r</strong> なしの場合、OS側が安全に読み書きできるように\n余分な処理を入れるため遅い。</p>\n\n<h2 id=\"小さいmicor-sdへ移行するための加工\">小さいMicor SDへ移行するための加工</h2>\n\n<blockquote class=\"blockquote\">\n \n<p>今回は、16GBのSDカード(実際は16GBのマイクロSDカード)から8GBのSDカードへまるごとコピーしてみました。\nもちろんコピー元のSDカードでコピー先のSDカードの容量を超えて使用しているとコピーはできません。\n今回は、コピー元のパーティションサイズを縮小してコピー先へコピーします。</p>\n\n<p>コピーするにはGpartedというフリーのパーティション編集ツールをつかいます。\nGpartedを使い慣れている方なら以下の説明は不要かもしれません。</p>\n\n<p>Raspberry PiにつながるUSBのCD/DVDなどがあればRaspberry Pi上でもできると思いますが、もってないのでパソコン上で行いました。\nパソコン上で行うには、SDカードのリード/ライトできるUSBアダプタなど2つ(ソース、ディスティネーション)必要です。</p>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://myboom.mkch.net/modules/pukiwiki/171.html\">Raspberry Piで大きな容量のSDカードから小さな容量のSDカードへまるごとコピーする</a>\n</cite></footer>\n</blockquote>\n\n<p>検索してみると他にもRaspberry Piのパーティションを<code class=\"highlighter-rouge\">gparted</code>を用いてサイズ変更している人はそこそこいる。\nこの人はGPartedのLive CDで直接Micro SDからMicro SDへコピーをしているが、\nコンピュータにCDドライブがないので直接コピーができない。</p>\n\n<p>USBメモリも予備がないのでUSBブートも諦め、今回は<a href=\"https://www.virtualbox.org/\">VirtualBox VM</a>でコピーする。</p>\n\n<h2 id=\"raspberry-piのイメージをvdiに変換する\">Raspberry Piのイメージをvdiに変換する</h2>\n\n<p>まずはRaspberry PiのイメージをVirtualBoxが読み込める形式にしなければならない。</p>\n\n<blockquote class=\"blockquote\">\n \n<p>RAWイメージから仮想ハードディスクイメージを作成する</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage convertfromraw sdb.img sdb.vdi –format VDI # VDIフォーマット\nVBoxManage convertfromraw sdb.img sdb.vmdk –format VMDK # VMDKフォーマット\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://memo.saitodev.com/home/virtualbox/\">VirtualBox | saito’s memo</a>\n</cite></footer>\n</blockquote>\n\n<p>初めて知ったがイメージからvdiへ変換するコマンドがVirtualBoxをインストールする際に自動的に入るようだ。\n便利なのでこれを使う。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage convertfromraw backup.img RPi.vdi –format VDI\n</code></pre></div></div>\n\n<p>そして移行先もVirtualBox側で読み込めないとマズいことに気づいた。\nなので移行先をコンピュータに接続。イメージを作り、vdi形式に変換する。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>dd if=/dev/rdisk2 of=~/recover.img bs=1024000\n\n—\n\nVBoxManage convertfromraw recover.img recover.vdi –format VDI\n</code></pre></div></div>\n\n<h2 id=\"virtualboxで動かすosを取得する\">VirtualBoxで動かすOSを取得する</h2>\n\n<p>VirtualBox上でGparted LiveCDを動かす手もあるはずだが、\n対応しているか不明=起動するのかわからない手段ではなく確実な方法で。</p>\n\n<p>VirtualBox上で<a href=\"https://www.debian.org/index.ja.html\">Debian</a>を動かし、\nDebianに<code class=\"highlighter-rouge\">gparted</code>をインストールして実行するようにした。慣れてるOSなので。</p>\n\n<p><a href=\"https://www.ubuntulinux.jp/download\">Ubuntuの場合、仮想マシン向けのハードディスクイメージを配布している</a>\nので、Debianも仮想HDDイメージがないか探したら<a href=\"https://www.osboxes.org/debian/\">OSBoxesが作成、配布しているものを見つけた。</a></p>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/01_osboxes.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/01_osboxes.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>OSBoxesダウンロード画面</p>\n\n<p>画像のところでダウンロードすることができる。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<h2 id=\"virtualboxで仮想マシンを作成\">VirtualBoxで仮想マシンを作成</h2>\n\n<p>別記事にまとめた。</p>\n\n<p><a href=\"https://leico.github.io/TechnicalNote/VirtualBox/VirtualBox-Create-VM\">VirtualBoxで仮想マシンを作成</a></p>\n\n<h2 id=\"仮想マシンにraspberry-piと復元先のmicro-sdファイルを追加する\">仮想マシンにRaspberry Piと復元先のMicro SDファイルを追加する</h2>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/02_virtualbox_config.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/02_virtualbox_config.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>マシンを選択して、左上2番目から設定。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/03_storage_tab.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/03_storage_tab.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>ストレージを追加する</p>\n\n<p>ストレージタブに移動し、SATAコントローラを選択後、サイドバー下部のHDD追加アイコンからハードディスクを追加</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/04_select_vhdd.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/04_select_vhdd.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>MicroSDファイルを追加</p>\n\n<p>先ほど作ったMicro SDのファイルをRaspberry Pi、復元先両方とも追加する。</p>\n\n<p>この時に仮想マシンのディレクトリに入れておくと混乱しない。</p>\n\n<p>仮想マシンは初期設定では<code class=\"highlighter-rouge\">~/VirtualBox VMs/</code>にまとめられている。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/05_config_end.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/05_config_end.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>終了</p>\n\n<p>追加されたら終了し、Debianを起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<h2 id=\"debianの設定\">Debianの設定</h2>\n\n<p>ログインには</p>\n\n<dl>\n <dt>ID</dt>\n <dd>osboxes.org</dd>\n <dt>PASS</dt>\n <dd>osboxes.org</dd>\n</dl>\n\n<p>を使う。</p>\n\n<p>まずは管理者rootになる。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>su root\n</code></pre></div></div>\n\n<p>この状態で<code class=\"highlighter-rouge\">apt-get install</code>すると</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>Media change: please insert the disc labeled …\n</code></pre></div></div>\n\n<p>というエラーが出る。</p>\n\n<blockquote class=\"blockquote\">\n \n<p>Open and modify the file /etc/apt/sources.list</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>vi /etc/apt/sources.list\n</code></pre></div></div>\n\n<p>You will see an output like this:</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>#\n\ndeb cdrom:[Debian GNU/Linux 7.0.0 _Wheezy - Official amd64 CD Binary-1 20130504-14:44]/ wheezy main\n\ndeb http://ftp.us.debian.org/debian/ wheezy main\ndeb-src http://ftp.us.debian.org/debian/ wheezy main\n\ndeb http://security.debian.org/ wheezy/updates main\ndeb-src http://security.debian.org/ wheezy/updates main\n\n# wheezy-updates, previously known as ‘volatile’\ndeb http://ftp.us.debian.org/debian/ wheezy-updates main\ndeb-src http://ftp.us.debian.org/debian/ wheezy-updates main\n~\n</code></pre></div></div>\n\n<p>This file contains all your package sources.\nYou might find a deb cdrom:[Debian GNU/Linux 7.0.0 <em>Wheezy</em> - Official amd64 CD Binary-1 20130504-14:44]/\nwheezy main line indicating a local CDROM as a package source.\nComment it out by placing a # symbol at the beginning of the line and save the file.</p>\n\n<p>You should leave it like this:</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>#\n\n# deb cdrom:[Debian GNU/Linux 7.0.0 Wheezy - Official amd64 CD Binary-1 20130504-14:44]/ wheezy main\n\ndeb http://ftp.us.debian.org/debian/ wheezy main\ndeb-src http://ftp.us.debian.org/debian/ wheezy main\n\ndeb http://security.debian.org/ wheezy/updates main\ndeb-src http://security.debian.org/ wheezy/updates main\n\n# wheezy-updates, previously known as ‘volatile’\ndeb http://ftp.us.debian.org/debian/ wheezy-updates main\ndeb-src http://ftp.us.debian.org/debian/ wheezy-updates main\n~\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"https://www.velocihost.net/clients/knowledgebase/29/Fix-the-apt-get-install-error-Media-change-please-insert-the-disc-labeled–on-your-Linux-VPS.html\">Fix the apt-get install error: “Media change: please insert the disc labeled …” on your Linux VPS</a>\n</cite></footer>\n</blockquote>\n\n<p><code class=\"highlighter-rouge\">sources.list</code>をみると、他にもなんか少ない。</p>\n\n<blockquote class=\"blockquote\">\n \n<h2 id=\"example-sourceslist\">Example sources.list</h2>\n\n<p>Below is an example of a <code class=\"highlighter-rouge\">sources.list</code> for Debian 8/Jessie.</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>deb http://httpredir.debian.org/debian jessie main\ndeb-src http://httpredir.debian.org/debian jessie main\n\ndeb http://httpredir.debian.org/debian jessie-updates main\ndeb-src http://httpredir.debian.org/debian jessie-updates main\n\ndeb http://security.debian.org/ jessie/updates main\ndeb-src http://security.debian.org/ jessie/updates main\n</code></pre></div></div>\n\n<p>If you also want the contrib and non-free components, add contrib non-free after main:</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>deb http://httpredir.debian.org/debian jessie main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie main contrib non-free\n\ndeb http://httpredir.debian.org/debian jessie-updates main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free\n\ndeb http://security.debian.org/ jessie/updates main contrib non-free\ndeb-src http://security.debian.org/ jessie/updates main contrib non-free\n</code></pre></div></div>\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"https://wiki.debian.org/SourcesList\">SourcesList - Debian Wiki</a>\n</cite></footer>\n</blockquote>\n\n<p>最終的にこのようにした。Example contrib non-free と同じ。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code># vi /etc/apt/sources.list\n\ndeb http://httpredir.debian.org/debian jessie main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie main contrib non-free\n\ndeb http://httpredir.debian.org/debian jessie-updates main contrib non-free\ndeb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free\n\ndeb http://security.debian.org/ jessie/updates main contrib non-free\ndeb-src http://security.debian.org/ jessie/updates main contrib non-free\n</code></pre></div></div>\n\n<p><code class=\"highlighter-rouge\">apt</code>のカタログリストをアップデートし、Debianを最新の状態にする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code># apt-get update\n# apt-get upgrade\n</code></pre></div></div>\n\n<p>やっと、gpartedをインストールする。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code># apt-get install gparted\n</code></pre></div></div>\n\n<h2 id=\"gpartedを使ってパーティションサイズ変更とコピー\">gpartedを使ってパーティションサイズ変更とコピー</h2>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/06_Activities.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/06_Activities.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>Debianデスクトップ左上<code class=\"highlighter-rouge\">Activities</code>からgpartedを起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/07_select_gparted.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/07_select_gparted.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p><code class=\"highlighter-rouge\">gparted</code>で検索し、起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/08_authentication.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/08_authentication.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>パーティション操作を行うので、管理者権限での実行を求められる。</p>\n\n<p>管理者パスワードを入れて認証する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/09_boot_gparted.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/09_boot_gparted.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>gpartedが起動する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/10_select_RPi.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/10_select_RPi.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>まずは元々Raspberry Piが入っているディスクを選択する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/11_RPi_resize.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/11_RPi_resize.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>復元先に移動できるサイズにするために、\nRaspberry Pi本体のデータが入っているパーティションのサイズを変更する。</p>\n\n<p><code class=\"highlighter-rouge\">Resize/Move the selected partition</code>を選択</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/12_RPi_reduction.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/12_RPi_reduction.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>パーティション右端をドラッグして復元先に収まりそうなサイズに縮小する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/13_boot_copy.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/13_boot_copy.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>変更が完了したら各々のパーティションを復元先にコピーする。</p>\n\n<p>まずはbootをコピーし</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/14_select_recover.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/14_select_recover.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>復元先を選択し</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/15_paste.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/15_paste.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>パーティションを貼り付ける。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/16_paste_boot.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/16_paste_boot.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>貼り付けるとサイズ変更と同じ画面が表示される。</p>\n\n<p>なぜかRaspberry Piのパーティションの先頭4MiB分が使われていないので、\n<code class=\"highlighter-rouge\">Free space preceding (MiB):</code>の部分を <strong>4</strong> に変更する。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/17_RPi_copy.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/17_RPi_copy.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n \n<p>PasteしてRaspberry Pi本体のデータもコピーする。</p>\n\n<p>Raspberry Pi本体のパーティションをコピーして</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/18_RPi_paste.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/18_RPi_paste.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>bootの後ろに貼り付ける。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/19_RPi_extend.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/19_RPi_extend.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>貼り付け終了後、パーティション後部に空白がある場合、パーティションをリサイズして埋める。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/20_Apply.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/20_Apply.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>全ての変更を適用</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"row justify-content-md-center\">\n <div class=\"col-md-11\">\n <div class=\"card\">\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/21_Progress.png\">\n <img src=\"https://leico.github.io/TechnicalNote/RaspberryPi/images/RaspberryPi-Recover/21_Progress.png\" class=\"img-fluid rounded mx-auto d-block\">\n </a>\n <div class=\"card-block\">\n <p>パーティションのコピーが行われて、復元先にRaspberry Piがコピーされる。</p>\n\n </div>\n </div>\n </div>\n</div>\n\n<h2 id=\"復元先micro-sdをvdiからディスクイメージファイルに変換する\">復元先Micro SDをvdiからディスクイメージファイルに変換する</h2>\n\n<blockquote class=\"blockquote\">\n \n<ul>\n <li>仮想ハードディスクイメージをRAWイメージに変換する</li>\n</ul>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage clonehd sdb.vdi sdb.img –format RAW\n</code></pre></div></div>\n\n\n <footer class=\"blockquote-footer\"><cite>\n<a href=\"http://memo.saitodev.com/home/virtualbox/\">VirtualBox | saito’s memo</a>\n</cite></footer>\n</blockquote>\n\n<p>こうした。</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>VBoxManage clonehd ~/VritualBox\ VMs/recover.vdi ~/recover.img –format RAW\n</code></pre></div></div>\n\n<h2 id=\"復元先micro-sdへディスクイメージをコピーする\">復元先Micro SDへディスクイメージをコピーする</h2>\n\n<p>復元先のMicro SDをカードリーダにセットし、</p>\n\n<div class=\"highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>dd if=recover.img of=/dev/rdisk2 bs=1024000\n</code></pre></div></div>\n\n<p>を実行する。\nRaspberry Piに刺し、Raspberry Piが起動できれば復元終了</p>\n\n </div>\n\n <div class=\"col-12\">\n <hr>\n <a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?’http’:’https’;if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+’://platform.twitter.com/widgets.js’;fjs.parentNode.insertBefore(js,fjs);}}(document, ‘script’, ‘twitter-wjs’);</script>\n </div>\n\n </div>\n\n </div>\n \n <div class=\"col-md-4\">\n <h2>\n <a href=\"https://leico.github.io/TechnicalNote/\">\n Technical Note\n </a>\n </h2>\n\n \n\n \n\n <h3>\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi\">RaspberryPi Top</a>\n </h3>\n\n \n <h3>Tips</h3>\n <ul>\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/RaspberryPi/RaspberryPi-Recover\">Raspberry Pi:VirtualBoxを使って死んだSDカードからリカバリー</a>\n </li>\n\n \n </ul>\n \n <h3>関連記事</h3>\n <ul>\n \n\n \n\n \n \n\n <li>\n <a href=\"https://leico.github.io/TechnicalNote/VirtualBox/VirtualBox-Create-VM\">VirtualBoxで仮想マシンを作成</a>\n </li>\n\n \n </ul>\n \n </div>\n \n\n</div>\n\n </div>\n <footer class=\"container\">\n <hr>\n <div class=\"row\">\n <div class=\"col\">\n <p class=\"text-right\">\n <a href=\"https://leico.github.io/TechnicalNote/atom.xml\">Atom</a>\n </p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-8\">\n <div class=\"row\">\n <div class=\"col-md-4\">\n <figure class=\"figure\">\n <img src=\"https://leico.github.io/TechnicalNote/image/logo.png\" class=\"figure-img rounded\" width=\"200px\" height=\"auto\" alt=\"\">\n </figure>\n </div>\n <div class=\"col-md-4\">\n <h5>contact</h5>\n <ul class=\"list-unstyled\">\n <li> <a href=\"https://github.com/leico\" class=\"user-mention\">@leico</a> </li>\n <li> <a href=\"https://www.twitter.com/1_0101\">twitter</a>\n</li>\n <li> <a href=\"https://leico.github.io\">web</a>\n </li>\n</ul>\n </div>\n </div>\n </div>\n <div class=\"col-md-4\">\n <h5>Merchandise/Schwags</h5>\n <p><small class=\"text-muted\">支援してくれるとうれしい</small></p>\n <iframe frameborder=\"0\" height=\"220\" width=\"160\" src=\"https://leico.official.ec/items/6694858/widget/small\"></iframe>\n </div>\n </div>\n <p class=\"text-right\">\n <small class=\"text-muted\">© 2017 leico.</small>\n </p>\n\n</footer>\n\n </body>\n</html>\n", "excerpt": "<h2 id=\"きっかけ\">きっかけ</h2>\n\n", "previous": { "id": "/OpenFrameworks/multiwindow", "url": "/OpenFrameworks/multiwindow", "relative_path": "_docs/OpenFrameworks/multiwindow.md", "path": "_docs/OpenFrameworks/multiwindow.md", "collection": "docs", "draft": false, "categories": [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;ネイティブ対応したマルチウィンドウの実験&quot;,
    &quot;date&quot;: &quot;2016-09-13 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-03-06 01:32:03 +0000&quot;,
    &quot;tags&quot;: [
      &quot;C++&quot;,
      &quot;multi window&quot;,
      &quot;openFrameworks&quot;,
      0.9
    ],
    &quot;slug&quot;: &quot;multiwindow&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;id&quot;: &quot;/RaspberryPi/RaspberryPi-Recover&quot;,
  &quot;url&quot;: &quot;/RaspberryPi/RaspberryPi-Recover&quot;,
  &quot;relative_path&quot;: &quot;_docs/RaspberryPi/RaspberryPi-Recover.md&quot;,
  &quot;next&quot;: {
    &quot;id&quot;: &quot;/Jekyll/post-layout&quot;,
    &quot;url&quot;: &quot;/Jekyll/post-layout&quot;,
    &quot;relative_path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
    &quot;path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
    &quot;collection&quot;: &quot;docs&quot;,
    &quot;draft&quot;: false,
    &quot;categories&quot;: [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;Jekyll:postsのレイアウトについて考える&quot;,
    &quot;date&quot;: &quot;2017-02-03 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-06-16 23:05:15 +0000&quot;,
    &quot;tags&quot;: [
      &quot;bootstrap&quot;,
      &quot;jekyll&quot;
    ],
    &quot;slug&quot;: &quot;post-layout&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;path&quot;: &quot;_docs/RaspberryPi/RaspberryPi-Recover.md&quot;,
  &quot;collection&quot;: &quot;docs&quot;,
  &quot;draft&quot;: false,
  &quot;categories&quot;: [

  ],
  &quot;layout&quot;: &quot;post&quot;,
  &quot;title&quot;: &quot;Raspberry Pi:VirtualBoxを使って死んだSDカードからリカバリー&quot;,
  &quot;date&quot;: &quot;2017-02-02 00:00:00 +0900&quot;,
  &quot;lastchange&quot;: &quot;2017-06-17 01:19:04 +0000&quot;,
  &quot;tags&quot;: [
    &quot;Raspberry Pi&quot;,
    &quot;VirtualBox&quot;,
    &quot;debian&quot;,
    &quot;gparted&quot;
  ],
  &quot;slug&quot;: &quot;RaspberryPi-Recover&quot;,
  &quot;ext&quot;: &quot;.md&quot;
},
&quot;id&quot;: &quot;/Jekyll/post-layout&quot;,
&quot;url&quot;: &quot;/Jekyll/post-layout&quot;,
&quot;relative_path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
&quot;next&quot;: {
  &quot;content&quot;: &quot;## 変数に何が入っているか調べたい\n\n参考\n\n* [Jekyllいつやるの?ジキやルの?今でしょ!](http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/)\n* [Templates - Jekyll](https://jekyllrb.com/docs/templates/)\n\n{% capture text %}\nJekyllでは生成されたサイトに対する情報は、グローバル変数siteを通してアクセスできます。\nsiteがどんな情報を持っているか、ちょっと見てみます。index.mdに戻って、次の一行を追加します。\n\n{% raw %}\n```\n---\nlayout: default\ntitle: Oh! My JK\n---\n#Welcome to my JK Home Page!\n\n{{ site }}  &lt;!-- ここを追加 --&gt;\n```\n{% endraw %}\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Jekyllいつやるの?ジキやルの?今でしょ!](http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\nこれが動かなかったので、変数をDumpする方法を調べた\n\n## inspectフィルタ\n\n{% capture text %}\n\n{% raw %}\nInspect\n: Convert an object into its String representation for debugging.\n: `{{ some_var | inspect }}`\n{% endraw %}\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Templates - Jekyll](https://jekyllrb.com/docs/templates/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\nとのことで、`inspect`フィルタで表示されるらしい。\n\n{% raw %}\n```liquid\n{{ page | inspect }}\n```\n{% endraw %}\n\n実行してみる\n\n&gt; {{ page | inspect }}\n&quot;,
  &quot;output&quot;: null,
  &quot;excerpt&quot;: &quot;&lt;h2 id=\&quot;変数に何が入っているか調べたい\&quot;&gt;変数に何が入っているか調べたい&lt;/h2&gt;\n\n&quot;,
  &quot;previous&quot;: {
    &quot;id&quot;: &quot;/Jekyll/post-layout&quot;,
    &quot;url&quot;: &quot;/Jekyll/post-layout&quot;,
    &quot;relative_path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
    &quot;path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
    &quot;collection&quot;: &quot;docs&quot;,
    &quot;draft&quot;: false,
    &quot;categories&quot;: [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;Jekyll:postsのレイアウトについて考える&quot;,
    &quot;date&quot;: &quot;2017-02-03 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-06-16 23:05:15 +0000&quot;,
    &quot;tags&quot;: [
      &quot;bootstrap&quot;,
      &quot;jekyll&quot;
    ],
    &quot;slug&quot;: &quot;post-layout&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;id&quot;: &quot;/Jekyll/display-value&quot;,
  &quot;url&quot;: &quot;/Jekyll/display-value&quot;,
  &quot;relative_path&quot;: &quot;_docs/Jekyll/display-value.md&quot;,
  &quot;next&quot;: {
    &quot;id&quot;: &quot;/Jekyll/liquid-raw&quot;,
    &quot;url&quot;: &quot;/Jekyll/liquid-raw&quot;,
    &quot;relative_path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
    &quot;path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
    &quot;collection&quot;: &quot;docs&quot;,
    &quot;draft&quot;: false,
    &quot;categories&quot;: [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;liquidのソースコードを表示する&quot;,
    &quot;date&quot;: &quot;2017-03-03 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-06-15 23:00:29 +0000&quot;,
    &quot;tags&quot;: [
      &quot;jekyll&quot;,
      &quot;liquid&quot;,
      &quot;github&quot;,
      &quot;pages&quot;
    ],
    &quot;slug&quot;: &quot;liquid-raw&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;path&quot;: &quot;_docs/Jekyll/display-value.md&quot;,
  &quot;collection&quot;: &quot;docs&quot;,
  &quot;draft&quot;: false,
  &quot;categories&quot;: [

  ],
  &quot;layout&quot;: &quot;post&quot;,
  &quot;title&quot;: &quot;変数の中身をページに表示する&quot;,
  &quot;date&quot;: &quot;2017-03-03 00:00:00 +0900&quot;,
  &quot;lastchange&quot;: &quot;2017-06-15 21:23:57 +0000&quot;,
  &quot;tags&quot;: [
    &quot;jekyll&quot;,
    &quot;liquid&quot;,
    &quot;github&quot;,
    &quot;pages&quot;
  ],
  &quot;slug&quot;: &quot;display-value&quot;,
  &quot;ext&quot;: &quot;.md&quot;
},
&quot;path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
&quot;collection&quot;: &quot;docs&quot;,
&quot;draft&quot;: false,
&quot;categories&quot;: [

],
&quot;layout&quot;: &quot;post&quot;,
&quot;title&quot;: &quot;Jekyll:postsのレイアウトについて考える&quot;,
&quot;date&quot;: &quot;2017-02-03 00:00:00 +0900&quot;,
&quot;lastchange&quot;: &quot;2017-06-16 23:05:15 +0000&quot;,
&quot;tags&quot;: [
  &quot;bootstrap&quot;,
  &quot;jekyll&quot;
],
&quot;slug&quot;: &quot;post-layout&quot;,
&quot;ext&quot;: &quot;.md&quot;   },   &quot;id&quot;: &quot;/Jekyll/display-value&quot;,   &quot;url&quot;: &quot;/Jekyll/display-value&quot;,   &quot;relative_path&quot;: &quot;_docs/Jekyll/display-value.md&quot;,   &quot;next&quot;: {
&quot;content&quot;: &quot;## liquidのソースがJekyllでコンパイルされ、表示されない\n\nliquidのソースコードを載っけようとしたところ、\nJekyllでコンパイルする際に展開されてしまい、\n表示されず、意図しないものが出力されてしまう。\n\n参考\n\n* [How to escape liquid template tags? - Stack Overflow](http://stackoverflow.com/questions/3426182/how-to-escape-liquid-template-tags)\n\n## liquidのソースコードをエスケープする方法\n\n{% capture text %}\nit is possible to disable liquid processing engine using the raw tag:\n\n```liquid\n{{ \&quot;{% raw \&quot; }} %}\n{% raw %}\n{% this %}\n{% endraw %}\n{{ \&quot;{% endraw \&quot; }} %}\n```\n\nwill display \n{% raw %}\n```liquid\n{% this %}\n```\n{% endraw %} \nby [Etienne](http://stackoverflow.com/users/406458/etienne)\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[How to escape liquid template tags? - Stack Overflow](http://stackoverflow.com/questions/3426182/how-to-escape-liquid-template-tags)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n\n\n\nということで`{{ \&quot;{% raw \&quot;}} %}`と`{{ \&quot;{% endraw \&quot; }} %}`で挟んだ間は展開されない。\n\n## `{{ \&quot;{% raw \&quot;}} %}`と`{{ \&quot;{% endraw \&quot; }} %}`をエスケープする\n\nだがしかし、`{{ \&quot;{% raw \&quot;}} %}`と`{{ \&quot;{% endraw \&quot; }} %}`を表示させることはこれではできない。\nそこで、上記の文はこのようになっている。\n\n{% raw %}\n```liquid\nということで`{{ \&quot;{% raw \&quot;}} %}`と`{{ \&quot;{% endraw \&quot; }} %}`で挟んだ間は展開されない。\n```\n{% endraw  %}\n&quot;,
&quot;output&quot;: null,
&quot;excerpt&quot;: &quot;&lt;h2 id=\&quot;liquidのソースがjekyllでコンパイルされ表示されない\&quot;&gt;liquidのソースがJekyllでコンパイルされ、表示されない&lt;/h2&gt;\n\n&quot;,
&quot;previous&quot;: {
  &quot;content&quot;: &quot;## 変数に何が入っているか調べたい\n\n参考\n\n* [Jekyllいつやるの?ジキやルの?今でしょ!](http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/)\n* [Templates - Jekyll](https://jekyllrb.com/docs/templates/)\n\n{% capture text %}\nJekyllでは生成されたサイトに対する情報は、グローバル変数siteを通してアクセスできます。\nsiteがどんな情報を持っているか、ちょっと見てみます。index.mdに戻って、次の一行を追加します。\n\n{% raw %}\n```\n---\nlayout: default\ntitle: Oh! My JK\n---\n#Welcome to my JK Home Page!\n\n{{ site }}  &lt;!-- ここを追加 --&gt;\n```\n{% endraw %}\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Jekyllいつやるの?ジキやルの?今でしょ!](http://melborne.github.io/2013/05/20/now-the-time-to-start-jekyll/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\nこれが動かなかったので、変数をDumpする方法を調べた\n\n## inspectフィルタ\n\n{% capture text %}\n\n{% raw %}\nInspect\n: Convert an object into its String representation for debugging.\n: `{{ some_var | inspect }}`\n{% endraw %}\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Templates - Jekyll](https://jekyllrb.com/docs/templates/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\nとのことで、`inspect`フィルタで表示されるらしい。\n\n{% raw %}\n```liquid\n{{ page | inspect }}\n```\n{% endraw %}\n\n実行してみる\n\n&gt; {{ page | inspect }}\n&quot;,
  &quot;output&quot;: null,
  &quot;excerpt&quot;: &quot;&lt;h2 id=\&quot;変数に何が入っているか調べたい\&quot;&gt;変数に何が入っているか調べたい&lt;/h2&gt;\n\n&quot;,
  &quot;previous&quot;: {
    &quot;id&quot;: &quot;/Jekyll/post-layout&quot;,
    &quot;url&quot;: &quot;/Jekyll/post-layout&quot;,
    &quot;relative_path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
    &quot;path&quot;: &quot;_docs/Jekyll/post-layout.md&quot;,
    &quot;collection&quot;: &quot;docs&quot;,
    &quot;draft&quot;: false,
    &quot;categories&quot;: [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;Jekyll:postsのレイアウトについて考える&quot;,
    &quot;date&quot;: &quot;2017-02-03 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-06-16 23:05:15 +0000&quot;,
    &quot;tags&quot;: [
      &quot;bootstrap&quot;,
      &quot;jekyll&quot;
    ],
    &quot;slug&quot;: &quot;post-layout&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;id&quot;: &quot;/Jekyll/display-value&quot;,
  &quot;url&quot;: &quot;/Jekyll/display-value&quot;,
  &quot;relative_path&quot;: &quot;_docs/Jekyll/display-value.md&quot;,
  &quot;next&quot;: {
    &quot;id&quot;: &quot;/Jekyll/liquid-raw&quot;,
    &quot;url&quot;: &quot;/Jekyll/liquid-raw&quot;,
    &quot;relative_path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
    &quot;path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
    &quot;collection&quot;: &quot;docs&quot;,
    &quot;draft&quot;: false,
    &quot;categories&quot;: [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;liquidのソースコードを表示する&quot;,
    &quot;date&quot;: &quot;2017-03-03 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-06-15 23:00:29 +0000&quot;,
    &quot;tags&quot;: [
      &quot;jekyll&quot;,
      &quot;liquid&quot;,
      &quot;github&quot;,
      &quot;pages&quot;
    ],
    &quot;slug&quot;: &quot;liquid-raw&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;path&quot;: &quot;_docs/Jekyll/display-value.md&quot;,
  &quot;collection&quot;: &quot;docs&quot;,
  &quot;draft&quot;: false,
  &quot;categories&quot;: [

  ],
  &quot;layout&quot;: &quot;post&quot;,
  &quot;title&quot;: &quot;変数の中身をページに表示する&quot;,
  &quot;date&quot;: &quot;2017-03-03 00:00:00 +0900&quot;,
  &quot;lastchange&quot;: &quot;2017-06-15 21:23:57 +0000&quot;,
  &quot;tags&quot;: [
    &quot;jekyll&quot;,
    &quot;liquid&quot;,
    &quot;github&quot;,
    &quot;pages&quot;
  ],
  &quot;slug&quot;: &quot;display-value&quot;,
  &quot;ext&quot;: &quot;.md&quot;
},
&quot;id&quot;: &quot;/Jekyll/liquid-raw&quot;,
&quot;url&quot;: &quot;/Jekyll/liquid-raw&quot;,
&quot;relative_path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
&quot;next&quot;: {
  &quot;content&quot;: &quot;## ページメニューの作り方\n\nブログというより、どちらかといえばこのページはWiki的に使いたいので、Wikiのサイドバーのようなメニューの作り方を調べた。\n\n参考\n\n* [jekyll/docs.yml at jekyll/jekyll](https://github.com/jekyll/jekyll/blob/master/docs/_data/docs.yml)\n* [Data Files - Jekyll](https://jekyllrb.com/docs/datafiles/)\n* [jekyll/docs\\_contents.html at jekyll/jekyll](https://github.com/jekyll/jekyll/blob/master/docs/_includes/docs_contents.html)\n* [Using Jekyll \\_includes as custom liquid functions](http://hamishwillee.github.io/2014/11/13/jekyll-includes-are-functions/)\n* [jekyll/docs\\_ul.html at jekyll/jekyll](https://github.com/jekyll/jekyll/blob/master/docs/_includes/docs_ul.html)\n* [Collections - Jekyll](https://jekyllrb.com/docs/collections/)\n* [Templates - Jekyll](https://jekyllrb.com/docs/templates/)\n* [jekyll/docs/\\_docs at jekyll/jekyll](https://github.com/jekyll/jekyll/tree/master/docs/_docs)\n* [Liquid for Designers - Shopify](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers)\n* [Jekyll &amp; Liquid Cheat Sheet](https://gist.github.com/smutnyleszek/9803727)\n\n## 本家Jekyllのメニューバー\n\nまず本家[Jekyll Docs](https://jekyllrb.com/docs/home/)のメニューバーはどうやっているのか調べた。\n\n### 前知識 **\\_data** ディレクトリ\n\n\n{% assign text='\n## The Data Folder\n\nAs explained on the [directory structure](https://jekyllrb.com/docs/structure/) page, \nthe `_data` folder is where you can store additional data for Jekyll to use when generating your site.\nThese files must be YAML, JSON, or CSV files (using either the `.yml`, `.yaml`, `.json` or `.csv` extension),\nand they will be accessible via `site.data`.\n' | markdownify %}\n{% assign source='\n[Data Files - Jekyll](https://jekyllrb.com/docs/datafiles/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n\n\nまず **\\_data** ディレクトリについて知らないといけないようだ。\n\n**\\_data** ディレクトリに入っているYAMLファイル等の情報に、`site.data.*`でアクセスができる。\n`*`の部分にはまずファイル名が入る。ファイル名の後はデータ構造による。\n引用したソースの **Getting Started** を手に入れたい場合は、\n\n{% raw %}\n```liquid\n{{ site.data.docs[0].title }}\n```\n{% endraw %}\n\nとなる。\n\n### Jekyllのソースを覗く: **\\_data/docs.yml**\n\n\n{% assign text='\n```yaml\n- title: Getting Started\n  docs:\n  - home\n  - quickstart\n  - installation\n  - usage\n  - structure\n  - configuration\n\n- title: Your Content\n  docs:\n- frontmatter\n…\n```\n' | markdownify %}\n{% assign source='\n[jekyll/docs.yml at jekyll/jekyll](https://github.com/jekyll/jekyll/blob/master/docs/_data/docs.yml)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n\n\n{% assign variable_path = \&quot;Jekyll/site-variables.md\&quot; %}\n{% assign variable = site.html_pages | where:\&quot;path\&quot;, variable_path | first %}\n\nぐったりしながらソースを眺めてみると、この **docs.yml** を元に作成しているようだ。\nそりゃそうだよなぁ。[ {{variable.title}} ]( {{site.github.url}}{{variable.url}} )で調べた限り、\nデフォルトだとただページ一覧とかの情報しかない。これだけだときつい。\n\nじゃあこの **docs.yml** からどうやってジェネレートしているのか。\n\n### Jekyllのソースを覗く: **\\_includes/docs\\_contents.html**\n\n\n{% capture text %}\n\n{% raw %}\n```liquid\n&lt;div class=\&quot;unit one-fifth hide-on-mobiles\&quot;&gt;\n  &lt;aside&gt;\n    {% for section in site.data.docs %}\n    &lt;h4&gt;{{ section.title }}&lt;/h4&gt;\n    {% include docs_ul.html items=section.docs %}\n    {% endfor %}\n  &lt;/aside&gt;\n&lt;/div&gt;\n```\n{% endraw %}\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[jekyll/docs\\_contents.html at jekyll/jekyll](https://github.com/jekyll/jekyll/blob/master/docs/_includes/docs_contents.html)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n**docs.yml** を走査している`for`があって、まず`title`のデータを用いてヘッダを作っているのが分かる。\nその後\n\n{% raw %}\n```liquid\n{% include docs_ul.html items=section.docs %}\n```\n\nしている。`include`に`items`でページ配列を渡しているぞ?\n{% endraw %}\n\n### `include`で引数を渡す\n\n\n{% capture text %}\n\n{% raw %}\n### Passing in parameters\n\nIf you need to pass in parameters you can do that too.\nThe fragment below shows how you might pass in a string `\&quot;a value\&quot;` and a variable `variable_name`.\n\n```liquid\n{% include your_function.html some_parameter=\&quot;a value\&quot; another_parameter=variable_name %}\n```\n\nWithin the file you can access those parameters using `{{ include.some_parameter }}` and `{{ include.another_parameter }}` respectively.\n{% endraw %}\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Using Jekyll \\_includes as custom liquid functions](http://hamishwillee.github.io/2014/11/13/jekyll-includes-are-functions/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n\n\n**\\_includes** ディレクトリ下のファイルをインクルードする際、引数名と値をセットすることで引数を渡すことができる。\n渡された引数には`include.value`といった形式でアクセスできるとのこと。\n\n### Jekyllのソースを覗く: **\\_includes/docs_ul.html**\n\n{% capture text %}\n\n{% raw %}\n```liquid\n&lt;ul&gt;\n{% for item in include.items %}\n  {% assign item_url = item | prepend:\&quot;/docs/\&quot; | append:\&quot;/\&quot; %}\n  {% assign p = site.docs | where:\&quot;url\&quot;, item_url | first %}\n  &lt;li class=\&quot;{% if item_url == page.url %}current{% endif %}\&quot;&gt;&lt;a href=\&quot;{{ p.url }}\&quot;&gt;{{ p.title }}&lt;/a&gt;&lt;/li&gt;\n{% endfor %}\n&lt;/ul&gt;\n```\n{% endraw %}\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[jekyll/docs\\_ul.html at jekyll/jekyll](https://github.com/jekyll/jekyll/blob/master/docs/_includes/docs_ul.html)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n\n\n{% raw %}\n```liquid\n{% assign item_url = item | prepend:\&quot;/docs/\&quot; | append:\&quot;/\&quot; %}\n```\n\n受け取った配列からURLを作っている。`item_url`は`/docs/item/`の形の文字列になる。\n\n```liquid\n{% assign p = site.docs | where:\&quot;url\&quot;, item_url | first %}\n```\n\nえ、`site.directory`でディレクトリ指定できるの?\n\n{% endraw %}\n\n\n{% capture text %}\n\n## Collections\n\nNot everything is a post or a page. Maybe you want to document the various methods in your open source project,\nmembers of a team, or talks at a conference. Collections allow you to define a new type of document\nthat behave like Pages or Posts do normally, but also have their own unique properties and namespace.\n\n---\n\n\nAdd the following to your site's `_config.yml` file, replacing `my_collection` with the name of your collection:\n\n```yaml\ncollections:\n- my_collection\n```\n\n---\n\n### Step 2: Add your content\n\nCreate a corresponding folder (e.g. `&lt;source&gt;/_my_collection`) and add documents. \nYAML front matter is processed if the front matter exists, \nand everything after the front matter is pushed into the document's `content` attribute. \nIf no YAML front matter is provided, Jekyll will not generate the file in your collection.\n\n---\n\n### Step 3: Optionally render your collection’s documents into independent files\n\nIf you'd like Jekyll to create a public-facing, \nrendered version of each document in your collection,\nset the `output` key to `true` in your collection metadata in your `_config.yml`:\n\n```yaml\ncollections:\n  my_collection:\n    output: true\n```\n\nThis will produce a file for each document in the collection. For example,\nif you have `_my_collection/some_subdir/some_doc.md`,\nit will be rendered using Liquid and the Markdown converter of your choice\nand written out to `&lt;dest&gt;/my_collection/some_subdir/some_doc.html`\n\n---\n\n### Collections\n\nEach collection is accessible as a field on the `site` variable.\nFor example, if you want to access the `albums` collection found in `_albums`,\nyou'd use `site.albums`.\n\n\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Collections - Jekyll](https://jekyllrb.com/docs/collections/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n\nこれを使っているのか。Collectionは関連するデータをまとめて入れておく場所という認識でよいかな。\n\n使い方は **\\_config.yml** に\n\n```yaml\ncollections:\n - collectionname\n```\n\nとCollectionを列挙。それに対応するディレクトリが **\\_collectionname** と\n先頭に`_`をつけた同名のディレクトリ。\n\nコンテンツをページとして出力したい場合、\n\n```yaml\ncollections:\n collectionname:\n  output : true\n```\n\nと`output: true`オプションをつける必要がある。\n`output: true`にすると、デフォルトでは\n\n```\n_collectionname/test.md\n```\n\nは\n\n```\ncollectionname/test.html\n```\n\nに展開される。\n\nここまで定義しておくと、\n\n`site.collectionname`で中の要素にアクセスできる。データまとめるのに便利だからこれから使っていこうかな。\n\n話を戻してさっき見ていた行をみる\n\n{% raw %}\n```liquid\n{% assign p = site.docs | where:\&quot;url\&quot;, item_url | first %}\n```\n{% endraw %}\n\n`docs` Collectionから`where`でフィルタリングしている。\n\n\n\n\n{% capture text %}\n\n{% raw %}\nWhere\n: Select all the objects in an array where the key has the given value.\n: `{{ site.members | where:\&quot;graduation_year\&quot;,\&quot;2014\&quot; }}`\n{% endraw %}\n\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Templates - Jekyll](https://jekyllrb.com/docs/templates/)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\n\n\n\n引用した例では`site.members`配列の内、`graduation_year`の要素が`2014`のもののみを抽出しているということになる。\n\nソース側に当てはめると、`url`要素が`item_url`と合致するもののみを抽出している。\n合致したデータが1つだけであろうと抽出したデータは配列として返ってくるので、さらに`first`でフィルタリングして1つだけを取り出し、\n`p`に割り当てているということらしい。\n\nつまり、urlを検索キーに使ってページオブジェクトを取得しているようだ。\nそれ以下のコードは取得したオブジェクトからタイトルとかを取り出している。\n\n\n## Collectionを使うための準備\n\n\n### `_config.yml`を編集する\n\n```yaml\n\ncollections :\n  Jekyll:\n    output: true\n\n```\n\nJekyll系の記事のメニューを作ってみる。\n\n### ディレクトリ構成を変更\n\n**\\_Jekyll** ディレクトリを作成し、Jekyll関連のページを移動する。\n\n```\n|--_Jekyll\n|  |--Ruby-research.md\n|  |--bundle-usage.md\n|  |--display-value.md\n|  |--github-pages-debug.md\n|  |--github-pages-generator.md\n|  |--jekyll-usage.md\n|  |--liquid-raw.md\n|  |--page-menu.md\n|  |--rbenv-install.md\n|  |--rbenv-usage.md\n|  |--site-variables.md\n|  |--worth-bundle-install.md\n```\n\n## オブジェクトのキーとなる要素の調査\n\n`site.collection`の中から`where`でフィルタリングしてページオブジェクトを手に入れて、\n`title`や`url`を引っ張ってくるのがスマートな気がする。\n\nので、まずどんなデータが入っているのか調べる。\n\n{% raw %}\n```liquid\n{{ site.Jekyll | inspect | jsonfy }}\n```\n{% endraw %}\n\n&gt; {{site.Jekyll | inspect | jsonfy }}\n\n{% raw %}\n```liquid\n{{ site.Jekyll[0].title | inspect }}\n{{ site.Jekyll[0].url   | inspect }}\n{{ site.Jekyll[0].path  | inspect }}\n```\n{% endraw %}\n\n&gt; {{ site.Jekyll[0].title | inspect }}\n&gt; {{ site.Jekyll[0].url   | inspect }}\n&gt; {{ site.Jekyll[0].path  | inspect }}\n\nデータが多すぎるので抜粋した。この辺りをキーにしてオブジェクトを引っ張ってくるのがよさそう。\n\n## メニューを生成するために必要なデータを考える\n\nメニューに必要なものを考える。\n\n* タイトル\n* ページへのリンク\n* 最終更新日時\n\nページオブジェクトを取得する必要がありそうなので、\nコンパイル前の、こちらでパスを把握している`path`をキーにしてページオブジェクトを取得する。\n\nそのためにファイル名の一覧をメニュー構成用データに使う。\n\n```yaml\n- title  : github pages &amp; Jekyll\n  prefix : Jekyll\n  pages  : \n  - Ruby-research\n  - bundle-usage\n  - github-pages-debug\n  - github-pages-generator\n  - jekyll-usage\n  - rbenv-install\n  - rbenv-usage\n  - worth-bundle-install\n  - site-variables\n  - liquid-raw\n  - display-value\n```\n\n複数のカテゴリを横断する記事はファイル名以下に何かプロパティをぶら下げて区別しようかな。\n**\\_data/pages.yml** として保存した。\n\n## ページ一覧から`path`を生成する。\n\n{% capture text %}\n\n{% raw %}\nCombining multiple strings into one variable:\n\n```liquid\n{% capture full-name %}{{ name }} {{ surname }}{% endcapture %}\n```\n{% endraw %}\n\n{% endcapture %}\n{% assign text=text | markdownify %}\n{% assign source='\n[Jekyll &amp; Liquid Cheat Sheet](https://gist.github.com/smutnyleszek/9803727)\n' | markdownify | remove: '&lt;p&gt;' | remove: '&lt;/p&gt;' %}\n{% include cite.html text=text source=source %}\n\nこれを使うとパスを作るのが簡単そうだった。\n\nページ一覧を`for`で走査して`capture`でパスを作り出す。\n\n{% raw %}\n```liquid\n{% for section in site.data.pages %}\n  {% for page in section.pages %}\n    {% capture path %}_{{ section.prefix }}/{{page}}.md{% endcapture %}\n    {{path}}\n  {% endfor %}\n{% endfor %}\n\n```\n{% endraw %}\n\n&gt; {% for section in site.data.pages %}\n&gt;   {% for page in section.pages %}\n&gt;     {% capture path %}_{{ section.prefix }}/{{page}}.md{% endcapture %}\n&gt; {{path}}\n&gt;   {% endfor %}\n&gt; {% endfor %}\n\n\n## パスを使ってページタイトル、URLを取得してみる\n\n{% raw %}\n\nでは、パスをキーにしてオブジェクトを取得、タイトルとURLを取得してみる。\n\n```liquid\n{% for section in site.data.pages %}\n  {% for page in section.pages %}\n  {% capture path %}_{{ section.prefix }}/{{page}}.md{% endcapture %}\n    &lt;p&gt;\n    {% assign content = site.Jekyll | where:\&quot;path\&quot;, path | first %}\n    {{content.title}}\n    &lt;/p&gt;\n    &lt;p&gt;\n    {{content.url}}\n    &lt;/p&gt;\n  {% endfor %}\n{% endfor %}\n```\n{% endraw %}\n\n&gt; {% for section in site.data.pages %}\n&gt;   {% for page in section.pages %}\n&gt;   {% capture path %}_{{ section.prefix }}/{{page}}.md{% endcapture %}\n&gt; &lt;p&gt;\n&gt; {% assign content = site.Jekyll | where:\&quot;path\&quot;, path | first %}\n&gt; {{content.title}}\n&gt; &lt;/p&gt;\n&gt; &lt;p&gt;\n&gt; {{content.url}}\n&gt; &lt;/p&gt;\n&gt;   {% endfor %}\n&gt; {% endfor %}\n\nうまくいっているようだ。\n&quot;,
  &quot;output&quot;: null,
  &quot;excerpt&quot;: &quot;&lt;h2 id=\&quot;ページメニューの作り方\&quot;&gt;ページメニューの作り方&lt;/h2&gt;\n\n&quot;,
  &quot;previous&quot;: {
    &quot;id&quot;: &quot;/Jekyll/liquid-raw&quot;,
    &quot;url&quot;: &quot;/Jekyll/liquid-raw&quot;,
    &quot;relative_path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
    &quot;path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
    &quot;collection&quot;: &quot;docs&quot;,
    &quot;draft&quot;: false,
    &quot;categories&quot;: [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;liquidのソースコードを表示する&quot;,
    &quot;date&quot;: &quot;2017-03-03 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-06-15 23:00:29 +0000&quot;,
    &quot;tags&quot;: [
      &quot;jekyll&quot;,
      &quot;liquid&quot;,
      &quot;github&quot;,
      &quot;pages&quot;
    ],
    &quot;slug&quot;: &quot;liquid-raw&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;id&quot;: &quot;/Jekyll/page-menu&quot;,
  &quot;url&quot;: &quot;/Jekyll/page-menu&quot;,
  &quot;relative_path&quot;: &quot;_docs/Jekyll/page-menu.md&quot;,
  &quot;next&quot;: {
    &quot;id&quot;: &quot;/Jekyll/collection-variable&quot;,
    &quot;url&quot;: &quot;/Jekyll/collection-variable&quot;,
    &quot;relative_path&quot;: &quot;_docs/Jekyll/collection-variable.md&quot;,
    &quot;path&quot;: &quot;_docs/Jekyll/collection-variable.md&quot;,
    &quot;collection&quot;: &quot;docs&quot;,
    &quot;draft&quot;: false,
    &quot;categories&quot;: [

    ],
    &quot;layout&quot;: &quot;post&quot;,
    &quot;title&quot;: &quot;Collection変数を調査する&quot;,
    &quot;date&quot;: &quot;2017-03-05 00:00:00 +0900&quot;,
    &quot;lastchange&quot;: &quot;2017-08-13 15:43:34 +0000&quot;,
    &quot;tags&quot;: [
      &quot;jekyll&quot;,
      &quot;github&quot;,
      &quot;pages&quot;,
      &quot;collection&quot;
    ],
    &quot;slug&quot;: &quot;collection-variable&quot;,
    &quot;ext&quot;: &quot;.md&quot;
  },
  &quot;path&quot;: &quot;_docs/Jekyll/page-menu.md&quot;,
  &quot;collection&quot;: &quot;docs&quot;,
  &quot;draft&quot;: false,
  &quot;categories&quot;: [

  ],
  &quot;layout&quot;: &quot;post&quot;,
  &quot;title&quot;: &quot;ページメニューの作り方&quot;,
  &quot;date&quot;: &quot;2017-03-04 00:00:00 +0900&quot;,
  &quot;lastchange&quot;: &quot;2017-06-16 22:55:31 +0000&quot;,
  &quot;tags&quot;: [
    &quot;jekyll&quot;,
    &quot;liquid&quot;,
    &quot;github&quot;,
    &quot;pages&quot;
  ],
  &quot;slug&quot;: &quot;page-menu&quot;,
  &quot;ext&quot;: &quot;.md&quot;
},
&quot;path&quot;: &quot;_docs/Jekyll/liquid-raw.md&quot;,
&quot;collection&quot;: &quot;docs&quot;,
&quot;draft&quot;: false,
&quot;categories&quot;: [

],
&quot;layout&quot;: &quot;post&quot;,
&quot;title&quot;: &quot;liquidのソースコードを表示する&quot;,
&quot;date&quot;: &quot;2017-03-03 00:00:00 +0900&quot;,
&quot;lastchange&quot;: &quot;2017-06-15 23:00:29 +0000&quot;,
&quot;tags&quot;: [
  &quot;jekyll&quot;,
  &quot;liquid&quot;,
  &quot;github&quot;,
  &quot;pages&quot;
],
&quot;slug&quot;: &quot;liquid-raw&quot;,
&quot;ext&quot;: &quot;.md&quot;   },   &quot;path&quot;: &quot;_docs/Jekyll/display-value.md&quot;,   &quot;collection&quot;: &quot;docs&quot;,   &quot;draft&quot;: false,   &quot;categories&quot;: [

], "layout": "post", "title": "変数の中身をページに表示する", "date": "2017-03-03 00:00:00 +0900", "lastchange": "2017-06-15 21:23:57 +0000", "tags": [ "jekyll", "liquid", "github", "pages" ], "slug": "display-value", "ext": ".md" }