рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕: рд╕рд╛рдВрдмрд╛ рдкрд░ рд░реВрдЯ рд╡рд┐рднрд╛рдЬрди

рдорд┐рддреНрд░реЛ рдирдорд╕реНрдХрд╛рд░!
рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рд╣реИ, рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗред

рдХрд╛рд░реНрдп


- рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд░реВрдЯ рд╡рд┐рднрд╛рдЬрди рд╕рд╛рдВрдмрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрд░реЛрд╣рд┐рдд рд╣реЛ

рдирд┐рд░реНрдгрдп


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
- рд╕реНрдерд╛рдкрд┐рдд рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ (рдпрд╛ LiveCD)
- AUR рд╕реЗ mkinitcpio- рдорд╛рдЙрдВрдЯ-рд╣реБрдХ (http://aur.archlinux.org/packages.php?ID=40372)
- рдПрдХ рдЬреЛрдбрд╝реЗ рдФрд░ рдЕрдзрд┐рдХ рдЫреЛрдЯреЗ рд╣реБрдХ: Mount.cifs рдФрд░ Mount.loop
- рдЕрддрд┐рд░рд┐рдХреНрдд / devtools (mkarchroot рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)
- рдХреЛрд░ / mkinitcpio-nfs-utils (рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ)
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдВрдЧреНрд░рд╣

1. рдФрд░ рдореИрдВ рдмрд╛рдж рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред

build.sh
#!/bin/bash -e chroot_path=/tmp/chroot # Install base and some needed packages mkarchroot -f $chroot_path base mkinitcpio-nfs-utils # This adds cifs and loop modules to the initcpio image cp mount.cifs mount.loop -t $chroot_path/lib/initcpio/install # Add mount hook (http://aur.archlinux.org/packages.php?ID=40372) wget "http://people.oh14.de/andrej/mkinitcpio-mount-hook/mkinitcpio-mount-hook-0.3-stickbuild.tar.xz" -O - | tar -xJ --wildcards -C /tmp mkinitcpio-mount-hook-0.3/initcpio/*/mount cp -r /tmp/mkinitcpio-mount-hook-0.3/initcpio/* -t $chroot_path/lib/initcpio # Remove hard drives support and keep only needed hooks (added: net, mount, mount.cifs, mount.loop) sudo sed -i 's/^HOOKS=".*"/HOOKS="base udev net filesystems mount mount.cifs mount.loop"/' $chroot_path/etc/mkinitcpio.conf # Keep only one initcpio image (we don't need fallback) sed -i "s/^PRESETS=.*/PRESETS=('default')/" $chroot_path/etc/mkinitcpio.d/kernel26.preset # Adapt network configuration for network-based root sed -i 's/^DHCPCD_ARGS="-q"$/DHCPCD_ARGS="-q -p"/' $chroot_path/etc/conf.d/dhcpcd sed -i 's/^interface=$/interface=eth0/' $chroot_path/etc/rc.conf sed -i 's/^NETWORK_PERSIST="no"$/NETWORK_PERSIST="yes"/' $chroot_path/etc/rc.conf # Rebuild initcpio image mkarchroot -r "mkinitcpio -p kernel26" $chroot_path 


рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде, рд╣рдо рдПрдХ рдЪреЗрд░реЛрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдмреЗрд╕ рд╕рдореВрд╣ рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ mkinitcpio-nfs-utils рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рдЖрдк рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреЛрдИ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рдХрдорд╛рдВрдб initrcpio рдореЗрдВ cifs рдФрд░ рд▓реВрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рддреАрд╕рд░рд╛ рдХрдорд╛рдВрдб рд░реВрдЯ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЪреМрдерд╛ initcpio рд╕реЗ рднреМрддрд┐рдХ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рд╕рдорд░реНрдерди рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ рдФрд░ cifs, рд▓реВрдк рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдорд╛рдЙрдВрдЯ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╣реБрдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдкрд╛рдВрдЪрд╡реАрдВ рдХрдорд╛рдВрдб рдлрд╝реЙрд▓рдмреИрдХ рдЗрдирдХреИрдкрд┐рдУ рдЫрд╡рд┐ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддреА рд╣реИ, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рдСрдЯреЛ рдбрд┐рдЯреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЫрдареА рдХрдорд╛рдВрдб рдирдИ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреА рд╣реИ рддрд╛рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ, рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рди рд╣реЛред рдФрд░ рдЖрдЦрд┐рд░реА рдЯреАрдо initcpio рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрдЬрддреА рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд░реНрдерди, cifs, рд▓реВрдк, рдЙрдиреНрдирдд рдорд╛рдЙрдВрдЯ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ред

2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ cifs (samba) рдФрд░ рд▓реВрдк (рдбрд┐рд╕реНрдХ рдбрд┐рд╕реНрдХ рдмрдврд╝рддреЗ) рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ initcpio рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

mount.cifs
 # vim:set ft=sh: install () { MODULES="cifs hmac md4 md5" BINARIES="" FILES="" SCRIPT="" } help () { cat <<HELPEOF This hook helps to mount cifs. HELPEOF } 


mount.loop
 # vim:set ft=sh: install () { MODULES="loop" BINARIES="" FILES="" SCRIPT="" } help () { cat <<HELPEOF This hook helps to mount loop images. HELPEOF } 


рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪреЗрд░реЛрдЯ рдФрд░ рдЗрдирдЯрд┐рд╕рдкрд┐рдпреЛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЪреЗрд░реЛрдЯ рдХреЛ рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╕рд╛рдВрдмрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрд╕рд▓, рд╕рд┐рдорд▓рд┐рдВрдХ рдФрд░ рд╣рд╛рд░реНрдбрд▓рд┐рдВрдХ рдХреЗ рд╕рдорд░реНрдерди рдкрд░ рдкрд╣реЗрд▓реА рди рдмрдиреЗред рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдХрд╛ рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рди рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕, рдмрд▓реНрдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рднреА рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

3. 1Gb рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЗрд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ext4 рдХреЗ рддрд╣рдд рдФрд░ рдЗрд╕реЗ / tmp / chroot рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:

 #!/bin/bash -e dd if=/dev/null of=/tmp/arch.img bs=1M seek=1024 mkfs.ext4 -F /tmp/arch.img mkdir /tmp/chroot mount /tmp/arch.img /tmp/chroot 


4. рдЕрдм рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА build.sh рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ / tmp / chroot / boot / vmlinuz26 рдФрд░ /tmp/chroot/boot/kernel26.img рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рд╡реЗ рдЕрднреА рднреА рдХрд╛рдо рдореЗрдВ рдЖрдПрдВрдЧреЗ) рдФрд░ рдЫрд╡рд┐ рдХреЛ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред

 #!/bin/bash -e cp /tmp/chroot/boot/{vmlinuz26,kernel26.img} /tmp umount /tmp/arch.img 


