Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/en/articles/solid-state/_index.po
18096 views
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
"POT-Creation-Date: 2024-12-29 08:30-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. type: YAML Front Matter: description
#: documentation/content/en/articles/solid-state/_index.adoc:1
#, no-wrap
msgid "The use of solid state disk devices in FreeBSD"
msgstr ""

#. type: Title =
#: documentation/content/en/articles/solid-state/_index.adoc:1
#: documentation/content/en/articles/solid-state/_index.adoc:12
#, no-wrap
msgid "FreeBSD and Solid State Devices"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:45
msgid "Abstract"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:47
msgid ""
"This article covers the use of solid state disk devices in FreeBSD to create "
"embedded systems."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:50
msgid ""
"Embedded systems have the advantage of increased stability due to the lack "
"of integral moving parts (hard drives).  Account must be taken, however, for "
"the generally low disk space available in the system and the durability of "
"the storage medium."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:53
msgid ""
"Specific topics to be covered include the types and attributes of solid "
"state media suitable for disk use in FreeBSD, kernel options that are of "
"interest in such an environment, the [.filename]#rc.initdiskless# mechanisms "
"that automate the initialization of such systems and the need for read-only "
"filesystems, and building filesystems from scratch.  The article will "
"conclude with some general strategies for small and read-only FreeBSD "
"environments."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:55
msgid "'''"
msgstr ""

#. type: Title ==
#: documentation/content/en/articles/solid-state/_index.adoc:59
#, no-wrap
msgid "Solid State Disk Devices"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:69
msgid ""
"The scope of this article will be limited to solid state disk devices made "
"from flash memory.  Flash memory is a solid state memory (no moving parts) "
"that is non-volatile (the memory maintains data even after all power sources "
"have been disconnected).  Flash memory can withstand tremendous physical "
"shock and is reasonably fast (the flash memory solutions covered in this "
"article are slightly slower than a EIDE hard disk for write operations, and "
"much faster for read operations).  One very important aspect of flash "
"memory, the ramifications of which will be discussed later in this article, "
"is that each sector has a limited rewrite capacity.  You can only write, "
"erase, and write again to a sector of flash memory a certain number of times "
"before the sector becomes permanently unusable.  Although many flash memory "
"products automatically map bad blocks, and although some even distribute "
"write operations evenly throughout the unit, the fact remains that there "
"exists a limit to the amount of writing that can be done to the device.  "
"Competitive units have between 1,000,000 and 10,000,000 writes per sector in "
"their specification.  This figure varies due to the temperature of the "
"environment."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:74
msgid ""
"Specifically, we will be discussing ATA compatible compact-flash units, "
"which are quite popular as storage media for digital cameras.  Of particular "
"interest is the fact that they pin out directly to the IDE bus and are "
"compatible with the ATA command set.  Therefore, with a very simple and low-"
"cost adaptor, these devices can be attached directly to an IDE bus in a "
"computer.  Once implemented in this manner, operating systems such as "
"FreeBSD see the device as a normal hard disk (albeit small)."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:76
msgid ""
"Other solid state disk solutions do exist, but their expense, obscurity, and "
"relative unease of use places them beyond the scope of this article."
msgstr ""

