Thursday, January 21, 2010

අළුත් අවුරුද්දේ GRUB සමග ගනුදෙනු - 2 කොටස



එදා GRUB එක ගොඩ දාපු කතාව පටන් ගත්තට ඉවර කළෙ නැහැනෙ. අද ඉතුරු ටික. එදා කියපු විදියට GRUB එකේ තියෙන වින්ඩෝස් පාටිෂන් එකේ UUID එක වැරදියි. UUID කියල කියන්නෙ Universally Unique Identifier කියන එක. නමින් කියවෙන විදියටම මේකෙ එකම අගය උපකරණ දෙකකට තියෙන්න බැහැ. අපේ වැඩේට ඒ විස්තර ඕන නැහැ. smile කරන්න තියෙන්නෙ GRUB එකට හරියට UUID එක යොදන එක.



මුලින්ම හොයාගන්න ඕන අපේ වින්ඩෝස් පාටිෂන් එකේ නියම UUID එක මොකක්ද කියල. මේකට පාවිච්චි කරන්න පුළුවන් විධානයක් තියෙනවා.

ls /dev/disk/by-uuid


මේක දුන්නම එන්නෙ මෙන්න මේ වගේ ප්‍රතිඵලයක්:


(මේ screenshots ගත්තෙ වැඩේ කළාට පස්සෙ මගේ ලැපෙන්)

දැන් ලොකු ප්‍රශ්නයක්. මොකක්ද අපිට ඕන කරන UUID එක. confused කෝකටත් කියල

gedit /boot/grub/grub.cfg


විධානය දීල බැලුව මොනවද දැනට තියෙන UUID කියල. එතනින් ඕන කරන ඔත්තුව ලැබුණා. razz ලිනක්ස් පාටිෂන්වල (EXT4) UUID ඔක්කොම ඔය screenshot එකේ තියෙන ඒවයින් දිගින් වැඩි වර්ගයේ ඒවා. (උදා: c25e1bea-312d-4c64-9fa5-bde80d355b50) වින්ඩෝස් පාටිෂන්වල තියෙන්නෙ කොට UUID. (උදා: A298B4D698B4AA65) මේකට හේතුව නම් දන්නෙ නෑ. දන්න කෙනෙක් ඉන්නව නම් කියල දෙන්න.

දැන් ඉතුරුවෙලා තියෙන්නෙ UUID තුනයි. මේ අතරින් එකක් හරියට GRUB එකේ Windows Recovery මෙනු අයිතමයෙ සඳහන් වෙලා. එතකොට ඉතුරුවෙන්නෙ තව දෙකයි. දැන් හොයාගන්න ඕන මොකක්ද හරි එක කියල. සමහර විට ටර්මිනලයෙන්ම මේක හොයාගන්න ක්‍රමයක් ඇති. නමුත් එහෙම ක්‍රමයක් දන්නෙ නැති නිසා මේ UUID දෙක කොළේක ලියාගෙන මැෂිම ප්‍රතිපණගන්වලා GRUB එකේදි අර පසුගිය ලිපියෙ කියපු විදියට e අකුර ඔබලා දෙකම වෙන වෙනම දාල බැලුවා. දෙවෙනියට දාපු UUID එක වැඩ.

දැන් තියෙන්නෙ GRUB එකේ මේ UUID එක replace කරන එක. GRUB2 එකේ මෙනු අයිතමයක UUID එක වෙනස්කරන ක්‍රමයක් හොයාගන්න බැරිවුණා. දැන් කරන්න තියෙන්නෙ අළුත් මෙනු අයිතමයක් එකතු කරන එක. මේක කරන්න ක්‍රමයක් මෙන්න මෙතන තිබිල හොයාගත්ත. මෙන්න මේ විදයටයි අදාළ ගොනුව ලිව්වෙ:

echo "Windows Vista ;)"
cat << EOF
menuentry "Windows Vista ;)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set dc7e112b7e10ffc6
chainloader +1
}
EOF


