This is a copy of a document maintained in my fork of the **pms-docker** repo, found @ https://github.com/kennethd/pms-docker/blob/fado/fado.md

fado is a headless trigkey minipc running a few services from my apartment, this document contains notes about the setup & maintenance of the plex server running there.

docker image

The Plex server is running via the plexinc/pms-docker image, configured via docker-compose.fado.yml in this directory, which is pointed to via a symlink (note I am on branch fado):

kenneth@fado ~/git/plex-pms-docker (fado) $ ls -lh docker-compose.yml
lrwxrwxrwx 1 kenneth kenneth 23 Feb  4  2024 docker-compose.yml -> docker-compose.fado.yml

Allowing one to manage the server process via the usual commands:

kenneth@fado ~/git/plex-pms-docker (fado) $ docker-compose up
kenneth@fado ~/git/plex-pms-docker (fado) $ docker ps
CONTAINER ID   IMAGE                COMMAND          CREATED        STATUS                  PORTS     NAMES
1e0f25d31684   plexinc/pms-docker   "/init"          16 hours ago   Up 16 hours (healthy)             plex

etc…

useful commands

A reference of mostly CLI tools useful for maintinaing the digital library

ripping cds

Lots of options for ripping CDs and converting audio files, abcde looks nice for being configurable and outputting directly to ogg/flac/mp3, but it wants to install a boatload of stuff, including an MTA, which turns me off quite a bit

cdparanoia

My old favorite, particularly for old scratchy CDs, it only ouputs .wav or .aiff files, which then need to be converted. It has a batch mode which will output one file per track, and is good at detecting your CD drive, so is usually as simple as:

$ cdparanoia -B

lame

lame is the classic mp3 encoder I favored back in the oughts, pretty straightforward, converts the .wavs outputted by cdparanoia into .mp3, allowing the setting of id3 tags, though it requires yet another step for renaming the files:

$ for NUM in $(seq 18); do lame --ta Migala --tl "diciembre, 3 a.m." --ty 1997 --tc "Acuarela NOIS 1002" --tn $NUM/18 track$(printf "%02d" $NUM).cdda.wav track$(printf "%02d" $NUM).mp3 ; done

We still have to go back and add the song titles however…

id3v2

id3 tagger utility with support for version 2 tags

Skipping ahead to incorporate the next section into a pipeline, iterate over the song titles and finish off the id3 tags and rename with a series of commands like this:

$ id3v2 -t "Isabella Afterhours" track13.mp3  && id3v2 -l track13.mp3 && lltag-rename --yes track13.mp3  && ls

In the old days there were services like MusicBrainz, etc that would save you the trouble of ever typing the id3 tag values, I don’t know if they still exist, I never minded it myself.

The output from that second command in the pipeline will look something like this:

kenneth@fado /mnt/seagate/music/migala/diciembre,_3_a.m. $ id3v2 -l track01.mp3
id3v1 tag info for track01.mp3:
Title  : Dead Moon, Cactus & 10% Blue    Artist: Migala
Album  : diciembre, 3 a.m.               Year: 1997, Genre: Unknown (255)
Comment: Acuarela NOIS 1002              Track: 1