#. type: Title ==
#: documentation/content/en/articles/solid-state/_index.adoc:78
#, no-wrap
msgid "Kernel Options"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:81
msgid ""
"A few kernel options are of specific interest to those creating an embedded "
"FreeBSD system."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:86
msgid ""
"All embedded FreeBSD systems that use flash memory as system disk will be "
"interested in memory disks and memory filesystems.  As a result of the "
"limited number of writes that can be done to flash memory, the disk and the "
"filesystems on the disk will most likely be mounted read-only.  In this "
"environment, filesystems such as [.filename]#/tmp# and [.filename]#/var# are "
"mounted as memory filesystems to allow the system to create logs and update "
"counters and temporary files.  Memory filesystems are a critical component "
"to a successful solid state FreeBSD implementation."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:88
msgid ""
"You should make sure the following lines exist in your kernel configuration "
"file:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:92
#, no-wrap
msgid "options         MD_ROOT         # md device usable as a potential root device\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/articles/solid-state/_index.adoc:95
#, no-wrap
msgid "The `rc` Subsystem and Read-Only Filesystems"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:98
msgid ""
"The post-boot initialization of an embedded FreeBSD system is controlled by "
"[.filename]#/etc/rc.initdiskless#."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:102
msgid ""
"[.filename]#/etc/rc.d/var# mounts [.filename]#/var# as a memory filesystem, "
"makes a configurable list of directories in [.filename]#/var# with the man:"
"mkdir[1] command, and changes modes on some of those directories.  In the "
"execution of [.filename]#/etc/rc.d/var#, one other [.filename]#rc.conf# "
"variable comes into play - `varsize`.  A [.filename]#/var# partition is "
"created by [.filename]#/etc/rc.d/var# based on the value of this variable in "
"[.filename]#rc.conf#:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:106
#, no-wrap
msgid "varsize=8192\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:109
msgid "Remember that this value is in sectors by default."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:116
msgid ""
"The fact that [.filename]#/var# is a read-write filesystem is an important "
"distinction, as the [.filename]#/# partition (and any other partitions you "
"may have on your flash media) should be mounted read-only.  Remember that in "
"crossref:solid-state[intro, Solid State Disk Devices] we detailed the "
"limitations of flash memory - specifically the limited write capability.  "
"The importance of not mounting filesystems on flash media read-write, and "
"the importance of not using a swap file, cannot be overstated.  A swap file "
"on a busy system can burn through a piece of flash media in less than one "
"year.  Heavy logging or temporary file creation and destruction can do the "
"same.  Therefore, in addition to removing the `swap` entry from your [."
"filename]#/etc/fstab#, you should also change the Options field for each "
"filesystem to `ro` as follows:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:121
#, no-wrap
msgid ""
"# Device                Mountpoint      FStype  Options         Dump    Pass#\n"
"/dev/ad0s1a             /               ufs     ro              1       1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:128
msgid ""
"A few applications in the average system will immediately begin to fail as a "
"result of this change.  For instance, cron will not run properly as a result "
"of missing cron tabs in the [.filename]#/var# created by [.filename]#/etc/rc."
"d/var#, and syslog and dhcp will encounter problems as well as a result of "
"the read-only filesystem and missing items in the [.filename]#/var# that [."
"filename]#/etc/rc.d/var# has created.  These are only temporary problems "
"though, and are addressed, along with solutions to the execution of other "
"common software packages in crossref:solid-state[strategies, System "
"Strategies for Small and Read Only Environments]."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:130
msgid ""
"An important thing to remember is that a filesystem that was mounted read-"
"only with [.filename]#/etc/fstab# can be made read-write at any time by "
"issuing the command:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:134
#, no-wrap
msgid "# /sbin/mount -uw partition\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:137
msgid "and can be toggled back to read-only with the command:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:141
#, no-wrap
msgid "# /sbin/mount -ur partition\n"
msgstr ""

