Bug 1311842

Summary: "waagent -serialconsole" break the menu.lst soft link in rhel6.7, and the kernel line match string is not accurate
Product: Red Hat Enterprise Linux 6 Reporter: Yuxin Sun <yuxisun>
Component: WALinuxAgentAssignee: Yue Zhang <yuezha>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.7CC: anderson, huishao, jinmiao, jjarvis, leiwang, lic_interop, lizzha, mingzhan, wshi, yuezha
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-08-09 08:46:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 1359574, 1366045, 1387784    
Attachments:
Description Flags
/boot/grub/menu.lst picture. none

Description Yuxin Sun 2016-02-25 07:43:36 UTC
Created attachment 1130431 [details]
/boot/grub/menu.lst picture.

Description of problem:
1. In RHEL6.7 OS, menu.lst is a soft link point to the grub.conf. The "waagent --serialconsole" deletes the menu.lst and writes a new one, which breaks the soft link, so that the menu.lst cannot be used while booting.
2. All the lines include "kernel" string are added "console=ttyS0 earlyprintk=ttyS0", including real kernel lines and some introduction lines.

Version-Release number of selected component (if applicable):
WALinuxAgent-2.0.16-1.el6

How reproducible:
Always

Steps to Reproduce:
1. waagent -serialconsole
2. Check the /boot/grub/menu.lst files that if the string "console=ttyS0 earlyprintk=ttyS0" is added to menu.lst file kernel line. Other lines are not changed.
    Use "ls -l" to check the menu.lst file that if it is a soft link point to the grub.conf file.
3. Reboot OS, enter the grub and input "a", check the kernel parameters.

Actual results:
The string "console=ttyS0 earlyprintk=ttyS0" is added to menu.lst but not in grub.conf file. And the soft link of menu.lst has been broken.

Expected results:
1. The menu.lst is a soft link point to the grub.conf. The "console=ttyS0 earlyprintk=ttyS0" is added to the menu.lst file.
2. Only kernel lines are added "console=ttyS0 earlyprintk=ttyS0" string. Other lines (such as introduction lines) are not changed.

Additional info:
waagent:
1.
grubKernelBootOptionsFile = '/boot/grub/menu.lst'
def ReplaceFileContentsAtomic(filepath, contents):
    ...
    os.write(handle, contents)
2.
self.grubKernelBootOptionsLine = 'kernel'
def AppendToLinuxKernelCmdline(option):
    if not FindInLinuxKernelCmdline(option):
src=r'^(.*?'+MyDistro.grubKernelBootOptionsLine+r')(.*?)("?)$'
        rep=r'\1\2 '+ option + r'\3'
        try:
ReplaceStringInFile(MyDistro.grubKernelBootOptionsFile,src,rep)

Comment 3 Yuxin Sun 2016-08-09 08:46:40 UTC
This feature doesn't exist in WALinuxAgent-2.1.5. Close it.

*** This bug has been marked as a duplicate of bug 1360493 ***