ඔතන ඔය ;) කියල දැම්මෙ ආතල් එකට. lol මේක දැන් 24_amigo කියල /etc/grub.d/ ඩිරෙක්ටරියෙ save කළා. 24 කියල මුලින්ම දාන්න හේතුවක් තියෙනවා. grub.d ඩිරෙක්ටරියෙ තියෙන ගොනු මොනවද කියල බැලුවොත් මෙන්න මේ වගේ තමයි පේන්නෙ:


හැම ගොනු නමක්ම පටන් ගන්නෙ සංඛ්‍යාවකින්. ඒ අංකවල පිළිවෙලට තමයි මේව ක්‍රියාත්මක වෙන්නෙ. දැනට තියෙන වින්ඩෝස් මෙනු අයිතමවලට අදාළ දත්ත තිබුණෙ 30_os-prober කියන ගොනුවෙ. මේ නිසා ඊට අඩු අගයකින් පටන් ගන්න නමක් දාන්න ඕන. ඒ හින්දයි 24 කියල දැම්මෙ. (25 නොදා 24 දැම්මෙ ඒක අපි හදපු එකක් කියල මතක් වෙන්න wink)

මීළඟට කරන්න ඕන අපි හදපු ගොනුව ක්‍රියාත්මක කළ හැකි ආකාරයේ (executable) කරන එක. මේකට කරේ:

sudo chmod +x 24_amigos


විධානය දීපු එක. සරලයි සුගමයි. අන්තිම පියවර තමයි GRUB එක update කිරීම. මේක GRUB2 එක්ක ආපු නවාංගයක්. අදාළ ගොනු වෙනස් කළාට වැඩක් නැහැ අප්ඩේට් කළෙ නැත්නම්. අප්ඩේට් කරන එකේ හොඳක් තමයි අපි වෙනස් කරපු පේළිවල වැරදි තියෙනම් ඒව පෙන්නල දෙන එක.

sudo update-grub


දැන් ඉතින් දෙයියො බුදුන් සිහිකරගෙන මැසිම ප්‍රතිපණගැන්නුවා. බබා වගේ වැඩ. razz හොඳ අත්දැකීමක්.

ඔන්න ඔහොමයි අළුත් අවුරුද්දෙ GRUB එකත් එක්ක වැඩ ඇල්ලුවෙ. ඉස්සරහට තව මොනව වෙයිද දන්නෙ නැහැ. වැදගත් දෙයක් වුණොත් අනිවා බ්ලොග් එකේ දාන්නම්. මෙතන මම කරල තියෙන දෙයක වැරැද්දක් හරි ගැටලුවක් හරි තියෙනම් ප්‍රතිචාරයක් දාලම යන්න. හරි, දැන් ඉතින් හෙට විබාගෙට පාඩම් කරන්න යන්න ඕන. cry

මෙම ලිපියට ප්‍රතිචාර 4 කි:

ශාකුන්තල said...

එළ! මම නම් තාම GRUB2 වලට ආවෙ නෑ; security issues හරි යනකං මම GRUB2 පාවිච්චි කරන්නෙ නෑ.

UUID හොයා ගන්න ඔය තරම්ම නහින්න ඕනෙද? මේක බලන්න:
# ls -l /dev/disk/by-uuid | grep sda1 | awk '{ print $8 }'

තමීර said...

@ශාකුන්තල
සැහ්, ඕක කලින් දැනගෙන හිටිය නම් වැඩේ පට්ට ලේසි වෙනවනෙ. තැන්කූ කියල දුන්නට!

Saranga Rathnayake said...

මටත් ඔය අවුල ආව, හැබැයි ගොඩ ගන්න බැරි වෙලා ආපහු උබුන්ටු දැම්ම. මේක දැනන් හිටියනම් ගොඩගන්න තිබ්බ.
Windows මකපු GRUB2 ගොඩදැමීම ( බාගෙට )

තමීර said...

@Saranga Rathnayake
ඒ පෝස්ට් එක දැනුයි දැක්කෙ. ඔව් UUID වෙනස් කළා නම් ගොඩයන්න තිබුණ :)

අදහස් ලියලම යන්න