id3v2 tag info for track01.mp3:
TSSE (Software/Hardware and settings used for encoding): LAME 64bits version 3.100 (http://lame.sf.net)
TPE1 (Lead performer(s)/Soloist(s)): Migala
TALB (Album/Movie/Show title): diciembre, 3 a.m.
TYER (Year): 1997
COMM (Comments): ()[eng]: Acuarela NOIS 1002
TRCK (Track number/Position in set): 1/18
TLEN (Length): 81786
COMM (Comments): (ID3v1 Comment)[XXX]: Acuarela NOIS 1002
TIT2 (Title/songname/content description): Dead Moon, Cactus & 10% Blue

lltag

For renaming the files based on id3 tag values, I am currently using this alias, or the various artists alt:

alias lltag-rename="lltag --rename %a--%A--%n--%t --rename-min --rename-sep _ --rename-regexp \"s/'//\""
alias lltag-rename-va="lltag --rename %A--%n--%a--%t --rename-min --rename-sep _ --rename-regexp \"s/'//\""

lltag does also support setting tags, id3v2 support is still marked as experimental, and default id3v1 limits fields to 30 chars:

$ lltag -a "Maths Balance Volumes" \
        -A "Cattle Skulls and Railroad Tracks" \
        -n4 -t "Midwestern Mountain Rumble/The Rolling Muddist Rumble"  \
        --rename %a--%A--%n--%t --rename-min \
        track_4.mp3

maths balance volumes--cattle skulls and railroad tracks--04--midwestern mountain rumble-the rolling muddist rumble.mp3:
  ARTIST=Maths Balance Volumes
  TITLE=Midwestern Mountain Rumble/The
  ALBUM=Cattle Skulls and Railroad Tra
  NUMBER=4
  COMMENT=Chocolate Monk

ripping dvds

If the DVD is not encrypted, it is as simple as cat-ting the .VOB files together and converting to another format, start by mounting the DVD as a filesystem:

kenneth@fado /mnt/seagate/dvd/Home Movies $ sudo mkdir -p /mnt/cddvdw
kenneth@fado /mnt/seagate/dvd/Home Movies $ sudo mount -o ro /dev/sr0 /mnt/cddvdw/
kenneth@fado /mnt/seagate/dvd/Home Movies $ ls /mnt/cddvdw/
AUDIO_TS  VIDEO_TS

Your drive may be something different than /dev/sr0, look at dmesg.

Examine the VIDEO_TS directory. Look at the VTS_*.VOB files, the format has a file size limit of 1gb, so for a DVD containing a single movie, you will probably see a series of 1gb files called VTS_01_0.VOB, VTS_01_1.VOB, etc, until the last one VTS_01_n.VOB which is less than 1gb.

If there are extras, etc on the disc they will show up as VTS_02_*.VOB, and so on.

Note I skip VTS_01_0.VOB, a much smaller file that I think is a menu screen:

$ cat /mnt/cddvdw/VIDEO_TS/VTS_01_{1,2,3,4}.VOB > Home\ Movies.vob

To convert to .mp4, you can now do something like:

$ ffmpeg -i Home\ Movies.vob -vcodec h264 -acodec mp2 Home\ Movies.mp4

There are a ton of options, see some terse intro examples here.

software for encrypted dvds

For most commercial DVDs, you’ll need VLC’s libdvdcss to be installed on your system.

Example installation on debian, with a couple of related things:

$ sudo apt install software-properties-common
$ sudo apt-add-repository contrib
$ sudo apt update && sudo apt upgrade
$ sudo apt install libdvd-pkg
$ sudo dpkg-reconfigure libdvd-pkg
$ sudo apt install regionset libavcodec-extra

See this HOWTO for a bit more description.

For ripping encrypted DVDs on the command line, dvdbackup is preferred.

$ sudo apt install dvdbackup libdvdread8 libdvdread-dev

handbrake is a popular package that can be used to rip & transcode dvds, I think it has some Blu-Ray features that ffmpeg doesn’t, but I don’t own any Blu-Ray discs, so I’ve never tried it. There is a separate CLI package if you want to try it:

$ sudo apt install handbrake-cli

It has a very windows-style interface

create backup of encrypted dvd

Begin by examining the DVD with dvdbackup -I (again, your device may be something other than /dev/sr0):

kenneth@fado /mnt/seagate/dvd/Karamazov Brothers $ dvdbackup -I -i /dev/sr0
libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient
libdvdread: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x00000122
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x00000195
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x00002f8a
libdvdread: Elapsed time 0
libdvdread: Found 1 VTS's
libdvdread: Elapsed time 0
DVD-Video information of the DVD with title "Karamazov22"

File Structure DVD
VIDEO_TS/
        VIDEO_TS.IFO         12288        12.00 KiB
        VIDEO_TS.VOB         40960        40.00 KiB
        VTS_00_0.IFO         12288        12.00 KiB
        VTS_00_0.VOB         40960        40.00 KiB
        VTS_01_0.IFO        182272       178.00 KiB
        VTS_01_0.VOB      24094720        22.98 MiB
        VTS_01_1.VOB    1073739776      1024.00 MiB
        VTS_01_2.VOB    1073739776      1024.00 MiB
        VTS_01_3.VOB    1073739776      1024.00 MiB
        VTS_01_4.VOB    1073739776      1024.00 MiB
        VTS_01_5.VOB    1073739776      1024.00 MiB
        VTS_01_6.VOB    1073739776      1024.00 MiB
        VTS_01_7.VOB    1073739776      1024.00 MiB
        VTS_01_8.VOB     835135488       796.45 MiB

Main feature:
        Title set containing the main feature is 1
        The aspect ratio of the main feature is 4:3
        The main feature has 1 angle
        The main feature has 1 audio track
        The main feature has 1 subpicture channel
        The main feature has a maximum of 8 chapters in one of its titles
        The main feature has a maximum of 2 audio channels in one of its titles

Title Sets:

        Title set 1
                The aspect ratio of title set 1 is 4:3
                Title set 1 has 1 angle
                Title set 1 has 1 audio track
                Title set 1 has 1 subpicture channel

                Titles included in title set 1 are
                        Title 1:
                                Title 1 has 1 chapter
                                Title 1 has 2 audio channels
                        Title 2:
                                Title 2 has 1 chapter
                                Title 2 has 2 audio channels
                        Title 3:
                                Title 3 has 1 chapter
                                Title 3 has 2 audio channels
                        Title 4:
                                Title 4 has 8 chapters
                                Title 4 has 2 audio channels
                        Title 5:
                                Title 5 has 8 chapters
                                Title 5 has 2 audio channels
                        Title 6:
                                Title 6 has 8 chapters
                                Title 6 has 2 audio channels
                        Title 7:
                                Title 7 has 8 chapters
                                Title 7 has 2 audio channels
                        Title 8:
                                Title 8 has 8 chapters
                                Title 8 has 2 audio channels
                        Title 9:
                                Title 9 has 8 chapters
                                Title 9 has 2 audio channels

There are two options for creating the backup, --feature or --mirror, --feature will only create backup files for the main program, --mirror will also back up any extras that are included on the DVD.

$ dvdbackup -i /dev/sr0 --feature --progress

For discs with multiple films/episodes/streams there is also an option to backup one title set at a time --title 2 will back up the VTS_02_*.VOB files, --title 3 will do VTS_03_*.VOB, etc..

rip dvd with subtitle track

First, concat all of the .VOB files into one big one:

$ cat VTS_03_{1,2,3,4,5}.VOB > Heimat\ Chapter\ 1\ -\ Fernweh.vob

Next, examine the file to identify what’s what:

$ ffmpeg -analyzeduration 100M -probesize 100M -i Heimat\ Chapter\ 1\ -\ Fernweh.vob

This example asks ffmpeg to scan the first 100mb of the file, .VOB files don’t include a header describing the streams contained within, and if we only look at the first few seconds (default is 5 seconds) the subtitle info will probably not yet be present.

This reports a bunch of stuff about your current version version of ffmpeg, options it was compiled with and so on, at the end there is a list of streams found in the .VOB file:

Input #0, mpeg, from 'Heimat Chapter 1 - Fernweh.vob':
  Duration: 01:59:22.18, start: 0.280000, bitrate: 5168 kb/s
  Stream #0:0[0x1bf]: Data: dvd_nav_packet
  Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, top first), 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn
    Side data:
      cpb: bitrate max/min/avg: 9000000/0/0 buffer size: 1835008 vbv_delay: N/A
  Stream #0:2[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s
  Stream #0:3[0x20]: Subtitle: dvd_subtitle