#. type: Title ==
#: documentation/content/en/articles/solid-state/_index.adoc:143
#, no-wrap
msgid "Building a File System from Scratch"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:146
msgid ""
"Since ATA compatible compact-flash cards are seen by FreeBSD as normal IDE "
"hard drives, you could theoretically install FreeBSD from the network using "
"the kern and mfsroot floppies or from a CD."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:149
msgid ""
"However, even a small installation of FreeBSD using normal installation "
"procedures can produce a system in size of greater than 200 megabytes.  Most "
"people will be using smaller flash memory devices (128 megabytes is "
"considered fairly large - 32 or even 16 megabytes is common), so an "
"installation using normal mechanisms is not possible-there is simply not "
"enough disk space for even the smallest of conventional installations."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:155
msgid ""
"The easiest way to overcome this space limitation is to install FreeBSD "
"using conventional means to a normal hard disk.  After the installation is "
"complete, pare down the operating system to a size that will fit onto your "
"flash media, then tar the entire filesystem.  The following steps will guide "
"you through the process of preparing a piece of flash memory for your tarred "
"filesystem.  Remember, because a normal installation is not being performed, "
"operations such as partitioning, labeling, file-system creation, etc. need "
"to be performed by hand.  In addition to the kern and mfsroot floppy disks, "
"you will also need to use the fixit floppy."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:159
msgid "Partitioning Your Flash Media Device"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:169
msgid ""
"After booting with the kern and mfsroot floppies, choose `custom` from the "
"installation menu.  In the custom installation menu, choose `partition`.  In "
"the partition menu, you should delete all existing partitions using kbd:"
"[d].  After deleting all existing partitions, create a partition using kbd:"
"[c] and accept the default value for the size of the partition.  When asked "
"for the type of the partition, make sure the value is set to `165`.  Now "
"write this partition table to the disk by pressing kbd:[w] (this is a hidden "
"option on this screen).  If you are using an ATA compatible compact flash "
"card, you should choose the FreeBSD Boot Manager.  Now press kbd:[q] to quit "
"the partition menu.  You will be shown the boot manager menu once more - "
"repeat the choice you made earlier."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:170
msgid "Creating Filesystems on Your Flash Memory Device"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:173
msgid ""
"Exit the custom installation menu, and from the main installation menu "
"choose the `fixit` option.  After entering the fixit environment, enter the "
"following command:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:177
#, no-wrap
msgid "# disklabel -e /dev/ad0c\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:181
msgid ""
"At this point you will have entered the vi editor under the auspices of the "
"disklabel command.  Next, you need to add an `a:` line at the end of the "
"file. This `a:` line should look like:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:185
#, no-wrap
msgid "a:      123456  0       4.2BSD  0       0\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:190
msgid ""
"Where _123456_ is a number that is exactly the same as the number in the "
"existing `c:` entry for size.  Basically you are duplicating the existing `c:"
"` line as an `a:` line, making sure that fstype is `4.2BSD`.  Save the file "
"and exit."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:195
#, no-wrap
msgid ""
"# disklabel -B -r /dev/ad0c\n"
"# newfs /dev/ad0a\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:198
msgid "Placing Your Filesystem on the Flash Media"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:200
msgid "Mount the newly prepared flash media:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:204
#, no-wrap
msgid "# mount /dev/ad0a /flash\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:208
msgid ""
"Bring this machine up on the network so we may transfer our tar file and "
"explode it onto our flash media filesystem.  One example of how to do this "
"is:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:213
#, no-wrap
msgid ""
"# ifconfig xl0 192.168.0.10 netmask 255.255.255.0\n"
"# route add default 192.168.0.1\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:219
msgid ""
"Now that the machine is on the network, transfer your tar file.  You may be "
"faced with a bit of a dilemma at this point - if your flash memory part is "
"128 megabytes, for instance, and your tar file is larger than 64 megabytes, "
"you cannot have your tar file on the flash media at the same time as you "
"explode it - you will run out of space.  One solution to this problem, if "
"you are using FTP, is to untar the file while it is transferred over FTP.  "
"If you perform your transfer in this manner, you will never have the tar "
"file and the tar contents on your disk at the same time:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:223
#, no-wrap
msgid "ftp> get tarfile.tar \"| tar xvf -\"\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:226
msgid "If your tarfile is gzipped, you can accomplish this as well:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:230
#, no-wrap
msgid "ftp> get tarfile.tar \"| zcat | tar xvf -\"\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:233
msgid ""
"After the contents of your tarred filesystem are on your flash memory "
"filesystem, you can unmount the flash memory and reboot:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:239
#, no-wrap
msgid ""
"# cd /\n"
"# umount /flash\n"
"# exit\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:242
msgid ""
"Assuming that you configured your filesystem correctly when it was built on "
"the normal hard disk (with your filesystems mounted read-only, and with the "
"necessary options compiled into the kernel) you should now be successfully "
"booting your FreeBSD embedded system."
msgstr ""

#. type: Title ==
#: documentation/content/en/articles/solid-state/_index.adoc:245
#, no-wrap
msgid "System Strategies for Small and Read Only Environments"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:249
msgid ""
"In crossref:solid-state[ro-fs, The `rc` Subsystem and Read-Only "
"Filesystems], it was pointed out that the [.filename]#/var# filesystem "
"constructed by [.filename]#/etc/rc.d/var# and the presence of a read-only "
"root filesystem causes problems with many common software packages used with "
"FreeBSD.  In this article, suggestions for successfully running cron, "
"syslog, ports installations, and the Apache web server will be provided."
msgstr ""

#. type: Title ===
#: documentation/content/en/articles/solid-state/_index.adoc:250
#, no-wrap
msgid "Cron"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:253
msgid ""
"Upon boot, [.filename]#/var# gets populated by [.filename]#/etc/rc.d/var# "
"using the list from [.filename]#/etc/mtree/BSD.var.dist#, so the [."
"filename]#cron#, [.filename]#cron/tabs#, [.filename]#at#, and a few other "
"standard directories get created."
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:258
msgid ""
"However, this does not solve the problem of maintaining cron tabs across "
"reboots.  When the system reboots, the [.filename]#/var# filesystem that is "
"in memory will disappear and any cron tabs you may have had in it will also "
"disappear.  Therefore, one solution would be to create cron tabs for the "
"users that need them, mount your [.filename]#/# filesystem as read-write and "
"copy those cron tabs to somewhere safe, like [.filename]#/etc/tabs#, then "
"add a line to the end of [.filename]#/etc/rc.initdiskless# that copies those "
"crontabs into [.filename]#/var/cron/tabs# after that directory has been "
"created during system initialization.  You may also need to add a line that "
"changes modes and permissions on the directories you create and the files "
"you copy with [.filename]#/etc/rc.initdiskless#."
msgstr ""

