CentOS upgrade - access to chroot in %pre?

Bryan Schneiders bschneiders at woti.com
Thu Aug 27 13:10:17 UTC 2009


Cobbler includes a pre-script for backing up ssh host keys durian an install.  The script does the work of searching for your root partition in a less complicated way than the python example.  I'll attach the script in case it's a helpful example.

Bryan Schneiders
bschneiders at woti.com
301-562-1900 ext 305


Shabazian, Chip wrote:
> If you will have access to the network before and during the upgrade, 
> you could probably gather the partition/LVM information before the 
> upgrade, post it somewhere, wget it in the %pre and use it to mount your 
> drives.  I haven’t tried any of this, but common sense tells me it 
> should be doable.
> 
>  
> 
> *From:* kickstart-list-bounces at redhat.com 
> [mailto:kickstart-list-bounces at redhat.com] *On Behalf Of *Matt Rose
> *Sent:* Tuesday, August 25, 2009 11:27 AM
> *To:* Discussion list about Kickstart
> *Subject:* Re: CentOS upgrade - access to chroot in %pre?
> 
>  
> 
> quick, non-tested sample code to give you an idea, the following *WILL 
> NOT* work on your machine, unless you're  really lucky and have your 
> root partition as the second partition on the first hard drive.
> 
> Even if it does work, it won't really do anything.
> 
> %pre --interpreter /usr/bin/python --erroronfail --log=/tmp/kspre.log
> import sys,os,time,shutil,parted,re,subprocess,zipfile
> sys.path.append("/usr/lib/anaconda")
> import isys,iutil
> 
> ### This finds the first hard drive
> drive = isys.hardDriveDict().keys()[0]
> 
> ### The following will mount the second partition on the first harddrive 
> as /tmp/sysimage
> rootloc = "/tmp/sysimage"
> os.makedirs(rootloc)
> rootdrive = "/dev/%s2" % drive
> isys.mount(rootdrive,rootloc,fstype="ext3")
> 
> ###The following does some work to set up a somewhat sane chroot environment
> os.system("chmod 644 /dev/null")
> isys.mount("/dev","/tmp/sysimage/dev",fstype="tmpfs")
> isys.mount("/proc","/tmp/sysimage/proc",fstype="proc")
> isys.mount("/selinux","/tmp/sysimage/selinux",fstype="selinuxfs")
> 
> ###The following function lets you open up subprocesses in the chroot 
> environment
> def chroot():
>     os.chroot(rootloc)
> 
> ###The following runs an rpm command to check the release in the chroot
> subprocess.Popen("rpm -qa   
> *release",preexec_fn=chroot,shell=True,stdout=subprocess.PIPE).stdout.read()
> 
> ###Cleanup
> isys.umount("/tmp/sysimage/dev")
> isys.umount("/tmp/sysimage/proc")
> isys.umount("/tmp/sysimage/selinux")
> isys.umount("/tmp/sysimage")
> 
> 
> 
> 
> 
> Matt Rose wrote:
> 
> Yes, on upgrade, but it's not easy.  You have to detect and mount the 
> partitions by hand.  If you know some python, you can include the 
> anaconda libs and helper functions, but if you're just using sh, you'd 
> have one hell of a %pre script.
> 
> Matt
> 
> Moray Henderson (ICT) wrote:
> 
> Hi everyone,
> 
>  
> 
> Is it possible to make the /mnt/sysimage/... chroot available to the %pre script of a CentOS 5.3 upgrade?
> 
>  
> 
>  
> 
> Moray.
> 
> "To err is human.  To purr, feline"
> 
>  
> 
>  
> 
>  
> 
> _______________________________________________
> 
> Kickstart-list mailing list
> 
> Kickstart-list at redhat.com <mailto:Kickstart-list at redhat.com>
> 
> https://www.redhat.com/mailman/listinfo/kickstart-list
> 
>   
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Kickstart-list mailing list
> Kickstart-list at redhat.com
> https://www.redhat.com/mailman/listinfo/kickstart-list
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: keep_ssh_host_keys
URL: <http://listman.redhat.com/archives/kickstart-list/attachments/20090827/fc249f28/attachment.ksh>


More information about the Kickstart-list mailing list