Stream 0:0 is for dvd navigation, we don’t need that, 0:1 is the movie itself, 0:2 is audio, and 0:3 the english subtitles, we want to keep all three of those.

For a Plex-compatible output capable of combining these three streams into a single container, we will use a .mkv file format, encoding the video with H.264 codec and audio as mp3.

$ ffmpeg -analyzeduration 100M -probesize 100M  \
    -i Heimat\ Chapter\ 1\ -\ Fernweh.vob \
    -map 0:1 -map 0:2 -map 0:3 \
    -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
    -codec:v libx264 -crf 21 -codec:a libmp3lame -qscale:a 2 -codec:s copy \
    -threads 16 \
    Heimat\ Chapter\ 1\ -\ Fernweh.mkv

Once again, we need the -analyzeduration 100M -probesize 100M args (and they must come first) to instruct ffmpeg to scan for all the streams we want to extract.

Alter the threads count to match the number of cores you have.

The other options are copied from, and summarized at, this page

files

The files are served from an external usb3 drive formatted with an ext4 fs.

For maintenance, each of the directories being served is owned by me, group media:

drwxrwsr-x 175 kenneth media 4.0K Jan 12 19:35 /mnt/seagate/lossless
drwxrwsr-x  46 kenneth media 8.0K Feb  6  2024 /mnt/seagate/movies
drwxr-sr-x 609 kenneth media  16K Jan 13 01:14 /mnt/seagate/music
drwxr-xr-x  56 kenneth media 4.0K Jan 12 23:51 /mnt/seagate/plex-audioblogs
drwxr-xr-x 255 kenneth media  12K Jan 13 19:10 /mnt/seagate/plex-live-shows
drwxr-sr-x 207 kenneth media  12K Feb  6  2024 /mnt/seagate/plex-movies
drwxr-xr-x   2 kenneth media 4.0K Jan 13 19:51 /mnt/seagate/plex-mst3k
drwxrwsr-x  32 kenneth media 4.0K Jan 24  2022 /mnt/seagate/torrents
drwxrwsr-x  45 kenneth media 4.0K Jan 13 03:12 /mnt/seagate/tv

