aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--writeups/dracut/dracut.en.md241
-rw-r--r--writeups/dracut/dracut.ko.md234
-rw-r--r--writeups/dracut/image-1.pngbin0 -> 341026 bytes
-rw-r--r--writeups/dracut/image-10.pngbin0 -> 405866 bytes
-rw-r--r--writeups/dracut/image-11.pngbin0 -> 41201 bytes
-rw-r--r--writeups/dracut/image-12.pngbin0 -> 53698 bytes
-rw-r--r--writeups/dracut/image-2.pngbin0 -> 65594 bytes
-rw-r--r--writeups/dracut/image-3.pngbin0 -> 139939 bytes
-rw-r--r--writeups/dracut/image-4.pngbin0 -> 123112 bytes
-rw-r--r--writeups/dracut/image-5.pngbin0 -> 80654 bytes
-rw-r--r--writeups/dracut/image-6.pngbin0 -> 79075 bytes
-rw-r--r--writeups/dracut/image-7.pngbin0 -> 59816 bytes
-rw-r--r--writeups/dracut/image-8.pngbin0 -> 64553 bytes
-rw-r--r--writeups/dracut/image-9.pngbin0 -> 58711 bytes
-rw-r--r--writeups/dracut/image.pngbin0 -> 73437 bytes
15 files changed, 475 insertions, 0 deletions
diff --git a/writeups/dracut/dracut.en.md b/writeups/dracut/dracut.en.md
new file mode 100644
index 0000000..ce564d6
--- /dev/null
+++ b/writeups/dracut/dracut.en.md
@@ -0,0 +1,241 @@
+# About Dracut
+TITLES:
+
+1. Dracut: how Linux kernel puts on a diet
+
+On Windows installing a driver is as easy as installing an app. Since Linux
+kernel is a monolithic kernel, all the code it can run has to be available at
+the build time.
+
+But there are so many devices Linux supports and Linux kernel has so many
+features so if you build all the kernel code into the image, you'll end up with
+a huge image. Linux distros have to distribute the kernel that works on most
+machines. The computers nowadays have so many different devices: most PCs now
+have NVME SSD, while some PCs still have SATA drives. Laptops have WiFi cards
+while PCs have ethernet cards. Technically, the Linux kernel has to be built
+with all the code for the devices to be able to use them.
+
+When built with all the features, the size of the image can easily pass 100MB.
+Most machines don't even use half of the features of kernel to function, so
+basically, most of that 100MB is wasted memory.
+
+To solve the image issue, modern distros build the device drivers in modules so
+that only the drivers needed for the machine get loaded onto the memory. So the
+kernel image you download off the package manager only contains essential code
+that can't be made as a module. The problem with this is that the drivers that
+kernel needs to boot could be built as modules.
+
+For example, the EXT4 root file system could be on a NVME drive. After the
+kernel image is loaded by the bootloader, in order for the kernel to mount the
+file system, it needs the device driver to use the device and the EXT4 file
+system module to mount the file system to root. If the file system is encrypted,
+the kernel needs the encryption module. If the file system is in LVM, it needs
+the module for that, too. To ship the modules necessary in this process, modern
+distros use what's called "initrd" or initial ramdisk. The initial ramdisk is an
+image of a read-only root file system that contains all the programs and kernel
+modules necessary in mounting the real root file system.
+
+The initial ramdisk is an optional feature of the Linux kernel. When making the
+kernel image, if you know the type of machine that will run the image, you'd
+know which drivers need to be in the image and which ones can be built as
+modules. So in that case, initial ramdisks don't make sense a lot of sense. The
+images for embedded Linux are built without the initial ramdisk support because:
+
+1. The code for initial ramdisk takes up a significant amount of memory. When
+ every kilobyte counts, initial ramdisk is the first one to go
+1. It's slow: in addition to the kernel image, the bootloader has to decompress
+ and load the image onto the memory. The kernel has to load the modules off
+ the image and then unload the image once it's finished with it
+
+So you wouldn't see much of initial ramdisk on embedded devices.
+
+The initial ramdisk image can be made in two different ways: it can contain all
+the kernel module the kernel is built with, the modern distros call this type
+"rescue image", the other type, called "hostonly" mode, only contains modules
+needed for your machine. Most distros generate the hostonly mode by default to
+reduce the size of the image.
+
+![alt text](image.png)
+
+The problem with initial ramdisks is that if you take the hard drive off the
+machine and put it in another machine, it might not be able to boot because
+different kernel modules might be required. This is especially the case when you
+upgrade your PC and want to use the existing copy of Linux without reinstalling.
+To solve this, you can drop to the bootloader menu by pressing the escape key.
+If you get dropped to the shell instead of the menu, you can run `normal`
+command to bring up the menu. Then you can use the rescue image to boot up the
+system to update the image[^2].
+
+![alt text](image-1.png)
+
+Ubuntu provides the convenience command `update-initramfs`. This one command
+will update the image for the newest kernel[^1].
+
+```sh
+update-initramfs -u
+```
+
+RHEL based distros provide `dracut` command. First, you need to discover the
+versions of the kernel installed in the file system by looking at the files in
+`/boot`. The structure, depending on the distro, will be either in the
+traditional flat model or the new BLS model. In this image here, the latest
+version is 4.18.0-553.8.1.el8_10.x86_64. So, to regenerate the image for that
+particular version, you can run the command like so.
+
+```sh
+dracut -f --kver 4.18.0-553.8.1.el8_10.x86_64
+```
+
+## No-hostonly initrd
+TITLES:
+
+1. Linux on this USB can boot on any machine
+1. Linux on USB: using Linux without formatting your Windows
+
+In the previous video, I talked about why `dracut` exists and how distros use
+dracut to reduce the size of initial ramdisk images. (TODO: QUEUE the
+annotation)
+
+You might be new to Linux and just want to try things out without messing around
+with your Windows partitions on your machine. And you may want to try Linux on a
+real hardware, not in a VM. You can always use a live version of Linux that most
+distros offer, but personally, I don't think that gives you a full experience.
+
+In this video, I'll demonstrate how you can use `dracut` to make initial ramdisk
+images that are capable of booting on any machine. This was not possible in the
+past because the firmware was not good enough to switch between operating
+systems. Now, with the EFI, the Linux bootloader is just an EFI program in a FAT
+partition. It makes it easier for the firmware to scan for the installed
+operating systems on your machine.
+
+![alt text](image-10.png)
+
+To have quality experience, I recommend using a performance USB drive with high
+write speed. I'm using Samsung's BAR Plus USB Flash Drive, which has a write
+speed of 30MB/s. The write speed of USB flash drives is still a taboo topic in
+the industry, so you'll have a hard time finding the write speed in the product
+information brochure. My rule of thumb is: if it's USB 3.1 or higher, made by a
+renowned manufacturer and it's a little bit pricey, the chances of it having a
+decent write speed is higher. I suggest doing a little bit of research before
+buying one. Usually, you can find product reviews and benchmarks people have
+posted online.
+
+![alt text](image-2.png)
+
+If you have a custom built PC, you probably don't have to worry about Bitlocker
+because you probably didn't opt-in for Bitlocker. You can check this on This PC.
+A little lock icon on your Windows drive means Bitlocker is active.
+
+![alt text](image-12.png)
+![alt text](image-11.png)
+
+If you plan to do this on your laptop: your Windows probably encrypted with
+Bitlocker. If it is, it's not a good idea to change the BIOS settings to change
+the boot order because Bitlocker will lock up if the BIOS settings have been
+changed. Don't blame me, blame Microsoft for having shitty product design.
+
+You can still boot to USB without changing the boot order if you use the BIOS
+boot menu. All the venders have different keys, though: depending on your
+machine, it could be F9, 10, 11, 12, escape or even delete key. You have to
+figure that out yourself.
+
+Now, let's fire up the VM. In this video, I'll use VirtualBox. You can also use
+VMware Player. It doesn't really matter which one you use as long as: (TODO:
+show settings)
+
+- You can launch your VM with EFI as system firmware
+- You can redirect the USB to the VM
+
+For VirtualBox, make sure you install the extension as well so that the VM has
+full USB 3.0 capabilities.
+
+(TODO: play through: installing Ubuntu on a USB using VirtualBox, not attaching
+a HDD)
+
+Now that we've installed Linux on the USB drive, I'll now show how you can the
+rebuild initial ramdisks so that the USB works on any x86 machine.
+
+You don't really have to do this. You can always update your initial ramdisk
+images after booting up the rescue image. Because of the size, having the full
+initial ramdisk can slow the boot up process by a little bit. But having a full
+initial ramdisk is great when you have to switch between the different PCs, so
+if that's the case, you should definitely go through this process as well.
+
+(TODO: show how to drop to GRUB and boot using the rescue image)
+
+Now, let's have a look at the manuals.
+
+```sh
+man 8 dracut
+```
+
+![alt text](image-3.png)
+
+Capital H option turns on the hostonly mode. Capital N option disables it. But
+how does the distro override this setting?
+
+```sh
+man 5 dracut.conf
+```
+
+![alt text](image-4.png)
+
+So the dracut command reads settings from these files. And it says here that the
+mode can be set with the `hostonly` setting.
+
+![alt text](image-7.png)
+
+Now let's see what files are in those directories.
+
+```sh
+ls -l /etc/dracut.conf /etc/dracut.conf.d/*.conf /usr/lib/dracut/dracut.conf.d/*.conf
+```
+
+![alt text](image-6.png)
+
+Okay, does any of these files set the `hostonly` setting?
+
+```sh
+grep hostonly /etc/dracut.conf /etc/dracut.conf.d/*.conf /usr/lib/dracut/dracut.conf.d/*.conf
+```
+
+![alt text](image-8.png)
+
+There it is. Now, we want to override that setting. Notice that the hostonly
+setting is from the file named `01-dist.conf`. This means that we can prefix our
+file name bigger than 01 to override settings from that file. We're gonna place
+it in `/etc/dracut.conf.d` so other people will know in the future that it's
+sysadmin's custom config, not the distro's.
+
+```sh
+echo 'hostonly="no"' | sudo tee /etc/dracut.conf.d/90-no-hostonly.conf
+```
+
+Now, I'm making sure that the command worked.
+
+![alt text](image-9.png)
+
+we see the file we just made. Now we can run dracut to test if it applies.
+
+(DEMO: ls -h first to keep the size of the old initrd, regen the initrds, do ls
+-h again to compare the size)
+
+You can see that it worked by comparing the sizes of the old and the new image.
+We can tell it is applied because the new image is bigger. You might think that
+that amount of space is wasted, but that's not the case because the image is
+only used to mount the root file system. So soon after mounting the root file
+system, the kernel unloads it to reclaim the memory. This config will apply to
+the future versions of kernel installed by the package manager when you update
+the system.
+
+We can now test the image on a real machine.
+
+(DEMO: boot to the USB using the boot menu)
+
+There you go. You now have a Linux on a USB. If you're not happy with Linux and
+want to go back to using Windows, you can just unplug the thing. You didn't do
+anything to your Windows partitions so everything should work just fine as you
+left them.
+
+[^1]: https://manpages.ubuntu.com/manpages/focal/en/man8/update-initramfs.8.html
+[^2]: https://wiki.ubuntu.com/RecoveryMode
diff --git a/writeups/dracut/dracut.ko.md b/writeups/dracut/dracut.ko.md
new file mode 100644
index 0000000..99596fd
--- /dev/null
+++ b/writeups/dracut/dracut.ko.md
@@ -0,0 +1,234 @@
+# Dracut에 대해
+TITLES:
+
+1. Dracut: 리눅스 커널의 다이어트법
+
+윈도에서 드라이버 설치는 프로그램 설치하는 것 처럼 간단합니다. 리눅스는 모노리딕
+커널이다 보니 커널이 구동해야 할 모든 커널이 빌드할 때 있어야 합니다.
+
+리눅스가 지원하는 장치의 종류가 다양하고 지원하는 기능도 많습니다. 그래서 모든
+리눅스 코드를 한 이미지로 빌드하면 크기가 큽니다. 리눅스 배포판은 대부분의
+컴퓨터에서 동작할 수 있는 커널을 배포해야 하는데, 요즘 컴퓨터에는 다양한 장치가
+달려 있습니다: 요즘 PC는 모두 NVME SSD를 사용하고, 좀 오래된 PC는 SATA를
+사용하고, 노트북은 와이파이 카드가 달려있는 반면에 PC에는 주로 랜카드가 달려
+있는데요. 리눅스 커널은 이 모든 장치들의 코드를 가지고 있어야 합니다.
+
+커널의 모든 기능을 켜 빌드하면 이미지의 크기는 쉽게 100 메가바이트를 넘게
+되는데요. 대부분의 컴퓨터는 이 절반도 사용하지 않으므로 100 메가바이트의
+메모리가 낭비되게 됩니다.
+
+커널 이미지 크기 문제를 해결하기 위해서 현대 배포판은 드라이버를 모듈로 가지고
+있어, PC 구동에 필요한 모듈만 메모리에 로드되는데요. 그러다보니 패키지 매니저로
+설치하는 커널 이미지에는 모듈로 빠질 수 없는 가장 핵심적인 코드만 담겨
+들어있습니다. 여기서 문제는 부팅에 필요한 드라이버까지 모듈로 빠져있다는
+것입니다.
+
+예를 들어, EXT4로 포맷된 루트 파일시스템이 NVME 드라이브에 존재할 수 있습니다.
+커널이 로드되고나서 그 파일 시스템을 마운트하려면 그에 맞는 장치 드라이버와 파일
+시스템 드라이버가 필요합니다. 파일 시스템이 LVM으로 되어있거나 암호화가
+되어있으면 그 드라이버들도 필요할 건데요, 이에 필요한 모듈을 부팅 때 사용하기
+위해서 현대 배포판은 "initrd" 혹은 initial ramdisk(초기 램디스크)를 사용합니다.
+초기 램디스크는 읽기 전용 루트 파일시스템이며, 실제 루트 파일시스템을 마운트하기
+위해 필요한 프로그램과 모듈이 담겨있습니다.
+
+초기 램디스크는 리눅스 커널의 선택적인 기능입니다. 커널 이미지를 만들 때,
+이미지가 사용될 시스템의 사양을 알고 있다면 어떤 드라이버를 이미지에 담아야하고
+어떤 드라이버를 모듈로 빼야할지 알 수 있습니다. 이런 상황에서는 초기 램디스크
+사용이 적합하지 않습니다. 그래서 임베디드 리눅스에는 초기 램디스크가 사용되지
+않는데, 그 이유는:
+
+1. 첫째로 초기 램디스크 기능 지원에 필요한 코드의 크기가 큽니다. 킬로바이트
+ 단위까지 아껴야하는 상황이라면 가장 쉽게 뺄 수 있는 부분이 초기 램디스크 지원
+ 코드입니다.
+1. 두번째로 느립니다: 부트로더가 커널 이미지 뿐만 아니라 초기 램디스크 이미지
+ 압축을 풀어 메모리에 로드해야 하며, 커널은 필요한 모듈을 이미지에서 꺼내서
+ 로드해야 하고 사용이 끝난 초기 램디스크 이미지를 언마운트 해야 합니다.
+
+이러한 이유 때문에 임베디드 리눅스에서는 초기 램디스크가 사용되는 것을 보기
+힘들겁니다.
+
+초기 램디스크는 크게 두가지 방법으로 생성 가능한데: 모든 커널 모듈을 이미지에
+담는 방법이 있고 (이를 현대 배포판은 rescue 이미지라고 부릅니다), "hostonly"
+모드라고 해서 해당 PC에 필요한 모듈만 담는 방식이 있습니다. 크기 문제 때문에
+배포판은 대부분 후자인 hostonly 모드를 기본적으로 생성하도록 설정되어 있는데요.
+
+![alt text](image.png)
+
+초기 램디스크 사용의 문제는, 리눅스가 설치된 드라이브를 다른 PC로 옮기면 부팅이
+되지 않는 문제가 있을 수 있다는 겁니다. 부팅에 필요한 모듈이 다르면 생길 수 있는
+문제인데요, 특히나 새로운 PC를 뽑았는데 리눅스는 다시 설치하고 싶지 않다면 생길
+수 있는 문제입니다. 이 때는 부팅 시 ESC 키를 계속 눌러 부트로더 메뉴로 진입한
+뒤, 커맨드 라인으로 떨어졌다면 `normal` 명령으로 메뉴를 띄우고, rescue 이미지를
+사용해 부팅한 뒤 이미지를 재생성하는 방법이 있습니다[^2].
+
+![alt text](image-1.png)
+
+우분투는 `update-initramfs`라는 편의 명령어를 제공합니다. 이 명령으로 최신
+커널의 초기 램디스크 이미지를 업데이트할 수 있습니다[^1].
+
+```sh
+update-initramfs -u
+```
+
+레드헷 기반 배포판은 `dracut`이라는 명령을 제공합니다. 우선 `/boot`에 있는
+파일들을 확인해 시스템에 설치된 커널 버전들 확인합니다. 이 디렉터리의 구조는,
+배포판에 따라, 일반 혹은 BLS 모델 구조로 되어있습니다. 이 스크린샷을 볼 때, 최신
+버전의 커널은 4.18.0-553.8.1.el8_10.x86_64 입니다. 이 커널 버전의 초기 램디스크
+이미지를 재생성하려면 명령을 다음과 같이 사용할 수 있습니다.
+
+```sh
+dracut -f --kver 4.18.0-553.8.1.el8_10.x86_64
+```
+
+## No-hostonly initrd
+TITLES:
+
+1. 모든 PC에서 쓸 수 있는 리눅스 USB
+1. 윈도 포맷하지 않고 USB에 리눅스 설치하기
+
+전편에서는 `dracut`이 왜 있는지, 그리고 배포판이 `dracut`을 사용해 어떻게 초기
+램디스크 이미지 크기를 줄이는지 알아봤습니다.
+
+이 비디오를 보고계시는 시청자께서 리눅스를 처음 접하시는 분이시거, 리눅스를
+가상머신이 아닌 PC에서 시용하고 싶으실 수 있으신데요. 라이브 버전의 리눅스를
+사용하는 방법이 있지만, 저는 그게 리눅스를 맛볼 수 있는 그리 좋은 방법이
+아니라고 봅니다. 그리고 윈도 파티션을 수정하는 등의 작업을 하기 싫으셔서
+망설였을 수도 있으실 겁니다.
+
+이번 편에서는 제가 `dracut`을 사용해 어느 PC에서나 사용 가능한 초기 램디스크
+이미지를 만드는 방법을 보여드리겠습니다. 이 방법은 과거 마스터 부트 레코드가
+사용되던 시절에는 가능하지 않았었는데, 요즘은 펌웨어가 발전해 바이오스로
+운영체제를 찾아 선택하는 것이 쉬워졌습니다. 요즘은, EFI를 사용하면, 리눅스
+부트로더는 FAT 파티션에 존재하는 단순한 EFI 프로그램이기 때문에 바이오스가
+손쉽게 시스템에 설치된 운영체제들을 탐색하는게 간편해 졌습니다.
+
+![alt text](image-10.png)
+
+사용할 USB는 쓰기 속도가 괜찮은 제품을 추천해 드리고 싶은데요. 저는 개인적으로
+초당 30MB를 지원하는 삼성 바 플러스를 사용했습니다. USB의 쓰기 속도는 여전히
+제조사 사이에서 부끄러운 이야깃꺼리로 남아있다보니, 상품 정보에 쓰기 속도가 적힌
+USB를 찾기 힘드실 수 있습니다. USB를 선택하시는데 제가 드리고싶은 팁은: USB 3.0
+이상이고, 유명한 제조사에서 나왔고, 가격이 싸지 않는 제품일 수록 쓰기 속도가
+높을 수 있다는 것입니다. 그렇지만 혹시 모르니 직접 상품 리뷰나 벤치마크 등을
+찾아보는 등으로 확실히 집고 넘어가시기를 바랍니다.
+
+![alt text](image-2.png)
+
+조립 PC를 사용하신다면 비트락커 문제는 크게 걱정하지 않으셔도 됩니다. 하지만
+노트북를 사용하시는 분들께 경고드리는데: 윈도 비트락커가 켜져있으면 바이오스에서
+부팅 순서를 변경하는 것을 피하셔야 합니다. 비트락커는 바이오스 설정이 조금이라도
+변경되면 윈도를 잠궈버려서 그런데요. 이건 제 잘못 아니고, 마이크로소프트를
+탓하세요.
+
+비트라커가 켜져있는지의 여부는 "이 PC"에서 확인할 수 있습니다. 윈도 드라이브에
+작은 자물쇠 아이콘이 있다면 비트락커가 활성화 되어있다는 뜻입니다.
+
+![alt text](image-12.png)
+![alt text](image-11.png)
+
+바이오스의 부팅 메뉴를 사용해 바이오스 설정을 건들이지 않고도 USB로 부팅할 수
+있습니다. 부팅 메뉴 접근 키는 제조사마다 다 다릅니다: 제품에 따라 F9, F10, F11,
+F12, ESC 키, 심지어는 델리트 키 일 수 있는데요. 이건 직접 찾으셔야 합니다.
+
+
+이제 가상머신을 돌려볼건데요. 저는 버츄얼박스를 사용할 것입니다. VMware
+플레이어를 사용하셔도 됩니다. 어떤 가상화 소프트웨어를 사용하는지는 그리 중요하지
+않은데, (TODO: show settings)
+
+- VM의 펌웨어를 EFI로 설정할 수 있고,
+- USB를 가상머신으로 연결할 수 있기만 하면 됩니다
+
+버츄얼박스를 사용한다면 익스텐션도 설치해서 가상머신에서 USB 3.0을 사용할 수
+있게 해야 합니다.
+
+(TODO: play through: installing Ubuntu on a USB using VirtualBox, not attaching
+a HDD)
+
+이제 리눅스를 설치했으니, 이 USB를 다른 PC에서도 쓸 수 있게 하기 위해서 초기
+램디스크 이미지를 재생성하는 법을 알려드리겠습니다.
+
+복구 이미지를 사용해서 부팅한 뒤 이미지를 재생성할 수 있다보니 굳이 이 작업을
+하시지 않아도 되는데요. 크기 때문에 풀 사이즈 이미지를 사용하면 부팅 시간이 약간
+늘어나는 불이익이 있지만, 풀 사이즈 이미지를 사용하면 매번 다른 PC에서 사용할
+때마다 이미지를 재생성해야 해도 되지 않는 이점이 있기 때문에, 여러 PC에서
+돌려가며 USB를 사용하실 계획이라면 이 작업을 하시는 것을 추천합니다.
+
+(TODO: show how to drop to GRUB and boot using the rescue image)
+
+이제 좀 메뉴얼을 읽어봅니다.
+
+```sh
+man 8 dracut
+```
+
+![alt text](image-3.png)
+
+
+메뉴얼을 보니, 대문자 H 옵션을 사용해서 호스트온리 모드를 킬 수 있고, 대문자
+N을 사용해서 이를 끌 수 있다고 되어있습니다. 자, 이제 그건 알겠고, 배포판은
+어떻게 해서 이 설정을 바꿀까요?
+
+```sh
+man 5 dracut.conf
+```
+
+![alt text](image-4.png)
+
+Dracut 명령이 이 파일들에서 설정을 읽는다고 나와있습니다. 그리고 여기 나와았는
+것처럼, `hostonly` 설정으로 옵션을 세팅할 수 있다고 나와있습니다.
+
+![alt text](image-7.png)
+
+어떤 파일들이 저 경로에 존재하는지 확인해 봅시다.
+
+```sh
+ls -l /etc/dracut.conf /etc/dracut.conf.d/*.conf /usr/lib/dracut/dracut.conf.d/*.conf
+```
+
+![alt text](image-6.png)
+
+이제, `hostonly` 설정은 어디에 있을까요?
+
+```sh
+grep hostonly /etc/dracut.conf /etc/dracut.conf.d/*.conf /usr/lib/dracut/dracut.conf.d/*.conf
+```
+
+![alt text](image-8.png)
+
+여기 있네요. 파일명이 `01-dist.conf`로 되있는 것을 볼 때, 01보다 큰 이름으로
+시작하는 파일을 만들어서 저 파일에 있는 세팅을 덮어쓸 수 있다는 것을 확인할 수
+있습니다. `/etc/dracut.conf.d`에 있는 디렉터리에 파일을 생성해서 다른 분이 이
+설정을 발견했을 때, 이 설정은 배포판 설정이 아니라 관리자 재량의
+커스터마이징이라는 것을 알 수 있게 합니다.
+
+```sh
+echo 'hostonly="no"' | sudo tee /etc/dracut.conf.d/90-no-hostonly.conf
+```
+
+이제 이 명령이 먹혔는지 확인하고
+
+![alt text](image-9.png)
+
+설정 파일이 만들어 졌다는 것을 확인했으니, 이제 `dracut`을 사용해서 실제로
+설정이 적용되는지 확인하겠습니다.
+
+(DEMO: ls -h first to keep the size of the old initrd, regen the initrds, do ls
+-h again to compare the size)
+
+이전 이미지의 크기와 비교해보면, 새로 생성한 이미지의 크기가 큰 것을 확인할 수
+있습니다. 설정이 잘 적용되었다는 뜻 입니다. 저 큰 이미지가 부팅되고 나서도
+메모리에 남아있다고 생각하실 수 있는데, 저 이미지는 설명했던 것처럼 루트
+파일시스템을 마운트하는데만 사용되므로, 실제 루트 파일시스템이 마운트되고 나면
+사라지게 되니 걱정하지 않으셔도 됩니다. 이 설정은 추후 패키지 매니저로 시스템을
+업데이트할 때 설치되는 커널에도 적용됩니다.
+
+이제 실제 머신에서 테스트하여 보겠습니다.
+
+(DEMO: boot to the USB using the boot menu)
+
+다 잘 되네요! 이제 이 USB로 리눅스를 사용하시면 됩니다. 리눅스가 마음에 들지
+않으시면 그냥 USB를 빼버리시면 됩니다. 윈도 파티션을 그대로 냅뒀으니 윈도는
+그대로 있던데로 잘 돌겁니다.
+
+[^1]: https://manpages.ubuntu.com/manpages/focal/en/man8/update-initramfs.8.html
+[^2]: https://wiki.ubuntu.com/RecoveryMode
diff --git a/writeups/dracut/image-1.png b/writeups/dracut/image-1.png
new file mode 100644
index 0000000..089da64
--- /dev/null
+++ b/writeups/dracut/image-1.png
Binary files differ
diff --git a/writeups/dracut/image-10.png b/writeups/dracut/image-10.png
new file mode 100644
index 0000000..54e397a
--- /dev/null
+++ b/writeups/dracut/image-10.png
Binary files differ
diff --git a/writeups/dracut/image-11.png b/writeups/dracut/image-11.png
new file mode 100644
index 0000000..40ad323
--- /dev/null
+++ b/writeups/dracut/image-11.png
Binary files differ
diff --git a/writeups/dracut/image-12.png b/writeups/dracut/image-12.png
new file mode 100644
index 0000000..571eb3c
--- /dev/null
+++ b/writeups/dracut/image-12.png
Binary files differ
diff --git a/writeups/dracut/image-2.png b/writeups/dracut/image-2.png
new file mode 100644
index 0000000..bfc445d
--- /dev/null
+++ b/writeups/dracut/image-2.png
Binary files differ
diff --git a/writeups/dracut/image-3.png b/writeups/dracut/image-3.png
new file mode 100644
index 0000000..41bfd22
--- /dev/null
+++ b/writeups/dracut/image-3.png
Binary files differ
diff --git a/writeups/dracut/image-4.png b/writeups/dracut/image-4.png
new file mode 100644
index 0000000..fa2a01f
--- /dev/null
+++ b/writeups/dracut/image-4.png
Binary files differ
diff --git a/writeups/dracut/image-5.png b/writeups/dracut/image-5.png
new file mode 100644
index 0000000..49daefd
--- /dev/null
+++ b/writeups/dracut/image-5.png
Binary files differ
diff --git a/writeups/dracut/image-6.png b/writeups/dracut/image-6.png
new file mode 100644
index 0000000..a24d4dc
--- /dev/null
+++ b/writeups/dracut/image-6.png
Binary files differ
diff --git a/writeups/dracut/image-7.png b/writeups/dracut/image-7.png
new file mode 100644
index 0000000..dc7dc72
--- /dev/null
+++ b/writeups/dracut/image-7.png
Binary files differ
diff --git a/writeups/dracut/image-8.png b/writeups/dracut/image-8.png
new file mode 100644
index 0000000..a7d22f6
--- /dev/null
+++ b/writeups/dracut/image-8.png
Binary files differ
diff --git a/writeups/dracut/image-9.png b/writeups/dracut/image-9.png
new file mode 100644
index 0000000..5d422d3
--- /dev/null
+++ b/writeups/dracut/image-9.png
Binary files differ
diff --git a/writeups/dracut/image.png b/writeups/dracut/image.png
new file mode 100644
index 0000000..6825ae7
--- /dev/null
+++ b/writeups/dracut/image.png
Binary files differ