{"id":1649,"date":"2009-10-05T15:01:15","date_gmt":"2009-10-05T19:01:15","guid":{"rendered":"http:\/\/www.databook.bz\/?page_id=1649"},"modified":"2020-09-03T21:25:06","modified_gmt":"2020-09-04T01:25:06","slug":"startup","status":"publish","type":"page","link":"http:\/\/www.linux-databook.info\/?page_id=1649","title":{"rendered":"Startup Using SystemV Init Scripts"},"content":{"rendered":"\n<p>The SystemV init scripts and the init program are obsolete and have been replaced by systemd on most modern Linux distributions. This document is maintained for historical purposes only. <\/p>\n\n\n\n<p>The Startup process follows the Boot process. Some people consider Startup as part of the boot process, but it is really not \u2014 at least for purists. In a SystemV Linux system, the Boot process ends with loading init. init then initiates the Startup process.<\/p>\n\n\n\n<p>This section covers the Startup process using SystemV which launches the daemons and programs that bring the Linux computer up to a usable state. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Run levels<\/h2>\n\n\n\n<p>Run levels define the services to be run by Linux. Each run level provides a different set of services which correspond to various user level capabilities. Some run levels are not used and others provide special functions.<\/p>\n\n\n\n<p>There are seven defined run levels in Linux, run level 0 through run level 6. This goes back to the days of Unix at the old AT&amp;T (before the original breakup) when telephone switches had seven run levels; it was thought that a Unix system should have the same number of run levels. Up to ten run levels are supported by Linux but run levels seven through nine have not been defined by any of the mainstream distributions and are typically not used.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Start Scripts<\/h2>\n\n\n\n<p>Each run level uses scripts called start scripts to start and stop services for that run level. These scripts are located in the \/etc\/init.d directory which is a symbolic link to \/etc\/rc.d\/init.d. Each script should recognize at least three basic parameters, start, stop and restart. They may also recognize other parameters such as condrestart (conditional restart), status, setup and others.<\/p>\n\n\n\n<p>These start scripts are based on the Unix System V start scripts and so may be called System V start scripts.<\/p>\n\n\n\n<p>Each run level has a directory, \/etc\/rc.d\/rcX.d, where X is the number of the run level. Symbolic links in each run level directory link to the scripts in the \/etc\/rc.d\/init.d directory. Each link is named with \u201cK\u201d or \u201cS,\u201d for Kill or Start, and a number which specifies the order in which the scripts are to be run.<\/p>\n\n\n\n<p>For example, a sample listing of the start scripts for run level three looks like that below.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><code>K01dnsmasq -> ..\/init.d\/dnsmasq<br>K01smartd -> ..\/init.d\/smartd<br>K01smolt -> ..\/init.d\/smolt<br>K10psacct -> ..\/init.d\/psacct<br>K10saslauthd -> ..\/init.d\/saslauthd<br>K10wine -> ..\/init.d\/wine<br>K10zvbid -> ..\/init.d\/zvbid<br>K15httpd -> ..\/init.d\/httpd<br>K19ntop -> ..\/init.d\/ntop<br>K20nfs -> ..\/init.d\/nfs<br>K24irda -> ..\/init.d\/irda<br>K36mysqld -> ..\/init.d\/mysqld<br>K50netconsole -> ..\/init.d\/netconsole<br>K50snmpd -> ..\/init.d\/snmpd<br>K50snmptrapd -> ..\/init.d\/snmptrapd<br>K66gpsd -> ..\/init.d\/gpsd<br>K69rpcsvcgssd -> ..\/init.d\/rpcsvcgssd<br>K73winbind -> ..\/init.d\/winbind<br>K73ypbind -> ..\/init.d\/ypbind<br>K74pcscd -> ..\/init.d\/pcscd<br>K75netfs -> ..\/init.d\/netfs<br>K75ntpdate -> ..\/init.d\/ntpdate<br>K76openvpn -> ..\/init.d\/openvpn<br>K83bluetooth -> ..\/init.d\/bluetooth<br>K83nfslock -> ..\/init.d\/nfslock<br>K83rpcgssd -> ..\/init.d\/rpcgssd<br>K83rpcidmapd -> ..\/init.d\/rpcidmapd<br>K84btseed -> ..\/init.d\/btseed<br>K84bttrack -> ..\/init.d\/bttrack<br>K84NetworkManager -> ..\/init.d\/NetworkManager<br>K84wpa_supplicant -> ..\/init.d\/wpa_supplicant<br>K85racoon -> ..\/init.d\/racoon<br>K87multipathd -> ..\/init.d\/multipathd<br>K87restorecond -> ..\/init.d\/restorecond<br>K87rpcbind -> ..\/init.d\/rpcbind<br>K89netplugd -> ..\/init.d\/netplugd<br>K89rdisc -> ..\/init.d\/rdisc<br>K92ip6tables -> ..\/init.d\/ip6tables<br>K95firstboot -> ..\/init.d\/firstboot<br>S01sysstat -> ..\/init.d\/sysstat<br>S06cpuspeed -> ..\/init.d\/cpuspeed<br>S08iptables -> ..\/init.d\/iptables<br>S10network -> ..\/init.d\/network<br>S11auditd -> ..\/init.d\/auditd<br>S11portreserve -> ..\/init.d\/portreserve<br>S12rsyslog -> ..\/init.d\/rsyslog<br>S13irqbalance -> ..\/init.d\/irqbalance<br>S15mdmonitor -> ..\/init.d\/mdmonitor<br>S22messagebus -> ..\/init.d\/messagebus<br>S24avahi-daemon -> ..\/init.d\/avahi-daemon<br>S25cups -> ..\/init.d\/cups<br>S26acpid -> ..\/init.d\/acpid<br>S26haldaemon -> ..\/init.d\/haldaemon<br>S26lm_sensors -> ..\/init.d\/lm_sensors<br>S26udev-post -> ..\/init.d\/udev-post<br>S30vboxdrv -> ..\/init.d\/vboxdrv<br>S55sshd -> ..\/init.d\/sshd<br>S58ntpd -> ..\/init.d\/ntpd<br>S60apcupsd -> ..\/init.d\/apcupsd<br>S80sendmail -> ..\/init.d\/sendmail<br>S85gpm -> ..\/init.d\/gpm<br>S90crond -> ..\/init.d\/crond<br>S90xfs -> ..\/init.d\/xfs<br>S95atd -> ..\/init.d\/atd<br>S99local -> ..\/rc.local<\/code><\/p><\/blockquote>\n\n\n\n<p><em><strong>Note: <\/strong>The above listing was for one of my early Fedora computers.<\/em><\/p>\n\n\n\n<p>When entering a new run level, either at boot time or by using the init or telinit commands to change run levels, the kill scripts are run first and then the start scripts are run for that level. The Kill scripts are run first and then the Start scripts are run. The numbers after the \u201cK\u201d or \u201cS\u201d in the link name help to determine order in which the scripts are run. When two scripts share the same number, the rest of the name is used to determine the sequence which is alphabetic.<\/p>\n\n\n\n<p>The sequence of starting and stopping scripts is very important. For example you want to ensure that the firewall (IPTables) is started before the network, and stopped after the network in order to maintain security.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Run Level Descriptions<\/h2>\n\n\n\n<p>Each run level has a specific purpose in Linux. Table 1, below, describes each run level.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td><strong>Run Level<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>0<\/td><td>Run level 0 is \u201cshutdown.\u201d This shuts down Linux and powers off the computer.<\/td><\/tr><tr><td>S or s<\/td><td>This is called single user mode, but the difference between this and run level 1 is that no start scripts are run when entering this level. This is not truly a run level.<\/td><\/tr><tr><td>1<\/td><td>Also known as single user mode but is more accurately referred to as run level 1. This mode is used when the system administrator needs to perform maintenance activities that require no other users be logged in. The scripts in \/etc\/init.d\/rc1.d are run when entering this run level.<\/td><\/tr><tr><td>2<\/td><td>This run level brings Linux to a fully functioning state with the exception that NFS is not active, so NFS file systems will not be mounted.<\/td><\/tr><tr><td>3<\/td><td>Run level 3 tends to be the standard runlevel for text mode operation. It includes NFS functionality.<\/td><\/tr><tr><td>4<\/td><td>Not used.<\/td><\/tr><tr><td>5<\/td><td>Run level 5 is the same as run level 3, but with the GUI, X Window System, running.<\/td><\/tr><tr><td>6<\/td><td>Reboot. Entering this run level reboots Linux.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Changing Run Levels<\/h2>\n\n\n\n<p>The run level can be changed by using either the init or telinit commands. If Linux is currently running in run level 5 and you want to change to run level 3, issue the command init 3 or telinit 3. You can also set the \u201cinitdefault\u201d parameter in \/etc\/inittab to whatever runlevel you want your computer to enter each time it boots.<\/p>\n\n\n\n<p>You should never set the default run level in the inittab file to either run level 0 or run level 6. Your computer would either shut down every time you tried to start it or continuously reboot.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">init<\/h2>\n\n\n\n<p>The init program is a binary (ELF) executable file and it is the mother of all processes. It is always Process ID (PID) 1. Red Hat calls this the First Process. The init program is really the end of the boot process and the beginning of the startup.<\/p>\n\n\n\n<p>The init program runs the \/etc\/rc.d\/rc.sysinit script and uses the \/etc\/inittab file to determine the startup configuration for Linux. It then runs the \/etc\/rc.d\/rc script which checks \/etc\/inittab for the default runlevel.<\/p>\n\n\n\n<p>The \/etc\/inittab file also contains&nbsp; system initialization script name (rc.sysinit) and and the GETTYs for the virtual consoles. A getty (Get TTY) is a process that waits for a virtual console login and, when a login is successful, connects the logged in user to a terminal session and shell.<\/p>\n\n\n\n<p>All of these startup files are BASH scripts that can be viewed so that you can see exactly what actions are performed during the Startup sequence. You should do so at some point as it is a very interesting exercise. You should never change these scripts, however. There are other, much better ways of modifying the Startup sequence that fall completely within the standard best practices.<\/p>\n\n\n\n<p>The Startup process is governed by the configuration specified in the \/etc\/inittab (initialization table) file. The inittab file contains configuration items that specify several important aspects of the startup process. These include the following items:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-subtle-light-gray-background-color has-background\"><tbody><tr><td><strong>Note:<\/strong> As of Fedora 11, the inittab file is used only to specify the default runlevel. All of the other functions have been replaced by the new upstart Startup manager. However, starting with Fedora 14, upstart was replaced by systemd and the inittab file is no longer used at all. What is left is merely a stub to indicate that it is no longer used.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>The default runlevel<\/li><li>The name and location of the system initialization script<\/li><li>The directories containing the runlevel scripts<\/li><li>Traps for key sequences such as ctrl-alt-delete<\/li><li>UPS power failure and restore scripts<\/li><li>GETTY definitions<\/li><\/ul>\n\n\n\n<p>A typical inittab file looks like this:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#<br># inittab\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 This file describes how the INIT process should set up<br>#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 the system in a certain run-level.<br>#<br># Author:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Miquel van Smoorenburg, &lt;miquels@drinkel.nl.mugnet.org><br>#\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Modified for RHS Linux by Marc Ewing and Donnie Barne<br>#<br># Default runlevel. The runlevels used by RHS are:<br>#\u00a0\u00a0 0 \u2013 halt (Do NOT set initdefault to this)<br>#\u00a0\u00a0 1 \u2013 Single user mode<br>#\u00a0\u00a0 2 \u2013 Multiuser, without NFS (The same as 3, if you do not have networking)<br>#\u00a0\u00a0 3 \u2013 Full multiuser mode<br>#\u00a0\u00a0 4 \u2013 unused<br>#\u00a0\u00a0 5 \u2013 X11<br>#\u00a0\u00a0 6 \u2013 reboot (Do NOT set initdefault to this)<br>#<br>id:5:initdefault:<br>#<br># System initialization.<br>si::sysinit:\/etc\/rc.d\/rc.sysinit<br>l0:0:wait:\/etc\/rc.d\/rc 0<br>l1:1:wait:\/etc\/rc.d\/rc 1<br>l2:2:wait:\/etc\/rc.d\/rc 2<br>l3:3:wait:\/etc\/rc.d\/rc 3<br>l4:4:wait:\/etc\/rc.d\/rc 4<br>l5:5:wait:\/etc\/rc.d\/rc 5<br>l6:6:wait:\/etc\/rc.d\/rc 6<br>#<br># Trap CTRL-ALT-DELETE<br>ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now<br># When our UPS tells us power has failed, assume we have a few minutes<br># of power left.\u00a0 Schedule a shutdown for 2 minutes from now.<br># This does, of course, assume you have powerd installed and your<br># UPS connected and working correctly.<br>pf::powerfail:\/sbin\/shutdown -f -h +2 \u201cPower Failure; System Shutting Down\u201d<br>#<br># If power was restored before the shutdown kicked in, cancel it.<br>pr:12345:powerokwait:\/sbin\/shutdown -c \u201cPower Restored; Shutdown Cancelled\u201d<br>#<br># Run gettys in standard runlevels<br>1:2345:respawn:\/sbin\/mingetty tty1<br>2:2345:respawn:\/sbin\/mingetty tty2<br>3:2345:respawn:\/sbin\/mingetty tty3<br>4:2345:respawn:\/sbin\/mingetty tty4<br>5:2345:respawn:\/sbin\/mingetty tty5<br>6:2345:respawn:\/sbin\/mingetty tty6<br>#<br># Run xdm in runlevel 5<br>x:5:respawn:\/etc\/X11\/prefdm -nodaemon<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Default Runlevel<\/h2>\n\n\n\n<p>The default runlevel is defined by the line:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">id:5:initdefault:<\/pre>\n\n\n\n<p>This specifies that the default is runlevel 5, which is graphical mode. Typical default run levels are 3 and 5. Refer to <a href=\"http:\/\/www.linux-databook.info\/?page_id=1711\" target=\"_blank\" rel=\"noreferrer noopener\">Understanding Run Levels<\/a> for more information.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">System Initialization Program<\/h2>\n\n\n\n<p>The following line specifies the system initialization program. In this case, the script \/etc\/rc.d\/rc.sysinit.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">si::sysinit:\/etc\/rc.d\/rc.sysinit<\/pre>\n\n\n\n<p>The rc.sysinit script performs many important functions including activating SELinux, if it is configured, enabling swap partitions, activating RAID and Logical Volume Manager devices and disk quotas. It also checks and mounts the other filesystems.<\/p>\n\n\n\n<p>The leading &#8220;si&#8221; is merely an identifier. The third field is the action field and contains &#8220;sysinit&#8221; which specifies the purpose of the line, and the rest of the line is the fully qualified path and file name.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Run Level Descriptors<\/h2>\n\n\n\n<p>The next several lines define the run levels and the locations of the start scripts for each run level.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">l0:0:wait:\/etc\/rc.d\/rc 0 \nl1:1:wait:\/etc\/rc.d\/rc 1 \nl2:2:wait:\/etc\/rc.d\/rc 2 \nl3:3:wait:\/etc\/rc.d\/rc 3 \nl4:4:wait:\/etc\/rc.d\/rc 4 \nl5:5:wait:\/etc\/rc.d\/rc 5 \nl6:6:wait:\/etc\/rc.d\/rc 6<\/pre>\n\n\n\n<p>Again, the first column is a text identifier. The second column is the number of the run level. The fourth column is the path and filename of the script that runs the start scripts with the numeric parameter representing the run level.<\/p>\n\n\n\n<p>The action field in these lines is &#8220;wait&#8221; which means that init launches the process once and then waits for it to complete before continuing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Traps<\/h2>\n\n\n\n<p>Traps allow init to capture certain actions and react in specific ways to them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ctrl-Alt-Del<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now<\/pre>\n\n\n\n<p>This first line traps the Ctrl-Alt-Del key combination and reboots the computer after waiting 3 seconds. This allows Linux to react to Ctrl-Alt-Del in the same way as other operating systems. If you do not want your computer to respond to Ctrl-Alt-Del in this way, you can change the action field of this line.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Power Failure<\/h3>\n\n\n\n<p>The init process can react to a power failure as well. This assumes that the computer is connected to a UPS and that the computer is running software which communicates with the UPS and understands when a power failure has occurred. I use the Open Source APCUPSD program for communicating with my APC UPS&#8217;es.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pf::powerfail:\/sbin\/shutdown -f -h +2 \"Power Failure; System Shutting Down\" pr:12345:powerokwait:\/sbin\/shutdown -c \"Power Restored; Shutdown Canceled\"<\/pre>\n\n\n\n<p>The first of these two lines shuts down the system to a complete halt and power off after a wait of two minutes. The second cancels the shutdown if power returns during the 2 minute wait. The text in the quotes is displayed on every terminal to all users so that they can be forewarned.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The gettys<\/h2>\n\n\n\n<p>A getty is a process that waits for a login connection on a text mode &#8220;tty.&#8221; When a login connection is made, the getty turns over control of the virtual terminal to a terminal session and the shell running in it. When the user of the session logs out, the shell and terminal session are terminated and init respawns a new getty to wait for the next connection.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">1:2345:respawn:\/sbin\/mingetty tty1 \n2:2345:respawn:\/sbin\/mingetty tty2 \n3:2345:respawn:\/sbin\/mingetty tty3 \n4:2345:respawn:\/sbin\/mingetty tty4 \n5:2345:respawn:\/sbin\/mingetty tty5 \n6:2345:respawn:\/sbin\/mingetty tty6<\/pre>\n\n\n\n<p>Each of the gettys defined in the lines above waits on one of the text mode virtual terminals for a login. The second field specifies that the getty is to run in run levels 2 through 5.<\/p>\n\n\n\n<p>Use the key combination Ctrl-Alt-FX, where X is a number from 1 to 6, to switch your Linux screen to one of the virtual terminal login sessions. Depending upon which release of Fedora you are using, terminals 1 or 7 may be your GUI.<\/p>\n\n\n\n<p>They term &#8220;getty&#8221; is a historical one that literally means &#8220;get tty&#8221; or &#8220;get teletype.&#8221; When Unix was in its heyday, a teletype was the standard way to connect to a computer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">X<\/h2>\n\n\n\n<p>The final line in inttab is the line that specifies the X (the X Window System) login program for run level 5.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><code>x:5:respawn:\/etc\/X11\/prefdm -nodaemon<\/code><\/p><\/blockquote>\n\n\n\n<p>This works in very much the same way that the getty lines do for text mode logins. The prefdm program is run and launches a default program for a graphical login. This graphical login program waits for a login and turns over control to X. The init program waits until the user logs out and then respawns another copy of the prefdm program, which in turn launches the default graphical login program to wait for another login.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">rc.sysinit<\/h2>\n\n\n\n<p>The \/etc\/rc.d\/rc.sysinit script performs many tasks to initialize Linux. rc.sysinit is run by init and is the first step of the startup process. The tasks performed by rc.sysinit include:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Sets the hostname.<\/li><li>Mounts the proc and system filesystems.<\/li><li>Activates SELinux if it is set to enforcing or permissive.<\/li><li>Initializes hardware using modprobe to load device drivers.<\/li><li>Starting the udev device manager.<\/li><li>Sets kernel parameters as defined in \/etc\/sysctl.conf.<\/li><li>Starts RAID arrays and device mapper for LVM devices.<\/li><li>Checks the root filesystem and remounts it as read\/write.<\/li><li>Enables disk quotas if they are defined.<\/li><li>Forces fsck to run if the system was shut down uncleanly or if a filesystem has exceeded the time or number of mounts since it was last checked.<\/li><li>Mounts the other filesystems defined in \/etc\/fstab.<\/li><li>Starts swapping.<\/li><li>Dumps the current contents of the syslog ring buffer into \/var\/log\/dmesg so it will be available later.<\/li><\/ul>\n\n\n\n<p>As mentioned above rc.sysinit is a script, written in BASH, and that allows you to look at it and analyze the tasks it performs. I suggest that you do so in order to fully understand this part of the startup sequence.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">rc<\/h2>\n\n\n\n<p>The \/etc\/rc.d\/rc script is the last major step in the startup process. The rc script initializes the run level defined in the \/etc\/inittab file by running the scripts located in the directory for that run level, i.e., \/etc\/rc.d\/rc3.d for run level 3.<\/p>\n\n\n\n<p>The rc script is fairly short. It first verifies that a valid run level has been passed to it. It runs all of the Kill scripts in that run level and then runs all of the Start scripts in that run level.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The SystemV init scripts and the init program are obsolete and have been replaced by systemd on most modern Linux distributions. This document is maintained for historical purposes only. The Startup process follows the Boot process. Some people consider Startup&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"http:\/\/www.linux-databook.info\/?page_id=1649\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":787,"menu_order":9,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-1649","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=\/wp\/v2\/pages\/1649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1649"}],"version-history":[{"count":22,"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=\/wp\/v2\/pages\/1649\/revisions"}],"predecessor-version":[{"id":5772,"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=\/wp\/v2\/pages\/1649\/revisions\/5772"}],"up":[{"embeddable":true,"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=\/wp\/v2\/pages\/787"}],"wp:attachment":[{"href":"http:\/\/www.linux-databook.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}