TV Shows

I don’t know exactly what the requirements are to make Plex recognize newly added files, but I finally got my .mkv files to show up in my collection & have verified that the subtitles work by putting them in a directory of the same name, and including the s01e01 style episode numbering scheme (previously I just had “Chapter 1”, etc..):

kenneth@fado /mnt/seagate $ find  tv/Heimat\ \(1984\)/  -name '*.mkv' | sort
tv/Heimat (1984)/Disc 1/Heimat (1984) - s01e01 - Fernweh.mkv
tv/Heimat (1984)/Disc 2/Heimat (1984) - s01e02 - Die Mitte der Welt.mkv
tv/Heimat (1984)/Disc 2/Heimat (1984) - s01e03 - Weinacht wie noch nie.mkv
tv/Heimat (1984)/Disc 3/Heimat (1984) - s01e04 - Reichshöhenstraße.mkv
tv/Heimat (1984)/Disc 3/Heimat (1984) - s01e05 - Auf und davon und zurück.mkv
tv/Heimat (1984)/Disc 3/Heimat (1984) - s01e06 - Heimatfront.mkv
tv/Heimat (1984)/Disc 4/Heimat (1984) - s01e07 - Die Liebe der Soldaten.mkv
tv/Heimat (1984)/Disc 4/Heimat (1984) - s01e08 - Der Amerikaner.mkv
tv/Heimat (1984)/Disc 5/Heimat (1984) - s01e09 - Hermännchen.mkv
tv/Heimat (1984)/Disc 6/Heimat (1984) - s01e10 - Die stolzen Jahre.mkv
tv/Heimat (1984)/Disc 6/Heimat (1984) - s01e11 - Das Fest der Lebenden und der Toten - Herbst 1982.mkv

Movies

Plex serves the tv files directly, but because of the naming convention for movies, I created a separate directory dedicated to plex:

kenneth@fado /mnt/seagate $ ls -1 movies/  | head -n6
Andrei Tarkovsky - 1966 - Andrei Rublev
Andrei Tarkovsky - 1972 - Solaris
Andrei Tarkovsky - 1979 - Stalker
by-title
by-year
Dario Argento - 1977 - Suspira.mkv

kenneth@fado /mnt/seagate $ ls -1 plex-movies/  | head -n6
Across 110th Street (1972) {imdb-tt0068168}
A Girl in Every Port (1928) {imdb-tt0018937}
American Movie (1999) {imdb-tt0181288}
And God Said To Cain (1970) {imdb-tt0064273}
Andrei Rublev (1966) {imdb-tt0060107}
Arsenal (1929) {imdb-tt0019649}

Again, it seems to work best if files within the per-movie directory are named the same as the directory itself

kenneth@fado /mnt/seagate $ ls -l ./plex-movies/Andrei\ Rublev\ \(1966\)\ \{imdb-tt0060107\}/
total 1434724
-rw-r--r-- 1 kenneth media 734439424 Feb  4  2024 'Andrei Rublev (1966) {imdb-tt0060107} - Part 1.avi'
-rw-r--r-- 1 kenneth media     55641 Feb  4  2024 'Andrei Rublev (1966) {imdb-tt0060107} - Part 1.srt'
-rw-r--r-- 1 kenneth media 734609408 Feb  4  2024 'Andrei Rublev (1966) {imdb-tt0060107} - Part 2.avi'
-rw-r--r-- 1 kenneth media     39751 Feb  4  2024 'Andrei Rublev (1966) {imdb-tt0060107} - Part 2.srt'

One problem I haven’t found a solution for is the behavior of the web player when files are split, as above. Part 1 plays and transitions to Part 2 just fine, but then it seems impossible to ever get back to Part 1, “Start from the beginning” only goes back to the beginning of Part 2.

