Difference between pages "Linux basics" and "Using Grub2"

From Wikislax
(Difference between pages)
Jump to: navigation, search
(Useful linux commands)
 
(Compiling Grub2 ?)
 
Line 1: Line 1:
== Using VI ==
+
{{RightTOC}}
  
'''vi''' (pronounced vee-eye) is the Unix standard text editor so affords editing the configuration files by hand. If you don’t know it yet, it can be a bit surprising. Actually, '''vi''' was created at a time when the keyboards did not have any arrow or insert keys. So there are two modes: the «open» mode and the «insert» mode.
+
== What is Grub2 ? ==
  
The open mode affords moving the cursor. '''j''', '''k''', '''l''', '''m''' move the cursor by one character. '''ctrl-f''' moves one page forward and '''ctrl-b''' moves one page backwards. '''w''' moves one word forward and  '''b''' moves one word backwards. It is also possible to use the arrow keys.
+
[http://www.gnu.org/software/grub/ GNU Grub2] is a bootloader. A bootloader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software. For Xen we'll use Grub2 over Lilo. The reason is that Grub2 affords booting Xen alongside Domain-0, which Slackware's default Lilo cannot do. Last, we'll use Grub2 over Grub legacy, because the latter is not 64-bits compatible.
  
'''i''' goes into insert mode before the cursor, '''a''' goes into insert mode after the cursor, and '''A''' goes into insert mode at the end of the line. '''o''' adds a line after the current line, and '''O''' adds a live before the current line. '''R''' goes into rewrite mode.
+
== Compiling Grub2 ? ==
  
'''esc''' affords getting out of the insert mode.
+
Compiling Grub2 is usually unnecessary as it is included with the Slackware distribution. However the '''grub-2.00''' version included with Slackware 14.2 does not afford booting Xen so we'll compile '''grub-2.02''' from source instead :
  
'''c$''' affords replacing the end of the line and '''d$''' affords deleting the end of the line. '''cw''' affords replacing one word and '''dw''' affords deleting one word. '''dd''' affords deleting the current line.
+
[ftp://ftp.gnu.org/gnu/grub/ Download] from the GNU page then untar to /usr/local and install as below :
  
''':q''' affords quitting without saving. If the file has been modified, quitting must be forced by typing ''':q!'''. ''':x''' affords saving and quitting. If the file does not have the write rigths, saving must be forced by typing ''':x!'''. ''':w''' affords writing the text in a new file. If the new file already exists, writing must be forced by typing ''':w!'''.
+
# tar -C /usr/local -xvf grub-2.02.tar.gz
 +
# cd /usr/local/
 +
# chown -R root:root grub-2.02
 +
# cd grub-2.02
 +
# ./configure --libdir=/usr/local/lib64
 +
# make
 +
# make install
 +
# make clean
  
''':num''' affords moving to the line number num. ''':$''' affords moving to the end of the file.
+
== Configuring Grub2 ==
''':num1copynum2''' affords copying the line number num1 after the line number num2. ''':num1mnum2''' affords moving the line number num1 after the line number num2.
 
  
For detailed information, check the [http://vimdoc.sourceforge.net/htmldoc/help.html VIM Documentation]. To enter special characters check the page on [http://vimdoc.sourceforge.net/htmldoc/digraph.html digraphs]. To get rid of the message "skipping N old session files", delete files elvis*.ses in /var/tmp.
+
The Grub2 configuration is described in the [http://www.gnu.org/software/grub/manual/grub.html Grub2 documentation]. As it is quite massive we will just edit what we need.
  
== Using SSH ==
+
<u>Note</u> : if using the Grub2 included with the Slackware distribution, the configuration files are '''/etc/default/grub''' and the files in '''/etc/grub.d'''. If using a Grub2 compiled by yourself then the configuration files are '''/usr/local/etc/default/grub''' and the files in '''/usr/local/etc/grub.d'''.
  
SSH is a suite of tools affording connecting remotely over encrypted communications. On the client side, '''ssh''' offers a command line terminal, '''scp''' affords copying a file, and '''sftp''' behaves like ftp. The server side consists of sshd, sftp-server, and ssh-agent. ssh-add, ssh-keysign, ssh-keyscan, and ssh-keygen afford key management. The SSH present on Slackware and the BSDs is [https://www.openssh.com/ OpenSSH], developped by members of the [https://www.openbsd.org/ OpenBSD] project.
+
Let's go to the actual config now. Let's start with general options in file '''default/grub''' that we create.
  
'''ssh''' obviously requires your connection password every time it is executed. This can be avoided by creating on the client a pair of rsa keys and copying the public key to the server. Not specifying a passphrase is not very secure but will afford avoiding having to enter it every time :
+
# If you change this file, run grub-mkconfig -o /boot/grub/grub.cfg
 +
# afterwards to update /boot/grub/grub.cfg.
 +
 +
GRUB_DEFAULT=0
 +
#GRUB_HIDDEN_TIMEOUT=0
 +
GRUB_HIDDEN_TIMEOUT_QUIET=false
 +
GRUB_TIMEOUT=4
 +
GRUB_DISTRIBUTOR=$( sed 's/Slackware /Slackware-/' /etc/slackware-version )
 +
GRUB_CMDLINE_LINUX_DEFAULT=""
 +
GRUB_CMDLINE_LINUX=""
 +
 +
# Uncomment to disable graphical terminal (grub-pc only)
 +
GRUB_TERMINAL=console
 +
 +
# The resolution used on graphical terminal
 +
# note that you can use only modes which your graphic card supports via VBE
 +
# you can see them in real GRUB with the command `vbeinfo'
 +
#GRUB_GFXMODE=640x480
 +
#GRUB_GFXMODE=1024x768x32
 +
 +
# Font used on the graphical terminal:
 +
#GRUB_FONT=/usr/share/grub/dejavusansmono.pf2
 +
 +
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
 +
#GRUB_DISABLE_LINUX_UUID=true
 +
 +
# Uncomment to disable generation of recovery mode menu entries
 +
#GRUB_DISABLE_LINUX_RECOVERY="true"
  
# '''ssh-keygen -t rsa'''
+
We now need to organize the files under '''grub.d'''. Keep only '''00_header''' untouched, rename and make all the other files not executable, then add menu entries as executable files '''11_xen-4.9.0-kernel-4.4.88-dom0''' and '''12_kernel-4.4.88-dom0'''. It will be wise to add yet another entry '''13_slack-4.4.88''' as a backup kernel. set root=(hd0,2) means the second partition on the disk. The other options is what we have kept after trying and failing many times to see anything on the console :
Generating public/private rsa key pair.
 
Enter file in which to save the key (/root/.ssh/id_rsa): '''<cr>'''
 
Enter passphrase (empty for no passphrase): '''<cr>'''
 
Enter same passphrase again: '''cr>'''
 
Your identification has been saved in /root/.ssh/id_rsa.
 
Your public key has been saved in /root/.ssh/id_rsa.pub.
 
The key fingerprint is:
 
SHA256:ATSDdER5/l8OJvr+jpINIReJtd81zntVbTjuJW5aobE root@client
 
The key's randomart image is:
 
+---[RSA 2048]----+
 
|  ..=O+..      |
 
|    ..o++.    ..|
 
|      oo.    = +|
 
|      . +o . = +.|
 
|      oSo. o * o|
 
|        . o o*.=.|
 
|        = +E+* .|
 
|        + ...+.. |
 
|        ++o+    |
 
+----[SHA256]-----+
 
# '''scp root@client:.ssh/id_rsa.pub root@server:.ssh/id_rsa.pub'''
 
password: '''secret<cr>'''
 
id_rsa.pub                                          100% 394      1.8MB/s  00:00
 
# '''ssh server'''
 
password: '''secret<cr>'''
 
# '''cd .ssh'''
 
# '''cat >> authorized_keys < id_rsa.pub'''
 
# '''chmod 600 authorized_keys'''
 
# '''rm id_rsa.pub'''
 
  
== Useful linux commands ==
+
#! /bin/sh -e
 +
echo "Adding Xen 4.9.0 / Slackware 14.2 (kernel 4.4.88-dom0)"
 +
cat << EOF
 +
menuentry "Xen 4.9.0 / Slackware 14.2 (kernel 4.4.88-dom0)" {
 +
        set root=(hd0,2)
 +
        multiboot /boot/xen-4.9.0.gz dom0_mem=max:16GB console=vga vga=gfx-1024x768x8 noreboot
 +
        module /boot/vmlinuz-4.4.88-dom0 console=vga earlyprintk=xen root=/dev/sda2 ro vga=gfx-1024x768x8
 +
        }
 +
EOF
  
{| {{thead}}
+
#! /bin/sh -e
|-
+
echo "Adding Slackware 14.2 (kernel 4.4.88-dom0)"
! {{chead}} width="220" | Command
+
cat << EOF
! {{chead}} | Effect
+
menuentry "Slackware 14.2 (kernel 4.4.88-dom0)" {
|-
+
        set root=(hd0,2)
|<tt>'''cd'''</tt>||change directory.
+
        linux /boot/vmlinuz-4.4.88-dom0 root=/dev/sda2 ro vga=773
|-
+
        }
|<tt>'''chmod -R ppp ddd'''</tt>||recursively change permissions on file or directory.
+
EOF
|-
 
|<tt>'''chown -R uuu:ggg ddd'''</tt>||recursively change user:group ownership on file or directory.
 
|-
 
|<tt>'''chgrp -R ggg ddd'''</tt>||recursively change group ownership on file or directory.
 
|-
 
|<tt>'''command xxx <nowiki>|</nowiki> grep yyy'''</tt>||search for string yyy in output of command xxx.
 
|-
 
|<tt>'''ethtool -s eth0 wol g'''</tt>||puts interface eth0 in wake-on-lan status.
 
|-
 
|<tt>'''find xxx -name yyy -print'''</tt>||find file yyy in in subdirectories of xxx.
 
|-
 
|<tt>'''ifconfig -a'''</tt>||kill print the network interfaces configuration.
 
|-
 
|<tt>'''killall xxx'''</tt>||kill program named xxx.
 
|-
 
|<tt>'''ldconfig'''</tt>||reload libraries taking into account new libraries just built.
 
|-
 
|<tt>'''ln -s existing new'''</tt>||create a symbolic link new to an existing directory or file.
 
|-
 
|<tt>'''ls -al'''</tt>||list the working directory, including files beginning with a dot.
 
|-
 
|<tt>'''man xxx'''</tt>||display the xxx command manual page.
 
|-
 
|<tt>'''more xxx'''</tt>||display file xxx with the possibility of moving up and down. '''less''' and '''most''' are similar commands.
 
|-
 
|<tt>'''mount -t ttt /dev/xxx /mnt/ddd'''</tt>||mount device xxx as type ttt under directory ddd.
 
|-
 
|<tt>'''(u)mount /mnt/ddd'''</tt>||(u)mount device ddd as specified in /etc/fstab.
 
|-
 
|<tt>'''nmap <i>host</i>'''</tt>||check filtering status of ports on <i>host</i>. '''-sU''' for UDP.
 
|-
 
|<tt>'''ps -ef'''</tt>||list the running processes.
 
|-
 
|<tt>'''pwd'''</tt>||print working directory.
 
|-
 
|<tt>'''rm -r'''</tt>||remove file or directory recursively.
 
|-
 
|<tt>'''route'''</tt>||display the network routing table.
 
|-
 
|<tt>'''screen <i>-S<name></i>'''</tt>||screen offers a frame to run a shell, detach from it (<ctrl>-a d) and later reattach to it.
 
|-
 
|<tt>'''ssh <i>host</i>'''</tt>||connect remotely to site <i>host</i>.
 
|-
 
|<tt>'''su -l uuuu'''</tt>||execute shell as another user. if -l is used an environment similar to what the other user would have had with a direct login is provided.
 
|-
 
|<tt>'''telinit n'''</tt>||go to the runlevel n (1=single-user, 3=multi-user, 4=graphical, 6=reboot).
 
|-
 
|<tt>'''umask'''</tt>||edit /etc/profile to change the default umask value of 022 and '''set it to 027''' (files not readable by other users), a good setting except when installing as root server software to be ran as a standard user account (permission issues).
 
|-
 
|<tt>'''vi'''</tt>||run the vi text editor. To get rid of the message "skipping N old session files", delete files elvis*.ses in /var/tmp.
 
|}
 
  
<br clear=all>
+
#! /bin/sh -e
 +
echo "Adding Slackware 14.2 (kernel 4.4.88)"
 +
cat << EOF
 +
menuentry "Slackware 14.2 (kernel 4.4.88)" {
 +
        set root=(hd0,2)
 +
        linux /boot/vmlinuz root=/dev/sda2 ro vga=773
 +
        }
 +
EOF
  
{{pFoot|[[Maintaining Slackware]]|[[Main Page]]|[[Configuration files]]}}
+
Update '''/boot/grub/grub.cfg''' accordingly :
 +
 
 +
# grub-mkconfig -o /boot/grub/grub.cfg
 +
 
 +
== Installing the bootloader ==
 +
 
 +
Last step is to create boot record in first sector of disk partition. If not using Master Boot Record in /dev/sda, then the --force option must be used :
 +
 
 +
# grub-install --force /dev/sda2
 +
# dd if=/dev/sda2 of=/mnt/win7/Boot/Slack14.mbr bs=512 count=1
 +
 
 +
You can now cross fingers and reboot ! If everything goes right you should be able to see the [{{SERVER}}/wikislax/download/xl.dmesg.log xl dmesg log] being displayed during Xen bootup, then the screen will be cleared and Xen will proceed with Linux (dom0) bootup as usual.
 +
 
 +
<br/>
 +
 
 +
{{pFoot|[[Compiling Xen]]|[[Main Page]]|[[Creating VMs]]}}

Latest revision as of 10:35, 20 December 2022

What is Grub2 ?

GNU Grub2 is a bootloader. A bootloader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software. For Xen we'll use Grub2 over Lilo. The reason is that Grub2 affords booting Xen alongside Domain-0, which Slackware's default Lilo cannot do. Last, we'll use Grub2 over Grub legacy, because the latter is not 64-bits compatible.

Compiling Grub2 ?

Compiling Grub2 is usually unnecessary as it is included with the Slackware distribution. However the grub-2.00 version included with Slackware 14.2 does not afford booting Xen so we'll compile grub-2.02 from source instead :

Download from the GNU page then untar to /usr/local and install as below :

# tar -C /usr/local -xvf grub-2.02.tar.gz
# cd /usr/local/
# chown -R root:root grub-2.02
# cd grub-2.02
# ./configure --libdir=/usr/local/lib64
# make
# make install
# make clean

Configuring Grub2

The Grub2 configuration is described in the Grub2 documentation. As it is quite massive we will just edit what we need.

Note : if using the Grub2 included with the Slackware distribution, the configuration files are /etc/default/grub and the files in /etc/grub.d. If using a Grub2 compiled by yourself then the configuration files are /usr/local/etc/default/grub and the files in /usr/local/etc/grub.d.

Let's go to the actual config now. Let's start with general options in file default/grub that we create.

# If you change this file, run grub-mkconfig -o /boot/grub/grub.cfg
# afterwards to update /boot/grub/grub.cfg.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=4
GRUB_DISTRIBUTOR=$( sed 's/Slackware /Slackware-/' /etc/slackware-version )
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
#GRUB_GFXMODE=1024x768x32

# Font used on the graphical terminal:
#GRUB_FONT=/usr/share/grub/dejavusansmono.pf2

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_LINUX_RECOVERY="true"

We now need to organize the files under grub.d. Keep only 00_header untouched, rename and make all the other files not executable, then add menu entries as executable files 11_xen-4.9.0-kernel-4.4.88-dom0 and 12_kernel-4.4.88-dom0. It will be wise to add yet another entry 13_slack-4.4.88 as a backup kernel. set root=(hd0,2) means the second partition on the disk. The other options is what we have kept after trying and failing many times to see anything on the console :

#! /bin/sh -e
echo "Adding Xen 4.9.0 / Slackware 14.2 (kernel 4.4.88-dom0)"
cat << EOF
menuentry "Xen 4.9.0 / Slackware 14.2 (kernel 4.4.88-dom0)" {
       set root=(hd0,2)
       multiboot /boot/xen-4.9.0.gz dom0_mem=max:16GB console=vga vga=gfx-1024x768x8 noreboot
       module /boot/vmlinuz-4.4.88-dom0 console=vga earlyprintk=xen root=/dev/sda2 ro vga=gfx-1024x768x8
       }
EOF
#! /bin/sh -e
echo "Adding Slackware 14.2 (kernel 4.4.88-dom0)"
cat << EOF
menuentry "Slackware 14.2 (kernel 4.4.88-dom0)" {
        set root=(hd0,2)
        linux /boot/vmlinuz-4.4.88-dom0 root=/dev/sda2 ro vga=773
        }
EOF
#! /bin/sh -e
echo "Adding Slackware 14.2 (kernel 4.4.88)"
cat << EOF
menuentry "Slackware 14.2 (kernel 4.4.88)" {
       set root=(hd0,2)
       linux /boot/vmlinuz root=/dev/sda2 ro vga=773
       }
EOF

Update /boot/grub/grub.cfg accordingly :

# grub-mkconfig -o /boot/grub/grub.cfg

Installing the bootloader

Last step is to create boot record in first sector of disk partition. If not using Master Boot Record in /dev/sda, then the --force option must be used :

# grub-install --force /dev/sda2
# dd if=/dev/sda2 of=/mnt/win7/Boot/Slack14.mbr bs=512 count=1

You can now cross fingers and reboot ! If everything goes right you should be able to see the xl dmesg log being displayed during Xen bootup, then the screen will be cleared and Xen will proceed with Linux (dom0) bootup as usual.


Compiling Xen Main Page Creating VMs