Difference between revisions of "Install/Chroot"

From Funtoo
Jump to navigation Jump to search
m (test connectivity and resolve 127.0.x.x alternate install media dns problems, fix the resolv.conf command to ensure it lands in the right place in case of using multiple terminals)
m (Edited →‎Chroot into Funtoo: : moved all <console> tags over to {{console}}, changed the wording in a few places, and removed some extra spaces after some {{console}}s.)
Line 6: Line 6:


Before chrooting, there are a few things that need to be done to set up the chroot environment. You will need to mount {{f|/proc}}, {{f|/sys}} and {{f|/dev}} inside your new system. Use the following commands to do so:
Before chrooting, there are a few things that need to be done to set up the chroot environment. You will need to mount {{f|/proc}}, {{f|/sys}} and {{f|/dev}} inside your new system. Use the following commands to do so:
<console>
{{console|body=
# ##i##cd /mnt/funtoo
# ##i##cd /mnt/funtoo
# ##i##mount -t proc none proc
# ##i##mount -t proc none proc
# ##i##mount --rbind /sys sys
# ##i##mount --rbind /sys sys
# ##i##mount --rbind /dev dev
# ##i##mount --rbind /dev dev
</console>
}}
 
You'll also want to copy over {{f|resolv.conf}} in order to have proper resolution of Internet hostnames from inside the chroot:
You'll also want to copy over <code>resolv.conf</code> in order to have proper resolution of Internet hostnames from inside the chroot:
{{console|body=
<console>
# ##i##cp /etc/resolv.conf /mnt/funtoo/etc/
# ##i##cp /etc/resolv.conf /mnt/funtoo/etc/
</console>
}}
 
Now you can chroot into your new system. Use <code>env</code> before <code>chroot</code> to ensure that no environment settings from the installation media are pulled in to your new system:
Now you can chroot into your new system. Use <code>env</code> before <code>chroot</code> to ensure that no environment settings from the installation media are pulled in to your new system:


<console>
{{console|body=###i## env -i HOME=/root TERM=$TERM chroot . bash -l}}
# ##i##env -i HOME=/root TERM=$TERM chroot . bash -l
{{Note|For users of live CDs with 64-bit kernels installing 32-bit systems: Some software may use {{c|uname -r}} to check whether the system is 32 or 64-bit. You may want append linux32 to the chroot command as a workaround, but it's generally not needed.}}
</console>
{{Important|If you receive the error "{{c|chroot: failed to run command `/bin/bash': Exec format error}}", it is most likely because you are running a 32-bit kernel and trying to execute 64-bit code. Make sure that you have selected the proper type of kernel when booting SystemRescueCD.}}
 
{{note|Users of live CDs with 64-bit kernels installing 32-bit systems: Some software may use <code>uname -r</code> to check whether the system is 32 or 64-bit. You may want append linux32 to the chroot command as a workaround, but it's generally not needed.}}
{{important|If you receive the error "<code>chroot: failed to run command `/bin/bash': Exec format error</code>", it is probably because you are running a 32-bit kernel and trying to execute 64-bit code. Make sure that you have selected the proper type of kernel when booting SystemRescueCD.}}


It's also a good idea to change the default command prompt while inside the chroot. This will avoid confusion if you have to change terminals. Use this command:
It's also a good idea to change the default command prompt while inside the chroot. This will avoid confusion if you have to change terminals. Use this command:
{{console|body=# ##i##export PS1="(chroot) $PS1"}}
{{console|body=# ##i##export PS1="(chroot) $PS1"}}
Test internet name resolution from within the chroot:
Test internet name resolution from within the chroot:
{{console|body=###i## ping -c 5 google.com}}
{{console|body=###i## ping -c 5 google.com}}
 
If you can't ping, make sure {{f|/etc/resolv.conf}} doesn't contain things like {{c|127.0.x.x}} addresses, if it does, change the {{c|127.0.x.x}} entry to {{c|8.8.8.8}} -- Google's public dns address.  Make sure to replace this with your dns of choice once the system is installed.
If you can't ping, make sure {{f|/etc/resolv.conf}} doesn't contain things like 127.0.x.x addresses, if it does change the 127.0.x.x entry to 8.8.8.8 googles public dns.  Make sure to replace this with your dns of choice once the system is installed.


Congratulations! You are now chrooted inside a Funtoo Linux system. Now it's time to get Funtoo Linux properly configured so that Funtoo Linux will start successfully, without any manual assistance, when your system is restarted.
Congratulations! You are now chrooted inside a Funtoo Linux system. Now it's time to get Funtoo Linux properly configured so that Funtoo Linux will start successfully, without any manual assistance, when your system is restarted.

Revision as of 18:00, June 30, 2015


   Note

This is a template that is used as part of the Installation instructions which covers: the chroot process. Templates are being used to allow multiple variant install guides that use most of the same re-usable parts.


Chroot into Funtoo

To install Funtoo Linux, the chroot command is first used. The chroot command will "switch into" the new Funtoo Linux system, so the commands you execute after running "chroot" will run within your newly-extracted Funtoo Linux system.

Before chrooting, there are a few things that need to be done to set up the chroot environment. You will need to mount /proc, /sys and /dev inside your new system. Use the following commands to do so:

root # cd /mnt/funtoo
root # mount -t proc none proc
root # mount --rbind /sys sys
root # mount --rbind /dev dev

You'll also want to copy over resolv.conf in order to have proper resolution of Internet hostnames from inside the chroot:

root # cp /etc/resolv.conf /mnt/funtoo/etc/

Now you can chroot into your new system. Use env before chroot to ensure that no environment settings from the installation media are pulled in to your new system:

root # env -i HOME=/root TERM=$TERM chroot . bash -l
   Note

For users of live CDs with 64-bit kernels installing 32-bit systems: Some software may use uname -r to check whether the system is 32 or 64-bit. You may want append linux32 to the chroot command as a workaround, but it's generally not needed.

   Important

If you receive the error "chroot: failed to run command `/bin/bash': Exec format error", it is most likely because you are running a 32-bit kernel and trying to execute 64-bit code. Make sure that you have selected the proper type of kernel when booting SystemRescueCD.

It's also a good idea to change the default command prompt while inside the chroot. This will avoid confusion if you have to change terminals. Use this command:

root # export PS1="(chroot) $PS1"

Test internet name resolution from within the chroot:

root # ping -c 5 google.com

If you can't ping, make sure /etc/resolv.conf doesn't contain things like 127.0.x.x addresses, if it does, change the 127.0.x.x entry to 8.8.8.8 -- Google's public dns address. Make sure to replace this with your dns of choice once the system is installed.

Congratulations! You are now chrooted inside a Funtoo Linux system. Now it's time to get Funtoo Linux properly configured so that Funtoo Linux will start successfully, without any manual assistance, when your system is restarted.