This is not really a supported use case, and the docs recommend joining the files: https://support.plex.tv/articles/naming-and-organizing-your-movie-media-files/ It seems like it would be a tedious task to combine the subtitle files

system

uname -a

Linux fado 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux

external cd/dvd rw usb drive

[265287.500593] usb 1-2: new high-speed USB device number 2 using xhci_hcd
[265287.653076] usb 1-2: New USB device found, idVendor=13fd, idProduct=2040, bcdDevice= 9.00
[265287.653081] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[265287.653083] usb 1-2: Product: USB Mass Storage Device
[265287.653084] usb 1-2: Manufacturer: TSSTcorp
[265287.653086] usb 1-2: SerialNumber: SATAHH0000000043bd7
[265287.653552] usb-storage 1-2:1.0: USB Mass Storage device detected
[265287.653804] scsi host1: usb-storage 1-2:1.0
[265288.678687] scsi 1:0:0:0: CD-ROM            TSSTcorp CDDVDW SE-S204S  TS01 PQ: 0 ANSI: 0
[265288.680071] sr 1:0:0:0: Power-on or device reset occurred
[265288.682614] sr 1:0:0:0: [sr0] scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray
[265288.682622] cdrom: Uniform CD-ROM driver Revision: 3.20
[265288.695066] sr 1:0:0:0: Attached scsi CD-ROM sr0
[265288.695268] sr 1:0:0:0: Attached scsi generic sg1 type 5

lsusb

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 8087:0029 Intel Corp. AX200 Bluetooth
Bus 003 Device 002: ID 25a7:fa23 Areson Technology Corp 2.4G Receiver
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bc2:2038 Seagate RSS LLC Expansion HDD
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lscpu

Architecture:                         x86_64
CPU op-mode(s):                       32-bit, 64-bit
Address sizes:                        48 bits physical, 48 bits virtual
Byte Order:                           Little Endian
CPU(s):                               16
On-line CPU(s) list:                  0-15
Vendor ID:                            AuthenticAMD
Model name:                           AMD Ryzen 7 5800H with Radeon Graphics
CPU family:                           25
Model:                                80
Thread(s) per core:                   2
Core(s) per socket:                   8
Socket(s):                            1
Stepping:                             0
Frequency boost:                      enabled
CPU(s) scaling MHz:                   35%
CPU max MHz:                          4462.5000
CPU min MHz:                          1200.0000
BogoMIPS:                             6388.09
Flags:                                fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca fsrm
Virtualization:                       AMD-V
L1d cache:                            256 KiB (8 instances)
L1i cache:                            256 KiB (8 instances)
L2 cache:                             4 MiB (8 instances)
L3 cache:                             16 MiB (1 instance)
NUMA node(s):                         1
NUMA node0 CPU(s):                    0-15
Vulnerability Gather data sampling:   Not affected
Vulnerability Itlb multihit:          Not affected
Vulnerability L1tf:                   Not affected
Vulnerability Mds:                    Not affected
Vulnerability Meltdown:               Not affected
Vulnerability Mmio stale data:        Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed:               Not affected
Vulnerability Spec rstack overflow:   Mitigation; safe RET, no microcode
Vulnerability Spec store bypass:      Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:             Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:             Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                  Not affected
Vulnerability Tsx async abort:        Not affected

/proc/meminfo

MemTotal:       13196896 kB
MemFree:          312928 kB
MemAvailable:   11481100 kB
Buffers:          771628 kB
Cached:         10298508 kB
SwapCached:         2096 kB
Active:          4666400 kB
Inactive:        6914020 kB
Active(anon):      67412 kB
Inactive(anon):   440916 kB
Active(file):    4598988 kB
Inactive(file):  6473104 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        999420 kB
SwapFree:         957436 kB
Zswap:                 0 kB
Zswapped:              0 kB
Dirty:                84 kB
Writeback:             0 kB
AnonPages:        489476 kB
Mapped:           176592 kB
Shmem:              1148 kB
KReclaimable:     424372 kB
Slab:            1022560 kB
SReclaimable:     424372 kB
SUnreclaim:       598188 kB
KernelStack:        8000 kB
PageTables:         5572 kB
SecPageTables:         0 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     7597868 kB
Committed_AS:    1786812 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      121552 kB
VmallocChunk:          0 kB
Percpu:            18176 kB
HardwareCorrupted:     0 kB
AnonHugePages:    202752 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      740432 kB
DirectMap2M:    12812288 kB
DirectMap1G:           0 kB