#. type: Title ===
#: documentation/content/en/articles/solid-state/_index.adoc:259
#, no-wrap
msgid "Syslog"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:264
msgid ""
"[.filename]#syslog.conf# specifies the locations of certain log files that "
"exist in [.filename]#/var/log#.  These files are not created by [.filename]#/"
"etc/rc.d/var# upon system initialization.  Therefore, somewhere in [."
"filename]#/etc/rc.d/var#, after the section that creates the directories in "
"[.filename]#/var#, you will need to add something like this:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:269
#, no-wrap
msgid ""
"# touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages\n"
"# chmod 0644 /var/log/*\n"
msgstr ""

#. type: Title ===
#: documentation/content/en/articles/solid-state/_index.adoc:271
#, no-wrap
msgid "Ports Installation"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:277
msgid ""
"Before discussing the changes necessary to successfully use the ports tree, "
"a reminder is necessary regarding the read-only nature of your filesystems "
"on the flash media.  Since they are read-only, you will need to temporarily "
"mount them read-write using the mount syntax shown in crossref:solid-"
"state[ro-fs, The `rc` Subsystem and Read-Only Filesystems].  You should "
"always remount those filesystems read-only when you are done with any "
"maintenance - unnecessary writes to the flash media could considerably "
"shorten its lifespan."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:280
msgid ""
"To make it possible to enter a ports directory and successfully run `make "
"install`, we must create a packages directory on a non-memory filesystem "
"that will keep track of our packages across reboots.  As it is necessary to "
"mount your filesystems as read-write for the installation of a package "
"anyway, it is sensible to assume that an area on the flash media can also be "
"used for package information to be written to."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:283
msgid ""
"First, create a package database directory.  This is normally in [."
"filename]#/var/db/pkg#, but we cannot place it there as it will disappear "
"every time the system is booted."
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:287
#, no-wrap
msgid "# mkdir /etc/pkg\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:290
msgid ""
"Now, add a line to [.filename]#/etc/rc.d/var# that links the [.filename]#/"
"etc/pkg# directory to [.filename]#/var/db/pkg#. An example:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:294
#, no-wrap
msgid "# ln -s /etc/pkg /var/db/pkg\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:297
msgid ""
"Now, any time that you mount your filesystems as read-write and install a "
"package, the `make install` will work, and package information will be "
"written successfully to [.filename]#/etc/pkg# (because the filesystem will, "
"at that time, be mounted read-write) which will always be available to the "
"operating system as [.filename]#/var/db/pkg#."
msgstr ""

#. type: Title ===
#: documentation/content/en/articles/solid-state/_index.adoc:298
#, no-wrap
msgid "Apache Web Server"
msgstr ""

#. type: delimited block = 4
#: documentation/content/en/articles/solid-state/_index.adoc:304
msgid ""
"The steps in this section are only necessary if Apache is set up to write "
"its pid or log information outside of [.filename]#/var#.  By default, Apache "
"keeps its pid file in [.filename]#/var/run/httpd.pid# and its log files in [."
"filename]#/var/log#."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:310
msgid ""
"It is now assumed that Apache keeps its log files in a directory [."
"filename]#apache_log_dir# outside of [.filename]#/var#.  When this directory "
"lives on a read-only filesystem, Apache will not be able to save any log "
"files, and may have problems working.  If so, it is necessary to add a new "
"directory to the list of directories in [.filename]#/etc/rc.d/var# to create "
"in [.filename]#/var#, and to link [.filename]#apache_log_dir# to [."
"filename]#/var/log/apache#.  It is also necessary to set permissions and "
"ownership on this new directory."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:312
msgid ""
"First, add the directory `log/apache` to the list of directories to be "
"created in [.filename]#/etc/rc.d/var#."
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:314
msgid ""
"Second, add these commands to [.filename]#/etc/rc.d/var# after the directory "
"creation section:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:319
#, no-wrap
msgid ""
"# chmod 0774 /var/log/apache\n"
"# chown nobody:nobody /var/log/apache\n"
msgstr ""

#. type: Plain text
#: documentation/content/en/articles/solid-state/_index.adoc:322
msgid ""
"Finally, remove the existing [.filename]#apache_log_dir# directory, and "
"replace it with a link:"
msgstr ""

#. type: delimited block . 4
#: documentation/content/en/articles/solid-state/_index.adoc:327
#, no-wrap
msgid ""
"# rm -rf apache_log_dir\n"
"# ln -s /var/log/apache apache_log_dir\n"
msgstr ""