5. рдХреНрдпрд╛ рд╡рд╣ рд╕рдм рд╣реИ? рд╣рд╛рдБ, рд╡рд╣ рд╕рдм рд╣реИред рдЦреИрд░, рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫред рдЕрдм рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рд╣рдо рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:
1) рд╣рдорд╛рд░рд╛ /tmp/arch.img рд▓реЗ рд▓реЛ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рд╕рд╛рдВрдмрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рд▓реЗрдВ;
2) рдмреВрдЯ рд╡рд┐рдзрд┐ (рд╕реАрдбреА-рд░реЙрдо, рдкреАрдПрдХреНрд╕рдИ, рдЧреНрд░рдм, рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЬрд┐рд╕реЗ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдкрд░ рддрдп рдХрд░реЗрдВ;
3) рдХреЙрдкреА / tmp / chroot / boot / vmlinuz26 рдФрд░ /tmp/chroot/boot/kernel26.img рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдбрд╛рдЙрдирд▓реЛрдб рд╡рд┐рдХрд▓реНрдк :
# grub
kernel /boot/vmlinuz26 ip=::::::dhcp mounts=cifs,root cifs_dev=//SERVER_IP/share cifs_target=/cifs cifs_type=cifs cifs_opts=username=guest root_dev=/cifs/arch.img root_type=ext4
initrd /boot/kernel26.img

# isolinux/pxelinux
kernel vmlinuz26
append initrd=kernel26.img ip=::::::dhcp mounts=cifs,root cifs_dev=//SERVER_IP/share cifs_target=/cifs cifs_type=cifs cifs_opts=username=guest root_dev=/cifs/arch.img root_type=ext4


рдиреЛрдЯ : рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо = рдЕрддрд┐рдерд┐ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реЛ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо = рдЕрддрд┐рдерд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрд╛рддрд╛ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо


рд╣рдореЗрдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
1) vmlinuz26 рдХреЛ рдХрд░реНрдиреЗрд▓26.img рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпреЗ рдлрд╛рдЗрд▓реЗрдВ рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рдкрд░ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд╕реАрдбреА рдкрд░, tftp рд╕рд░реНрд╡рд░ рдкрд░);
2) рдиреЗрдЯрд╡рд░реНрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ / SERVER_IP / рд╢реЗрдпрд░ / cifs рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ;
3) рдореВрд▓ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд░реВрдк рдореЗрдВ / cifs/arch.img mounts рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдмреВрдЯ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣, рдЖрдк рдЫрд╡рд┐ рдХреЛ рдПрдирдПрдлрд╝рдПрд╕ рдкрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рдпреЛрдЧ рднреА рдПрдлрд╝рдпреВрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрдм рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрд╣рд┐рдо рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди tmpfs рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд░реНрддрдорд╛рди рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдлрд╝рдпреВрдПрд╕ рд╕рдорд░реНрдерди рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/In122708/


All Articles