# % Options Settings: https://orgmode.org/manual/Export-Settings.html
#+OPTIONS: timestamp:nil ^:nil <:nil p:t prop:t tags:t tasks:t todo:t
#+LATEX_CLASS: article
#+LaTeX_CLASS_OPTIONS: [a4paper,12pt]
#+LATEX_HEADER: \usepackage{booktabs}
# % to include pdf/eps/png files
#+LATEX_HEADER: \usepackage{indentfirst}
#+LATEX_HEADER: \usepackage{graphicx}
# % useful to add 'todo' markers
#+LaTeX_HEADER: \usepackage{todonotes}
#+LaTeX_HEADER: \setlength{\marginparwidth}{2cm} % fix todonotes warning
# % hyperrefs
#+LaTeX_HEADER: \usepackage{hyperref}
# % ----------------- Code blocks ----------------
# % Dependencies: pip install pygments
# % nice source code formatting
#+LaTeX_HEADER: \usepackage{xcolor}
#+LaTeX_HEADER: \definecolor{bg}{rgb}{0.98,0.98,0.98}
#+LaTeX_HEADER: \usepackage[cache=false]{minted}
#+LaTeX_HEADER: \setminted{
#+LaTeX_HEADER:   fontsize=\small,
#+LaTeX_HEADER:   baselinestretch=1,
#+LaTeX_HEADER:   xleftmargin=4em,
#+LaTeX_HEADER:   breaklines,
#+LaTeX_HEADER:   mathescape,
#+LaTeX_HEADER:   linenos,
#+LaTeX_HEADER:   numbersep=5pt,
#+LaTeX_HEADER:   frame=leftline,
#+LaTeX_HEADER:   framesep=2mm,
#+LaTeX_HEADER:   autogobble,
#+LaTeX_HEADER:   style=tango,
#+LaTeX_HEADER:   bgcolor=bg
#+LaTeX_HEADER: }
# % change style of section headings
#+LaTeX_HEADER: \usepackage{sectsty}
#+LaTeX_HEADER: \allsectionsfont{\sffamily}
# % only required for orgmode ticked TODO items, can remove
#+LaTeX_HEADER: \usepackage{amssymb}
# % only required for underlining text
#+LaTeX_HEADER: \usepackage[normalem]{ulem}
# % often use this in differential operators:
#+LaTeX_HEADER: \renewcommand{\d}{\ensuremath{\mathrm{d}}}
# % allow more reasonable text width for most documents than LaTeX default
#+LaTeX_HEADER: \setlength{\textheight}{21cm}
#+LaTeX_HEADER: \setlength{\textwidth}{16cm}
# % reduce left and right margins accordingly
#+LaTeX_HEADER: \setlength{\evensidemargin}{-0cm}
#+LaTeX_HEADER: \setlength{\oddsidemargin}{-0cm}
# % reduce top margin
#+LaTeX_HEADER: \setlength{\topmargin}{0cm}
# % references formats
#+LaTeX_HEADER: \usepackage[round]{natbib}
# % Chinese supported
#+LATEX_HEADER: \usepackage{ctex}
# % Increase default line spacing a little
#+LATEX_HEADER: \usepackage{setspace}
#+LATEX_HEADER: \renewcommand{\baselinestretch}{1.5}
#+LATEX_HEADER: \setlength{\parskip}{0.8em}
# % Line & paragraph space end
# % item list margin
#+LATEX_HEADER: \usepackage{enumitem}
# % Breaking Page Between Title and Toc
#+LATEX_HEADER: \makeatletter \def\@maketitle{\null \begin{center} {\vskip 5em \Huge \@title} \vskip 30em {\LARGE \@author} \vskip 3em {\LARGE \@date} \end{center} \newpage} \makeatother
# % End of Breaking Page Between Title and Toc
#+LATEX_HEADER: \renewcommand\contentsname{目录}
# Generate Tex File: C-c C-e l l; then replace verbatim with minted, and must special the code language
#+LATEX_HEADER: % Generate PDF: xelatex -shell-escape <tex file>
#+AUTHOR: jouyouyun
#+EMAIL: yanbowen717@gmail.com
#+TITLE: 分区挂载要求

#+latex: \newpage

** 概述
为实现原子更新功能，系统的分区和挂载需要做相应的调整，以满足原子更新的要求。

** 分区
必须存在以下分区：
+ 根分区
+ 数据分区

若使用 UEFI 引导，还必须存在：EFI 分区 。

** 挂载
系统在安装之前，需要按以下方式进行挂载：

+ 根分区 *mount* 于 /
+ /etc *mount* 于 /
+ 数据分区 *mount* 于 /osroot/data
+ /opt *mount bind* 于 /osroot/data/opt
+ /var *mount bind* 于 /osroot/data/var
+ /home *mount bind* 于 /osroot/data/home
+ /root *mount bind* 于 /osroot/data/roothome
+ /bin *symlink* 于 /usr/bin
+ /boot *symlink* 于 /usr/boot
+ /lib *symlink* 于 /usr/lib
+ /lib<qual> *symlink* 于 /usr/lib<qual>

安装完成后，先添加 =/var/etc= 对 =/etc= 的 =overlay= ，即添加以下内容到 =/etc/fstab= :

~overlay /etc overlay x-systemd.requires=/var,lowerdir=/etc,upperdir=/var/etc,workdir=/var/overlay 0 1~

注意： */var/{etc,overlay} 目录应先创建* 。

然后需构建本地 repo ，branch 和 subject 信息在 ISO 描述文件中。

#+begin_src shell
mv /etc /usr
cp -r /var /usr
ostree --repo=/osroot/os/repo init
ostree --repo=/osroot/os/repo commit -b <branch> -s <subject> /usr
ostree --repo=/osroot/os/repo checkout <branch> /usr-tmp
mv /usr /usr-bak
mv /usr-tmp /usr
rm -rf /usr-bak
cp -rl /usr/etc /
cp -rl /usr/var /
#+end_src

然后创建 =/vendor= 的目录结构，如下：
#+begin_src shell
$ tree vendor
vendor
├── bin -> usr/bin
├── boot -> usr/boot
├── etc -> usr/etc
├── lib -> usr/lib
├── lib32 -> usr/lib32
├── lib64 -> usr/lib64
├── libx32 -> usr/libx32
├── sbin -> usr/sbin
├── usr
│   ├── bin
│   ├── boot
│   ├── etc
│   ├── lib
│   ├── lib32
│   ├── lib64
│   ├── libx32
│   ├── sbin
│   └── var
└── var -> usr/var
#+end_src

命令如下：
#+begin_src shell
mkdir -p /vendor/usr/{bin,sbin,etc,boot,lib,lib32,libx32,lib64,var}
cd /vendor && ln -svf usr/* ./
#+end_src

完成后重启，进入后配置模式。
