# SOME DESCRIPTIVE TITLE. # Copyright (C) 1999 Free Software Foundation, Inc. # Irish Linux Users Group , 1999 # # Credits where due: # Proinnsias Breathnach # Donncha Ó'Caoimh # Barra Ó'Caoimh # John McDonnell # Who've all contributed so far. # Proinnsias 16-Dec-1999 # msgid "" msgstr "" "Project-Id-Version: DrakX VERSION\n" "POT-Creation-Date: 2000-01-05 22:10+0100\n" "PO-Revision-Date: 1999-12-16 10:33+0100\n" "Last-Translator: Proinnsias Breathnach \n" "Language-Team: Gaeilge \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../Xconfigurator.pm_.c:159 msgid "Graphic card" msgstr "Carta Grafach" #: ../Xconfigurator.pm_.c:159 msgid "Select a graphic card" msgstr "Roghnaigh carta grafachach" #: ../Xconfigurator.pm_.c:160 msgid "Choose a X server" msgstr "Roghnaigh freastalaí X" #: ../Xconfigurator.pm_.c:160 #, fuzzy msgid "X server" msgstr "freastalaí" #: ../Xconfigurator.pm_.c:181 msgid "Select the memory size of your graphic card" msgstr "Roghnaigh an méid cuimhne atá id' charta grafachach" #: ../Xconfigurator.pm_.c:203 msgid "Choose options for server" msgstr "Roghnaigh cumraíocht an freastalaí" #: ../Xconfigurator.pm_.c:221 msgid "Choose a monitor" msgstr "Roghnaigh scáileán" #: ../Xconfigurator.pm_.c:221 msgid "Monitor" msgstr "Scáileán" #: ../Xconfigurator.pm_.c:224 msgid "" "The two critical parameters are the vertical refresh rate, which is the " "rate\n" "at which the whole screen is refreshed, and most importantly the horizontal\n" "sync rate, which is the rate at which scanlines are displayed.\n" "\n" "It is VERY IMPORTANT that you do not specify a monitor type with a sync " "range\n" "that is beyond the capabilities of your monitor: you may damage your " "monitor.\n" " If in doubt, choose a conservative setting." msgstr "" #: ../Xconfigurator.pm_.c:231 msgid "Horizontal refresh rate" msgstr "Ráta athnuachana cothrománach" #: ../Xconfigurator.pm_.c:231 msgid "Vertical refresh rate" msgstr "Ráta athnuachana ingearach" #: ../Xconfigurator.pm_.c:272 msgid "Monitor not configured" msgstr "Níl aon scáileán cumraithe" #: ../Xconfigurator.pm_.c:275 msgid "Graphic card not configured yet" msgstr "Níl aon carta grafachach cumraithe" #: ../Xconfigurator.pm_.c:278 msgid "Resolutions not chosen yet" msgstr "" #: ../Xconfigurator.pm_.c:289 msgid "Do you want to test the configuration?" msgstr "An bhfuil tú ag iarraidh an cumraíocht a thrial?" #: ../Xconfigurator.pm_.c:293 msgid "Warning: testing is dangerous on this graphic card" msgstr "" #: ../Xconfigurator.pm_.c:296 msgid "Test configuration" msgstr "Trialaigh an cumraíocht" #: ../Xconfigurator.pm_.c:328 msgid "An error occurred:" msgstr "Tharla Earráid" #: ../Xconfigurator.pm_.c:330 msgid "" "\n" "try changing some parameters" msgstr "" "\n" "bain trial as roinnt paraiméadair a athrú" #: ../Xconfigurator.pm_.c:351 #, c-format msgid "(leaving in %d seconds)" msgstr "(ag éalú i %d siocand)" #: ../Xconfigurator.pm_.c:355 ../my_gtk.pm_.c:425 msgid "Is this correct?" msgstr "An bhfuil seo ceart?" #: ../Xconfigurator.pm_.c:363 msgid "An error occurred, try changing some parameters" msgstr "Tharla earráid, bain trial as roinnt paraiméadair a athrú" #: ../Xconfigurator.pm_.c:371 ../Xconfigurator.pm_.c:540 msgid "Automatic resolutions" msgstr "" #: ../Xconfigurator.pm_.c:372 msgid "" "To find the available resolutions I will try different ones.\n" "Your screen will blink...\n" "You can switch if off if you want, you'll hear a beep when it's over" msgstr "" #: ../Xconfigurator.pm_.c:427 ../printerdrake.pm_.c:210 msgid "Resolution" msgstr "" #: ../Xconfigurator.pm_.c:462 msgid "Choose resolution and color depth" msgstr "" #: ../Xconfigurator.pm_.c:470 msgid "Show all" msgstr "Taispéan gach ceann" #: ../Xconfigurator.pm_.c:494 msgid "Resolutions" msgstr "" #: ../Xconfigurator.pm_.c:541 msgid "" "I can try to find the available resolutions (eg: 800x600).\n" "Sometimes, though, it may hang the machine.\n" "Do you want to try?" msgstr "" #: ../Xconfigurator.pm_.c:546 msgid "" "No valid modes found\n" "Try with another video card or monitor" msgstr "" #: ../Xconfigurator.pm_.c:760 #, c-format msgid "Keyboard layout: %s\n" msgstr "Leagan amach eocharchlára: %s\n" #: ../Xconfigurator.pm_.c:761 #, c-format msgid "Mouse type: %s\n" msgstr "Cineál luchóg: %s\n" #: ../Xconfigurator.pm_.c:762 #, c-format msgid "Mouse device: %s\n" msgstr "Gaireas luchóige: %s\n" #: ../Xconfigurator.pm_.c:763 #, c-format msgid "Monitor: %s\n" msgstr "Scáileán: %s\n" #: ../Xconfigurator.pm_.c:764 #, c-format msgid "Monitor HorizSync: %s\n" msgstr "" #: ../Xconfigurator.pm_.c:765 #, c-format msgid "Monitor VertRefresh: %s\n" msgstr "" #: ../Xconfigurator.pm_.c:766 #, c-format msgid "Graphic card: %s\n" msgstr "Carta Grafach: %s\n" #: ../Xconfigurator.pm_.c:767 #, c-format msgid "Graphic memory: %s kB\n" msgstr "Cuimhne grafach: %s kb\n" #: ../Xconfigurator.pm_.c:768 #, c-format msgid "XFree86 server: %s\n" msgstr "Freastalaí XFree86: %s\n" #: ../Xconfigurator.pm_.c:782 msgid "Preparing X-Window configuration" msgstr "Ag ullmhú cumraíocht X-Windows" #: ../Xconfigurator.pm_.c:796 msgid "Change Monitor" msgstr "Athraigh Scáileán" #: ../Xconfigurator.pm_.c:797 msgid "Change Graphic card" msgstr "Athraigh carta grafach" #: ../Xconfigurator.pm_.c:798 msgid "Change Server options" msgstr "Athraigh cumraíocht an freastalaí" #: ../Xconfigurator.pm_.c:799 msgid "Change Resolution" msgstr "" #: ../Xconfigurator.pm_.c:800 msgid "Automatical resolutions search" msgstr "" #: ../Xconfigurator.pm_.c:804 msgid "Show information" msgstr "Taispeán Eolas" #: ../Xconfigurator.pm_.c:805 msgid "Test again" msgstr "Bain trial as arís" #: ../Xconfigurator.pm_.c:806 ../standalone/rpmdrake_.c:46 msgid "Quit" msgstr "Éalaigh" #: ../Xconfigurator.pm_.c:810 msgid "What do you want to do?" msgstr "Céard a theastaíonn uait a dhéanamh?" #: ../Xconfigurator.pm_.c:817 msgid "Forget the changes?" msgstr "" #: ../Xconfigurator.pm_.c:833 #, c-format msgid "Please relog into %s to activate the changes" msgstr "" #: ../Xconfigurator.pm_.c:849 msgid "Please log out and then use Ctrl-Alt-BackSpace" msgstr "" #: ../Xconfigurator.pm_.c:852 msgid "X at startup" msgstr "X ag tús" #: ../Xconfigurator.pm_.c:853 msgid "" "I can set up your computer to automatically start X upon booting.\n" "Would you like X to start when you reboot?" msgstr "" "Is féidir linn do ríomhaire a shocrú le X a thosnú i ndhiadh bootáil.\n" "An dteastaíonn uait go dtosnófar X nuair a aththosnítear an ríomhaire?" #: ../Xconfigurator_consts.pm_.c:4 msgid "256 colors (8 bits)" msgstr "256 dath (8 giotáin)" #: ../Xconfigurator_consts.pm_.c:5 msgid "32 thousand colors (15 bits)" msgstr "32 míle dath (15 giotáin)" #: ../Xconfigurator_consts.pm_.c:6 msgid "65 thousand colors (16 bits)" msgstr "65 míle dath (16 giotáin)" #: ../Xconfigurator_consts.pm_.c:7 msgid "16 million colors (24 bits)" msgstr "16 milliún dath (24 giotáin)" #: ../Xconfigurator_consts.pm_.c:8 msgid "4 billion colors (32 bits)" msgstr "4 billiún dath (32 giotáin)" #: ../Xconfigurator_consts.pm_.c:96 msgid "256 kB" msgstr "256 kB" #: ../Xconfigurator_consts.pm_.c:97 msgid "512 kB" msgstr "512 kB" #: ../Xconfigurator_consts.pm_.c:98 msgid "1 MB" msgstr "1 MB" #: ../Xconfigurator_consts.pm_.c:99 msgid "2 MB" msgstr "2 MB" #: ../Xconfigurator_consts.pm_.c:100 msgid "4 MB" msgstr "4 MB" #: ../Xconfigurator_consts.pm_.c:101 msgid "8 MB" msgstr "8 MB" #: ../Xconfigurator_consts.pm_.c:102 msgid "16 MB or more" msgstr "16 MB nó níos mó" #: ../Xconfigurator_consts.pm_.c:106 ../Xconfigurator_consts.pm_.c:107 msgid "Standard VGA, 640x480 at 60 Hz" msgstr "Gnáth VGA, 640x480 ag 60Hz" #: ../Xconfigurator_consts.pm_.c:108 msgid "Super VGA, 800x600 at 56 Hz" msgstr "Super VGA, 800x600 ag 56 Hz" #: ../Xconfigurator_consts.pm_.c:109 msgid "8514 Compatible, 1024x768 at 87 Hz interlaced (no 800x600)" msgstr "" #: ../Xconfigurator_consts.pm_.c:110 msgid "Super VGA, 1024x768 at 87 Hz interlaced, 800x600 at 56 Hz" msgstr "Super VGA, 1024x768 ag 87 Hz Idirdhuillithe, 800x600 ag 56 Hz" #: ../Xconfigurator_consts.pm_.c:111 msgid "Extended Super VGA, 800x600 at 60 Hz, 640x480 at 72 Hz" msgstr "SVGA Leathnaithe, 800x600 ag 60 Hz, 640x480 ag 72 Hz" #: ../Xconfigurator_consts.pm_.c:112 msgid "Non-Interlaced SVGA, 1024x768 at 60 Hz, 800x600 at 72 Hz" msgstr "SVGA Neamh-idirdhuillithe, 1024x768 ag 60 Hz, 800x600 ag 72 Hz" #: ../Xconfigurator_consts.pm_.c:113 msgid "High Frequency SVGA, 1024x768 at 70 Hz" msgstr "SVGA d'árd minicíocht, 1024x768 ag 70 Hz" #: ../Xconfigurator_consts.pm_.c:114 msgid "Multi-frequency that can do 1280x1024 at 60 Hz" msgstr "Scáileán ilmhinicíocht a bhfuil in ann do 1280x1024 ag 60 Hz" #: ../Xconfigurator_consts.pm_.c:115 msgid "Multi-frequency that can do 1280x1024 at 74 Hz" msgstr "Scáileán ilmhinicíocht a bhfuil in ann do 1280x1024 ag 74 Hz" #: ../Xconfigurator_consts.pm_.c:116 msgid "Multi-frequency that can do 1280x1024 at 76 Hz" msgstr "Scáileán ilmhinicíocht a bhfuil in ann do 1280x1024 ag 76 Hz" #: ../Xconfigurator_consts.pm_.c:117 msgid "Monitor that can do 1600x1200 at 70 Hz" msgstr "Scáileán a bhfuil in ann do 1600x1200 ag 70Hz" #: ../Xconfigurator_consts.pm_.c:118 msgid "Monitor that can do 1600x1200 at 76 Hz" msgstr "Scáileán a bhfuil in ann do 1600x1200 ag 76Hz" #: ../diskdrake.pm_.c:16 ../diskdrake.pm_.c:370 msgid "Create" msgstr "Cruthaigh" #: ../diskdrake.pm_.c:17 msgid "Unmount" msgstr "" #: ../diskdrake.pm_.c:18 ../diskdrake.pm_.c:372 msgid "Delete" msgstr "Dealaigh" #: ../diskdrake.pm_.c:18 msgid "Format" msgstr "Formáidigh" #: ../diskdrake.pm_.c:18 ../diskdrake.pm_.c:527 msgid "Resize" msgstr "Athméidigh" #: ../diskdrake.pm_.c:18 ../diskdrake.pm_.c:370 ../diskdrake.pm_.c:414 msgid "Type" msgstr "Cineál" #: ../diskdrake.pm_.c:19 ../diskdrake.pm_.c:430 msgid "Mount point" msgstr "" #: ../diskdrake.pm_.c:33 msgid "Write /etc/fstab" msgstr "Scríobh /etc/fstab" #: ../diskdrake.pm_.c:34 msgid "Toggle to expert mode" msgstr "" #: ../diskdrake.pm_.c:35 msgid "Toggle to normal mode" msgstr "" #: ../diskdrake.pm_.c:36 msgid "Restore from file" msgstr "Aisig ó comhad" #: ../diskdrake.pm_.c:37 msgid "Save in file" msgstr "Sabháil i gcomhad" #: ../diskdrake.pm_.c:38 msgid "Restore from floppy" msgstr "Aisig ó dhiosca flapach" #: ../diskdrake.pm_.c:39 msgid "Save on floppy" msgstr "Sabháil ar dhiosca flapach" #: ../diskdrake.pm_.c:40 ../install_steps_interactive.pm_.c:612 #: ../install_steps_interactive.pm_.c:742 ../standalone/adduserdrake_.c:34 msgid "Done" msgstr "Críochnithe" #: ../diskdrake.pm_.c:43 msgid "Clear all" msgstr "Glan gach ceann" #: ../diskdrake.pm_.c:44 msgid "Format all" msgstr "Formáidigh gach ceann" #: ../diskdrake.pm_.c:45 msgid "Auto allocate" msgstr "" #: ../diskdrake.pm_.c:48 msgid "All primary partitions are used" msgstr "Tá na ranna príofa uilig úsáidthe" #: ../diskdrake.pm_.c:48 msgid "I can't add any more partition" msgstr "Ní féidir liom rann eile a cur isteach" #: ../diskdrake.pm_.c:48 msgid "" "To have more partitions, please delete one to be able to create an extended " "partition" msgstr "" "Le breis ranna a bheith agat, dealaigh ceann amháin le bheith in ann " "rannsínithe a cruthú" #: ../diskdrake.pm_.c:51 #, fuzzy msgid "Rescue partition table" msgstr "Scriobh clár-ranna" #: ../diskdrake.pm_.c:52 msgid "Undo" msgstr "Cealaigh" #: ../diskdrake.pm_.c:53 msgid "Write partition table" msgstr "Scriobh clár-ranna" #: ../diskdrake.pm_.c:54 msgid "Reload" msgstr "Athlódaigh" #: ../diskdrake.pm_.c:98 msgid "Empty" msgstr "Folamh" #: ../diskdrake.pm_.c:98 msgid "Ext2" msgstr "Ext2" #: ../diskdrake.pm_.c:98 msgid "FAT" msgstr "FAT" #: ../diskdrake.pm_.c:98 msgid "Other" msgstr "Eile" #: ../diskdrake.pm_.c:98 msgid "Swap" msgstr "Malairte" #: ../diskdrake.pm_.c:104 msgid "Filesystem types:" msgstr "Cineál córais-comhadlanna" #: ../diskdrake.pm_.c:113 msgid "Details" msgstr "Sonraí" #: ../diskdrake.pm_.c:127 #, fuzzy msgid "" "You have one big fat partition\n" "(generally use by MicroSoft Dos/Windows).\n" "I suggest you first resize that partition\n" "(click on it, then click on \"Resize\")" msgstr "" "Tá rann mór FAT amháin agat.\n" "Molaim dhuit an rann sin a athmhéadú ar dtús\n" "(roghnaigh an rann agus brú ar \"Athméidigh\")" #: ../diskdrake.pm_.c:132 msgid "Please make a backup of your data first" msgstr "" #: ../diskdrake.pm_.c:132 ../diskdrake.pm_.c:146 ../diskdrake.pm_.c:458 #: ../diskdrake.pm_.c:487 msgid "Read carefully!" msgstr "Léigh go curamach" #: ../diskdrake.pm_.c:146 #, c-format msgid "After %s partition %s," msgstr "I ndhiadh %s rann %s," #: ../diskdrake.pm_.c:146 msgid "all data on this partition will be lost" msgstr "caillfear gach sonra ar an rann seo" #: ../diskdrake.pm_.c:165 ../install_any.pm_.c:191 ../install_steps.pm_.c:67 #: ../install_steps_interactive.pm_.c:37 ../standalone/diskdrake_.c:60 #: ../standalone/rpmdrake_.c:294 ../standalone/rpmdrake_.c:304 msgid "Error" msgstr "Earráid" #: ../diskdrake.pm_.c:189 ../diskdrake.pm_.c:610 msgid "Mount point: " msgstr "" #: ../diskdrake.pm_.c:190 ../diskdrake.pm_.c:228 msgid "Device: " msgstr "Gaireas: " #: ../diskdrake.pm_.c:191 #, c-format msgid "DOS drive letter: %s (just a guess)\n" msgstr "Litir Dioscthiománt DOS: %s (buile faoi thuraim)\n" #: ../diskdrake.pm_.c:192 ../diskdrake.pm_.c:231 msgid "Type: " msgstr "Cineál: " #: ../diskdrake.pm_.c:193 #, c-format msgid "Start: sector %s\n" msgstr "Tús: teascán %s\n" #: ../diskdrake.pm_.c:194 #, c-format msgid "Size: %s MB" msgstr "Méid: %s MB" #: ../diskdrake.pm_.c:196 #, c-format msgid ", %s sectors" msgstr ", %s teascáin" #: ../diskdrake.pm_.c:198 #, c-format msgid "Cylinder %d to cylinder %d\n" msgstr "Sorcóir %d go sorcóir %d\n" #: ../diskdrake.pm_.c:199 msgid "Formatted\n" msgstr "Formáidithe\n" #: ../diskdrake.pm_.c:200 msgid "Not formatted\n" msgstr "Neamhformáidithe\n" #: ../diskdrake.pm_.c:201 msgid "Mounted\n" msgstr "" #: ../diskdrake.pm_.c:202 #, c-format msgid "RAID md%s\n" msgstr "RAID md%s\n" #: ../diskdrake.pm_.c:203 msgid "" "Partition booted by default\n" " (for MS-DOS boot, not for lilo)\n" msgstr "" "Rann tosaithe de ghnáth\n" " (do thosnú MS-DOS, ní lilo)\n" #: ../diskdrake.pm_.c:205 #, c-format msgid "Level %s\n" msgstr "Leibhéal %s\n" #: ../diskdrake.pm_.c:206 #, c-format msgid "Chunk size %s\n" msgstr "Méid smután %s\n" #: ../diskdrake.pm_.c:207 #, c-format msgid "RAID-disks %s\n" msgstr "Dioscaí RAID %s\n" #: ../diskdrake.pm_.c:224 #, fuzzy msgid "Please click on a partition" msgstr "Cruthaigh rann nua" #: ../diskdrake.pm_.c:229 #, c-format msgid "Size: %d MB\n" msgstr "Méid: %d MB\n" #: ../diskdrake.pm_.c:230 #, c-format msgid "Geometry: %s cylinders, %s heads, %s sectors\n" msgstr "Céimseasamh: %s sorcóir, %s ceann, %s teascán\n" #: ../diskdrake.pm_.c:232 #, c-format msgid "on bus %d id %d\n" msgstr "ar bhús %d, id %d\n" #: ../diskdrake.pm_.c:245 msgid "Mount" msgstr "" #: ../diskdrake.pm_.c:246 msgid "Active" msgstr "Gníomhach" #: ../diskdrake.pm_.c:247 msgid "Add to RAID" msgstr "Cur le RAID" #: ../diskdrake.pm_.c:248 msgid "Remove from RAID" msgstr "Bain ó RAID" #: ../diskdrake.pm_.c:249 msgid "Modify RAID" msgstr "Athraigh RAID" #: ../diskdrake.pm_.c:256 msgid "Choose action" msgstr "Roghnaigh gníomh" #: ../diskdrake.pm_.c:349 msgid "" "Sorry I won't accept to create /boot so far onto the drive (on a cylinder > " "1024).\n" "Either you use LILO and it won't work, or you don't use LILO and you don't " "need /boot" msgstr "" "Níl mé sasta /boot a cruthú comh fada sin isteach sa diosca, (ar sorcóir > " "1024).\n" "Má tá tú ag úsáid LILO ní oibróidh sé, nó níl /boot uait muna n-úsáideann tú " "LILO" #: ../diskdrake.pm_.c:353 msgid "" "The partition you've selected to add as root (/) is physically located " "beyond\n" "the 1024th cylinder of the hard drive, and you have no /boot partition.\n" "If you plan to use the LILO boot manager, be careful to add a /boot partition" msgstr "" "Tá an rann atá roghnaithe agat don fréamh (/) suitithe i ndhiadh an 1024ú\n" "sorcóir ar an dhiosca, agus níl aon rann /boot agat.\n" "Má tá tú chun LILO a úsáid, beidh ort rann /boot a cruthú ar ball." #: ../diskdrake.pm_.c:370 ../diskdrake.pm_.c:372 #, c-format msgid "Use ``%s'' instead" msgstr "" #: ../diskdrake.pm_.c:375 msgid "Use ``Unmount'' first" msgstr "" #: ../diskdrake.pm_.c:376 ../diskdrake.pm_.c:409 msgid "changing type of" msgstr "athraigh an cineál de" #: ../diskdrake.pm_.c:388 msgid "Continue anyway?" msgstr "Lean ar aghaidh ar aon nós?" #: ../diskdrake.pm_.c:393 msgid "Quit without saving" msgstr "Éalaigh gan sabháil" #: ../diskdrake.pm_.c:393 msgid "Quit without writing the partition table?" msgstr "Éalaigh gan an clár-ranna a scríobh?" #: ../diskdrake.pm_.c:412 msgid "Change partition type" msgstr "Athraigh cineál ranna" #: ../diskdrake.pm_.c:413 msgid "Which partition type do you want?" msgstr "Cén rann atá uait?" #: ../diskdrake.pm_.c:429 #, c-format msgid "Where do you want to mount device %s?" msgstr "" #: ../diskdrake.pm_.c:451 msgid "formatting" msgstr "ag formáidiú" #: ../diskdrake.pm_.c:453 msgid "Formatting" msgstr "Ag formáidiú" #: ../diskdrake.pm_.c:453 ../install_steps_interactive.pm_.c:221 #, c-format msgid "Formatting partition %s" msgstr "Ag formáidiú rann %s" #: ../diskdrake.pm_.c:458 msgid "After formatting all partitions," msgstr "I ndhiadh na rann ar fad formáidiú," #: ../diskdrake.pm_.c:458 msgid "all data on these partitions will be lost" msgstr "caillfear gach sonra ar na ranna" #: ../diskdrake.pm_.c:468 msgid "Move" msgstr "Bog" #: ../diskdrake.pm_.c:469 msgid "Which disk do you want to move to?" msgstr "Cén diosca ag a dteastaíonn uait é a bhogadh?" #: ../diskdrake.pm_.c:473 msgid "Sector" msgstr "Teascán" #: ../diskdrake.pm_.c:474 msgid "Which sector do you want to move to?" msgstr "Cén tescán ag a dteastaíonn uait é a bhogadh?" #: ../diskdrake.pm_.c:477 msgid "Moving" msgstr "Ag bogadh" #: ../diskdrake.pm_.c:477 msgid "Moving partition..." msgstr "Ag bogadh rann..." #: ../diskdrake.pm_.c:487 #, c-format msgid "Partition table of drive %s is going to be written to disk!" msgstr "Scríobhfar clár diosca %s go dhiosca!" #: ../diskdrake.pm_.c:489 msgid "You'll need to reboot before the modification can take place" msgstr "Beidh ort an ríomhaire a aththosnú sula ndéanfar an athrú" #: ../diskdrake.pm_.c:510 ../install_steps_gtk.pm_.c:255 msgid "Computing fat filesystem bounds" msgstr "Ag ríomhadh teorainn na córais-comhadlanna FAT" #: ../diskdrake.pm_.c:510 ../diskdrake.pm_.c:555 #: ../install_steps_gtk.pm_.c:255 msgid "Resizing" msgstr "Ag athméadú" #: ../diskdrake.pm_.c:524 msgid "resizing" msgstr "ag athméadú" #: ../diskdrake.pm_.c:534 msgid "Choose the new size" msgstr "Roghnaigh an méid nua" #: ../diskdrake.pm_.c:534 ../install_steps_graphical.pm_.c:287 #: ../install_steps_graphical.pm_.c:334 ../install_steps_gtk.pm_.c:317 #: ../install_steps_gtk.pm_.c:361 msgid "MB" msgstr "MB" #: ../diskdrake.pm_.c:587 msgid "Create a new partition" msgstr "Cruthaigh rann nua" #: ../diskdrake.pm_.c:603 msgid "Start sector: " msgstr "Teascán tosasch: " #: ../diskdrake.pm_.c:606 msgid "Size in MB: " msgstr "Méid i MB: " #: ../diskdrake.pm_.c:609 msgid "Filesystem type: " msgstr "Cineál córas-comhadlanna" #: ../diskdrake.pm_.c:611 msgid "Preference: " msgstr "Tosaíocht: " #: ../diskdrake.pm_.c:655 ../diskdrake.pm_.c:671 msgid "Select file" msgstr "Roghnaigh Comhad" #: ../diskdrake.pm_.c:664 msgid "" "The backup partition table has not the same size\n" "Still continue?" msgstr "" "Níl an méid céanna ar an rann cúltaca\n" "Lean ar aghaidh ar aon nós?" #: ../diskdrake.pm_.c:672 msgid "Warning" msgstr "Rabhadh" #: ../diskdrake.pm_.c:673 msgid "" "Insert a floppy in drive\n" "All data on this floppy will be lost" msgstr "" "Cur diosca flapach sa dioscthiomant\n" "Caillfear gach sonra ar an dhiosca seo" #: ../diskdrake.pm_.c:687 msgid "Trying to rescue partition table" msgstr "Ag iarraidh an clár-ranna a tarrtháil" #: ../diskdrake.pm_.c:698 msgid "device" msgstr "gaireas" #: ../diskdrake.pm_.c:699 msgid "level" msgstr "leibhéal" #: ../diskdrake.pm_.c:700 msgid "chunk size" msgstr "méid smután" #: ../diskdrake.pm_.c:712 msgid "Choose an existing RAID to add to" msgstr "Roghnaigh RAID atá ann le méadú" #: ../diskdrake.pm_.c:713 msgid "new" msgstr "nua" #: ../fs.pm_.c:67 ../fs.pm_.c:73 #, c-format msgid "%s formatting of %s failed" msgstr "Formáidiú %s de %s teipithe" #: ../fs.pm_.c:93 #, c-format msgid "don't know how to format %s in type %s" msgstr "níl a fhios agam conas %s a formáidiú go %s" #: ../fs.pm_.c:106 msgid "nfs mount failed" msgstr "" #: ../fs.pm_.c:123 msgid "mount failed: " msgstr "" #: ../fs.pm_.c:134 #, c-format msgid "error unmounting %s: %s" msgstr "" #: ../fsedit.pm_.c:219 msgid "Mount points must begin with a leading /" msgstr "" #: ../fsedit.pm_.c:222 #, c-format msgid "There is already a partition with mount point %s" msgstr "" #: ../fsedit.pm_.c:306 #, c-format msgid "Error opening %s for writing: %s" msgstr "Earráid ag oscailt %s do scríobh: %s" #: ../fsedit.pm_.c:388 msgid "" "An error has occurred - no valid devices were found on which to create new " "filesystems. Please check your hardware for the cause of this problem" msgstr "" "Tharla earráid - ní fhuaireadh aon gaireas ar a bhféadfaí córais-comhadlanna " "nua a cruthu. Ba chóir duit do chuid crua-earraí a seiceáil le cúis an fadhb " "a aimsiú" #: ../fsedit.pm_.c:403 msgid "You don't have any partitions!" msgstr "Níl aon ranna agat!" #: ../help.pm_.c:7 msgid "Choose preferred language for install and system usage." msgstr "" #: ../help.pm_.c:10 msgid "Choose the layout corresponding to your keyboard from the list above" msgstr "" #: ../help.pm_.c:13 msgid "" "Choose \"Install\" if there are no previous versions of Linux\n" "installed, or if you wish to use multiple distributions or versions.\n" "\n" "\n" "Choose \"Upgrade\" if you wish to update a previous version of Mandrake\n" "Linux: 5.1 (Venice), 5.2 (Leloo), 5.3 (Festen), 6.0 (Venus), 6.1\n" "(Helios) or Gold 2000." msgstr "" #: ../help.pm_.c:22 msgid "" "Select:\n" "\n" " - Recommended: If you have never installed Linux before.\n" "\n" "\n" " - Customized: If you are familiar with Linux, you will be able to \n" "select the usage for the installed system between normal, development or\n" "server. Choose \"Normal\" for a general purpose installation of your\n" "computer. You may choose \"Development\" if you will be using the computer\n" "primarily for software development, or choose \"Server\" if you wish to\n" "install a general purpose server (for mail, printing...).\n" "\n" "\n" " - Expert: If you are fluent with GNU/Linux and want to perform\n" "a highly customized installation, this Install Class is for you. You will\n" "be able to select the usage of your installed system as for \"Customized\"." msgstr "" #: ../help.pm_.c:40 msgid "" "DrakX will attempt at first to look for one or more PCI\n" "SCSI adapter(s). If it finds it (or them) and knows which driver(s)\n" "to use, it will insert it (them) automatically.\n" "\n" "\n" "If your SCSI adapter is an ISA board, or is a PCI board but DrakX\n" "doesn't know which driver to use for this card, or if you have no\n" "SCSI adapters at all, you will then be prompted on whether you have\n" "one or not. If you have none, answer \"No\". If you have one or more,\n" "answer \"Yes\". A list of drivers will then pop up, from which you\n" "will have to select one.\n" "\n" "\n" "After you have selected the driver, DrakX will ask if you\n" "want to specify options for it. First, try and let the driver\n" "probe for the hardware: it usually works fine.\n" "\n" "\n" "If not, do not forget the information on your hardware that you\n" "could get from your documentation or from Windows (if you have it\n" "on your system), as suggested by the installation guide. These\n" "are the options you will need to provide to the driver." msgstr "" #: ../help.pm_.c:64 msgid "" "At this point, you may choose what partition(s) to use to install\n" "your Linux-Mandrake system if they have been already defined (from a\n" "previous install of Linux or from another partitionning tool). In other\n" "cases, hard drive partitions must be defined. This operation consists of\n" "logically dividing the computer's hard drive capacity into separate\n" "areas for use.\n" "\n" "\n" "If you have to create new partitions, use \"Auto allocate\" to " "automatically\n" "create partitions for Linux. You can select the disk for partitionning by\n" "clicking on \"hda\" for the first IDE drive,\n" "\"hdb\" for the second or \"sda\" for the first SCSI drive and so on.\n" "\n" "\n" "Two common partition are: the root partition (/), which is the starting\n" "point of the filesystem's directory hierarchy, and /boot, which contains\n" "all files necessary to start the operating system when the\n" "computer is first turned on.\n" "\n" "\n" "Because the effects of this process are usually irreversible, partitioning\n" "can be intimidating and stressful to the unexperienced user. DiskDrake\n" "simplifies the process so that it need not be. Consult the documentation\n" "and take your time before proceeding." msgstr "" #: ../help.pm_.c:90 msgid "" "Any partitions that have been newly defined must be formatted for\n" "use (formatting meaning creating a filesystem). At this time, you may\n" "wish to re-format some already existing partitions to erase the data\n" "they contain. Note: it is not necessary to re-format pre-existing\n" "partitions, particularly if they contain files or data you wish to keep.\n" "Typically retained are /home and /usr/local." msgstr "" #: ../help.pm_.c:98 msgid "" "You may now select the packages you wish to install.\n" "\n" "\n" "First you can select group of package to install or upgrade. After that\n" "you can select more packages according to the total size you wish to\n" "select.\n" "\n" "\n" "If you are in expert mode, you can select packages individually.\n" "Please note that some packages require the installation of others.\n" "These are referred to as package dependencies. The packages you select,\n" "and the packages they require will be automatically selected for\n" "install. It is impossible to install a package without installing all\n" "of its dependencies.\n" "\n" "\n" "Informations on specific package are available in the\n" "area titled \"Info\", located on the right of the list of\n" "packages." msgstr "" #: ../help.pm_.c:119 msgid "" "The packages selected are now being installed. This operation\n" "should take a few minutes unless you have chosen to upgrade an\n" "existing system, in that case it can take more time even before\n" "upgrade starts." msgstr "" #: ../help.pm_.c:125 msgid "" "If DrakX failed to find your mouse, or if you want to\n" "check what it has done, you will be presented the list of mice\n" "above.\n" "\n" "\n" "If you agree with DrakX' settings, just jump to the section\n" "you want by clicking on it in the menu on the left. Otherwise,\n" "choose a mouse type in the menu which you think is the closest\n" "match for your mouse.\n" "\n" "\n" "In case of a serial mouse, you will also have to tell DrakX\n" "which serial port it is connected to." msgstr "" #: ../help.pm_.c:140 msgid "" "Please select the correct port. For example, the COM1 port in MS Windows\n" "is named ttyS0 in Linux." msgstr "" #: ../help.pm_.c:144 msgid "" "This section is dedicated to configuring a local area\n" "network (LAN) or a modem.\n" "\n" "Choose \"Local LAN\" and DrakX will\n" "try to find an Ethernet adapter on your machine. PCI adapters\n" "should be found and initialized automatically.\n" "However, if your peripheral is ISA, autodetection will not work,\n" "and you will have to choose a driver from the list that will appear then.\n" "\n" "\n" "As for SCSI adapters, you can let the driver probe for the adapter\n" "in the first time, otherwise you will have to specify the options\n" "to the driver that you will have fetched from documentation of your\n" "hardware.\n" "\n" "\n" "If you install a Linux-Mandrake system on a machine which is part\n" "of an already existing network, the network administrator will\n" "have given you all necessary information (IP address, network\n" "submask or netmask for short, and hostname). If you're setting\n" "up a private network at home for example, you should choose\n" "addresses.\n" "\n" "\n" "Choose \"Dialup with modem\" and the Internet connection with\n" "a modem will be configured. DrakX will try to find your modem,\n" "if it fails you will have to select the right serial port where\n" "your modem is connected to." msgstr "" #: ../help.pm_.c:174 msgid "" "Enter:\n" "\n" " - IP address: if you don't know it, ask your network administrator or " "ISP.\n" "\n" "\n" " - Netmask: \"255.255.255.0\" is generally a good choice. If you are not\n" "sure, ask your network administrator or ISP.\n" "\n" "\n" " - Automatic IP: If your network uses bootp or dhcp protocol, select \n" "this option. If selected, no value is needed in \"IP address\". If you are\n" "not sure, ask your network administrator or ISP.\n" msgstr "" #: ../help.pm_.c:189 msgid "" "You may now enter dialup options. If you're not sure what to enter, the\n" "correct information can be obtained from your ISP." msgstr "" #: ../help.pm_.c:193 msgid "" "If you will use proxies, please configure them now. If you don't know if\n" "you will use proxies, ask your network administrator or your ISP." msgstr "" #: ../help.pm_.c:197 msgid "" "You can install cryptographic package if your internet connection has been\n" "set up correctly. First choose a mirror where you wish to download packages " "and\n" "after that select the packages to install.\n" "\n" "Note you have to select mirror and cryptographic packages according\n" "to your legislation." msgstr "" #: ../help.pm_.c:205 msgid "" "You can now select your timezone according to where you live.\n" "\n" "\n" "Linux manages time in GMT or \"Greenwich Meridian Time\" and translates it\n" "in local time according to the time zone you have selected." msgstr "" #: ../help.pm_.c:212 msgid "Help" msgstr "Cabhair" #: ../help.pm_.c:215 msgid "" "Linux can deal with many types of printer. Each of these\n" "types require a different setup.\n" "\n" "\n" "If your printer is directly connected to your computer, select\n" "\"Local printer\". You will then have to tell which port your\n" "printer is connected to, and select the appropriate filter.\n" "\n" "\n" "If you want to access a printer located on a remote Unix machine,\n" "you will have to select \"Remote lpd\". In order to make\n" "it work, no username or password is required, but you will need\n" "to know the name of the printing queue on this server.\n" "\n" "\n" "If you want to access a SMB printer (which means, a printer located\n" "on a remote Windows 9x/NT machine), you will have to specify its\n" "SMB name (which is not its TCP/IP name), and possibly its IP address,\n" "plus the username, workgroup and password required in order to\n" "access the printer, and of course the name of the printer. The same goes\n" "for a NetWare printer, except that you need no workgroup information." msgstr "" #: ../help.pm_.c:238 msgid "" "You can now enter the root password for your Linux-Mandrake\n" "system. The password must be entered twice to verify that both\n" "password entries are identical.\n" "\n" "\n" "Root is the administrator of the system, and is the only user\n" "allowed to modify the system configuration. Therefore, choose\n" "this password carefully! Unauthorized use of the root account can\n" "be extremely dangerous to the integrity of the system and its data,\n" "and other systems connected to it. The password should be a\n" "mixture of alphanumeric characters and a least 8 characters long. It\n" "should *never* be written down. Do not make the password too long or\n" "complicated, though: you must be able to remember without too much\n" "effort." msgstr "" #: ../help.pm_.c:254 msgid "" "To enable a more secure system, you should select \"Use shadow file\" and\n" "\"Use MD5 passwords\"." msgstr "" #: ../help.pm_.c:258 msgid "" "If your network uses NIS, select \"Use NIS\". If you don't know, ask your\n" "network administrator." msgstr "" #: ../help.pm_.c:262 msgid "" "You may now create one or more \"regular\" user account(s), as\n" "opposed to the \"privileged\" user account, root. You can create\n" "one or more account(s) for each person you want to allow to use\n" "the computer. Note that each user account will have its own\n" "preferences (graphical environment, program settings, etc.)\n" "and its own \"home directory\", in which these preferences are\n" "stored.\n" "\n" "\n" "First of all, create an account for yourself! Even if you will be the only " "user\n" "of the machine, you may NOT connect as root for daily use of the system: " "it's a\n" "very high security risk. Making the system unusable is very often a typo " "away.\n" "\n" "\n" "Therefore, you should connect to the system using the user account\n" "you will have created here, and login as root only for administration\n" "and maintenance purposes." msgstr "" #: ../help.pm_.c:281 msgid "" "It is strongly recommended that you answer \"Yes\" here. If you install\n" "Microsoft Windows at a later date it will overwrite the boot sector.\n" "Unless you have made a bootdisk as suggested, you will not be able to\n" "boot into Linux any more." msgstr "" #: ../help.pm_.c:287 msgid "" "You need to indicate where you wish\n" "to place the information required to boot to Linux.\n" "\n" "\n" "Unless you know exactly what you are doing, choose \"First sector of\n" "drive (MBR)\"." msgstr "" #: ../help.pm_.c:295 msgid "" "Unless you know specifically otherwise, the usual choice is \"/dev/hda\"\n" "(the master drive on the primary channel)." msgstr "" #: ../help.pm_.c:299 msgid "" "LILO (the LInux LOader) can boot Linux and other operating systems.\n" "Normally they are correctly detected during installation. If you don't\n" "see yours detected, you can add one or more now.\n" "\n" "\n" "If you don't want that everybody could access at one of them, you can " "remove\n" "it now (a boot disk will be needed to boot it)." msgstr "" #: ../help.pm_.c:308 msgid "" "LILO main options are:\n" " - Boot device: Sets the name of the device (e.g. a hard disk\n" "partition) that contains the boot sector. Unless you know specifically\n" "otherwise, choose \"/dev/hda\".\n" "\n" "\n" " - Linear: Generate linear sector addresses instead of\n" "sector/head/cylinder addresses. Linear addresses are translated at run\n" "time and do not depend on disk geometry. Note that boot disks may not be\n" "portable if \"linear\" is used, because the BIOS service to determine the\n" "disk geometry does not work reliably for floppy disks. When using\n" "\"linear\" with large disks, /sbin/lilo may generate references to\n" "inaccessible disk areas, because 3D sector addresses are not known\n" "before boot time.\n" "\n" "\n" " - Compact: Tries to merge read requests for adjacent sectors into a\n" "single read request. This drastically reduces load time and keeps the\n" "map smaller. Using \"compact\" is especially recommended when booting from\n" "a floppy disk.\n" "\n" "\n" " - Delay before booting default image: Specifies the number in tenths\n" "of a second the boot loader should wait before booting the first image.\n" "This is useful on systems that immediately boot from the hard disk after\n" "enabling the keyboard. The boot loader doesn't wait if \"delay\" is\n" "omitted or is set to zero.\n" "\n" "\n" " - Video mode: This specifies the VGA text mode that should be selected\n" "when booting. The following values are available: \n" " * normal: select normal 80x25 text mode.\n" " * : use the corresponding text mode." msgstr "" #: ../help.pm_.c:343 msgid "" "Now it's time to configure the X Window System, which is the\n" "core of the Linux GUI (Graphical User Interface). For this purpose,\n" "you must configure your video card and monitor. Most of these\n" "steps are automated, though, therefore your work may only consist\n" "of verifying what has been done and accept the settings :)\n" "\n" "\n" "When the configuration is over, X will be started (unless you\n" "ask DrakX not to) so that you can check and see if the\n" "settings suit you. If they don't, you can come back and\n" "change them, as many times as necessary." msgstr "" #: ../help.pm_.c:356 msgid "" "If something is wrong in X configuration, use these options to correctly\n" "configure the X Window System." msgstr "" #: ../help.pm_.c:360 msgid "" "If you prefer to use a graphical login, select \"Yes\". Otherwise, select\n" "\"No\"." msgstr "" #: ../help.pm_.c:364 msgid "" "You can now select some miscellaneous options for you system.\n" "\n" " - Use hard drive optimizations: This option can improve hard disk\n" "accesses but is only for advanced users, it can ruin your hard drive if\n" "used incorrectly. Use it only if you know how.\n" "\n" "\n" " - Choose security level: You can choose a security level for your\n" "system.\n" " Please refer to the manual for more information.\n" "\n" "\n" " - Precise RAM size if needed: In some cases, Linux is unable to\n" "correctly detect all the installed RAM on some systems. If this is the\n" "case, specify the correct quantity. Note: a difference of 2 or 4 Mb is\n" "normal.\n" "\n" "\n" " - Removable media automounting: If you would prefer not to manually\n" "mount removable drives (CD-ROM, Floppy, Zip) by typing \"mount\" and\n" "\"umount\", select this option. \n" "\n" "\n" " - Enable Num Lock at startup: If you want Number Lock enabled after\n" "booting, select this option (Note: Num Lock will still not work under\n" "X)." msgstr "" #: ../help.pm_.c:392 msgid "" "Your system is going to reboot.\n" "\n" "After rebooting, your new Linux Mandrake system will load automatically.\n" "If you want to boot into another existing operating system, please read\n" "the additional instructions." msgstr "" #: ../install2.pm_.c:43 msgid "Choose your language" msgstr "Roghnaigh do theanga" #: ../install2.pm_.c:44 msgid "Select installation class" msgstr "Roghnaigh rang feistiú" #: ../install2.pm_.c:45 msgid "Setup SCSI" msgstr "Cumraigh SCSI" #: ../install2.pm_.c:46 msgid "Choose install or upgrade" msgstr "Feistigh nó uasgrádaigh ?" #: ../install2.pm_.c:47 msgid "Configure mouse" msgstr "Cumraigh luchóg" #: ../install2.pm_.c:48 msgid "Choose your keyboard" msgstr "Roghnaigh mhéarchlár" #: ../install2.pm_.c:49 msgid "Miscellaneous" msgstr "Eile" #: ../install2.pm_.c:50 msgid "Setup filesystems" msgstr "Socraigh córas chomhad" #: ../install2.pm_.c:51 msgid "Format partitions" msgstr "Formáidigh ranna" #: ../install2.pm_.c:52 msgid "Choose packages to install" msgstr "Roghnaigh pacáistí ..." #: ../install2.pm_.c:53 msgid "Install system" msgstr "Feistigh córas" #: ../install2.pm_.c:54 msgid "Configure networking" msgstr "Cumraigh gréasánú" #: ../install2.pm_.c:55 msgid "Cryptographic" msgstr "Rúnscríobhach" #: ../install2.pm_.c:56 msgid "Configure timezone" msgstr "Cumraigh crios ama" #: ../install2.pm_.c:58 msgid "Configure printer" msgstr "Cumraigh printéir" #: ../install2.pm_.c:59 ../install_steps_interactive.pm_.c:570 #: ../install_steps_interactive.pm_.c:571 msgid "Set root password" msgstr "Socraigh pasfhocal root" #: ../install2.pm_.c:60 msgid "Add a user" msgstr "Úsáideoir Nua ..." #: ../install2.pm_.c:61 msgid "Create a bootdisk" msgstr "" #: ../install2.pm_.c:62 #, fuzzy msgid "Install bootloader" msgstr "Feistigh córas" #: ../install2.pm_.c:63 msgid "Configure X" msgstr "Cumraigh X" #: ../install2.pm_.c:64 msgid "Exit install" msgstr "Eirigh as Feistiú" #: ../install2.pm_.c:83 msgid "beginner" msgstr "tosaitheoir" #: ../install2.pm_.c:83 msgid "developer" msgstr "foirbreoir" #: ../install2.pm_.c:83 msgid "expert" msgstr "saineolaí" #: ../install2.pm_.c:83 msgid "server" msgstr "freastalaí" #: ../install2.pm_.c:309 msgid "" "You must have a root partition.\n" "For this, create a partition (or click on an existing one).\n" "Then choose action ``Mount point'' and set it to `/'" msgstr "" #: ../install2.pm_.c:325 msgid "Not enough swap to fulfill installation, please add some" msgstr "Nil dothain spas malartu chun insealbhu, chuir leis an spas" #: ../install_any.pm_.c:192 ../standalone/diskdrake_.c:61 msgid "" "I can't read your partition table, it's too corrupted for me :(\n" "I'll try to go on blanking bad partitions" msgstr "" "Ni féidir liom an tábla rainn a léamh, tá máchaillí ann :(\n" "Leanfaidh mé orm ag cealú droch rainn" #: ../install_any.pm_.c:208 msgid "" "DiskDrake failed to read correctly the partition table.\n" "Continue at your own risk!" msgstr "" "Theip ar DiskDrake an tabla rainn a léamh i gceart.\n" "Lean ort, ar do phriacal féin!" #: ../install_any.pm_.c:218 msgid "Searching root partition." msgstr "Ag cúrdach an rann fréamhach." #: ../install_any.pm_.c:247 msgid "Information" msgstr "Eolas" #: ../install_any.pm_.c:248 #, c-format msgid "%s: This is not a root partition, please select another one." msgstr "%s: Ní rann fréamhach atá anseo, roghnaigh ceann eile." #: ../install_any.pm_.c:250 msgid "No root partition found" msgstr "Ní fuaireathas rann fréamhach" #: ../install_any.pm_.c:287 msgid "Can't use broadcast with no NIS domain" msgstr "Ni feidir craoladh gan fearann NIS" #: ../install_any.pm_.c:462 msgid "Error reading file $f" msgstr "Earráid ag léamh comhad $f" #: ../install_any.pm_.c:468 #, c-format msgid "Bad kickstart file %s (failed %s)" msgstr "Droch comhad kickstart %s (theip %s)" #: ../install_steps.pm_.c:68 msgid "" "An error occurred, but I don't know how to handle it nicely.\n" "Continue at your own risk." msgstr "" "Ta earraid ann, níl a fhios agam conas é a cheartú.\n" "Lean ort, ar do phriacal féin." #: ../install_steps.pm_.c:132 #, c-format msgid "Duplicate mount point %s" msgstr "Pointe taca dublach %s" #: ../install_steps.pm_.c:516 msgid "No floppy drive available" msgstr "Níl dioscthiománt flapach ar fáil" #: ../install_steps_auto_install.pm_.c:18 ../install_steps_stdio.pm_.c:26 #, c-format msgid "Entering step `%s'\n" msgstr "Ag tosnú ar céim `%s'\n" #: ../install_steps_graphical.pm_.c:259 ../install_steps_gtk.pm_.c:294 msgid "You must have a swap partition" msgstr "" #: ../install_steps_graphical.pm_.c:261 ../install_steps_gtk.pm_.c:296 msgid "" "You don't have a swap partition\n" "\n" "Continue anyway?" msgstr "" #: ../install_steps_graphical.pm_.c:287 ../install_steps_gtk.pm_.c:317 msgid "Choose the size you want to install" msgstr "" #: ../install_steps_graphical.pm_.c:334 ../install_steps_gtk.pm_.c:361 msgid "Total size: " msgstr "Méid iomlán: " #: ../install_steps_graphical.pm_.c:346 ../install_steps_gtk.pm_.c:373 #: ../standalone/rpmdrake_.c:136 #, c-format msgid "Version: %s\n" msgstr "Leagan: %s\n" #: ../install_steps_graphical.pm_.c:347 ../install_steps_gtk.pm_.c:374 #: ../standalone/rpmdrake_.c:137 #, c-format msgid "Size: %d KB\n" msgstr "Méid: %d KB\n" #: ../install_steps_graphical.pm_.c:462 ../install_steps_gtk.pm_.c:489 msgid "Choose the packages you want to install" msgstr "" #: ../install_steps_graphical.pm_.c:465 ../install_steps_gtk.pm_.c:492 msgid "Info" msgstr "Eolas" #: ../install_steps_graphical.pm_.c:473 ../install_steps_gtk.pm_.c:500 #: ../install_steps_interactive.pm_.c:81 ../standalone/rpmdrake_.c:161 msgid "Install" msgstr "" #: ../install_steps_graphical.pm_.c:492 ../install_steps_gtk.pm_.c:519 #: ../install_steps_interactive.pm_.c:312 msgid "Installing" msgstr "" #: ../install_steps_graphical.pm_.c:499 ../install_steps_gtk.pm_.c:526 msgid "Please wait, " msgstr "Fan tamall, " #: ../install_steps_graphical.pm_.c:501 ../install_steps_gtk.pm_.c:528 msgid "Time remaining " msgstr "Am fagtha " #: ../install_steps_graphical.pm_.c:502 ../install_steps_gtk.pm_.c:529 msgid "Total time " msgstr "Am iomlán " #: ../install_steps_graphical.pm_.c:507 ../install_steps_gtk.pm_.c:534 #: ../install_steps_interactive.pm_.c:312 msgid "Preparing installation" msgstr "" #: ../install_steps_graphical.pm_.c:528 ../install_steps_gtk.pm_.c:549 #, c-format msgid "Installing package %s" msgstr "" #: ../install_steps_graphical.pm_.c:553 ../install_steps_gtk.pm_.c:574 msgid "Go on anyway?" msgstr "Lean ar aghaidh ar aon nós?" #: ../install_steps_graphical.pm_.c:553 ../install_steps_gtk.pm_.c:574 msgid "There was an error ordering packages:" msgstr "" #: ../install_steps_graphical.pm_.c:577 ../install_steps_interactive.pm_.c:887 msgid "Use existing configuration for X11?" msgstr "Bain úsáid as an cumraíocht X11 atá ann?" #: ../install_steps_gtk.pm_.c:259 msgid "" "WARNING!\n" "\n" "DrakX now needs to resize your Windows partition. Be careful: this operation " "is\n" "dangerous. If you have not already done so, you should first exit the\n" "installation, run scandisk under Windows (and optionally run defrag), then\n" "restart the installation. You should also backup your data.\n" "When sure, press Ok." msgstr "" #: ../install_steps_gtk.pm_.c:278 msgid "Automatic resizing failed" msgstr "Theip ar uathathmhéadú" #: ../install_steps_gtk.pm_.c:312 msgid "" "Now that you've selected desired groups, please choose \n" "how many packages you want, ranging from minimal to full \n" "installation of each selected groups." msgstr "" #: ../install_steps_gtk.pm_.c:315 msgid "You will be able to choose more precisely in next step" msgstr "" #: ../install_steps_gtk.pm_.c:372 #, fuzzy msgid "Bad package" msgstr "%d pacáistí" #: ../install_steps_gtk.pm_.c:522 msgid "Estimating" msgstr "Ag meastú" #: ../install_steps_gtk.pm_.c:544 #, c-format msgid "%d packages" msgstr "%d pacáistí" #: ../install_steps_gtk.pm_.c:544 msgid ", %U MB" msgstr ", %U MB" #: ../install_steps_interactive.pm_.c:37 msgid "An error occurred" msgstr "Tharla earráid" #: ../install_steps_interactive.pm_.c:54 msgid "Which language do you want?" msgstr "Cén teanga atá uait?" #: ../install_steps_interactive.pm_.c:68 ../standalone/keyboarddrake_.c:22 msgid "Keyboard" msgstr "Eocharclár" #: ../install_steps_interactive.pm_.c:69 ../standalone/keyboarddrake_.c:23 msgid "What is your keyboard layout?" msgstr "Cén leagan amach atá ar d'eocharchlársa" #: ../install_steps_interactive.pm_.c:79 msgid "Install/Upgrade" msgstr "" #: ../install_steps_interactive.pm_.c:80 msgid "Is this an install or an upgrade?" msgstr "" #: ../install_steps_interactive.pm_.c:81 msgid "Upgrade" msgstr "Uasgrádú" #: ../install_steps_interactive.pm_.c:89 msgid "Root Partition" msgstr "Rann Fréamhach" #: ../install_steps_interactive.pm_.c:90 msgid "What is the root partition (/) of your system?" msgstr "Céard é an rann fréamhach (/) ded' chóras?" #: ../install_steps_interactive.pm_.c:100 msgid "Recommended" msgstr "Molta" #: ../install_steps_interactive.pm_.c:101 msgid "Customized" msgstr "Socraithe" #: ../install_steps_interactive.pm_.c:102 msgid "Expert" msgstr "Saineolaí" #: ../install_steps_interactive.pm_.c:104 #: ../install_steps_interactive.pm_.c:118 msgid "Install Class" msgstr "" #: ../install_steps_interactive.pm_.c:105 msgid "What installation class do you want?" msgstr "" #: ../install_steps_interactive.pm_.c:114 msgid "Normal" msgstr "Gnáth" #: ../install_steps_interactive.pm_.c:115 msgid "Development" msgstr "Forbairt" #: ../install_steps_interactive.pm_.c:116 msgid "Server" msgstr "Freastalaí" #: ../install_steps_interactive.pm_.c:119 msgid "What usage do you want?" msgstr "Cén úsáid atá uait?" #: ../install_steps_interactive.pm_.c:132 ../standalone/mousedrake_.c:25 msgid "What is the type of your mouse?" msgstr "Cén cinéal luchóg atá agat?" #: ../install_steps_interactive.pm_.c:140 ../standalone/mousedrake_.c:38 msgid "Mouse Port" msgstr "Gaireas luchóige" #: ../install_steps_interactive.pm_.c:141 ../standalone/mousedrake_.c:39 msgid "Which serial port is your mouse connected to?" msgstr "" #: ../install_steps_interactive.pm_.c:157 msgid "no available partitions" msgstr "níl aon ranna saora ann" #: ../install_steps_interactive.pm_.c:159 #, c-format msgid "(%dMb)" msgstr "(%dMb)" #: ../install_steps_interactive.pm_.c:166 msgid "Which partition do you want to use as your root partition" msgstr "Cén rann a bhfuil tú ag iarraidh úsáid mar rann fréamhach" #: ../install_steps_interactive.pm_.c:173 msgid "Choose the mount points" msgstr "" #: ../install_steps_interactive.pm_.c:185 msgid "You need to reboot for the partition table modifications to take place" msgstr "" #: ../install_steps_interactive.pm_.c:207 msgid "Choose the partitions you want to format" msgstr "Roghnaigh na ranna atá le formáidiú" #: ../install_steps_interactive.pm_.c:211 msgid "Check bad blocks?" msgstr "" #: ../install_steps_interactive.pm_.c:230 msgid "Looking for available packages" msgstr "Ag curdach do na pacáistí atá ar fáil" #: ../install_steps_interactive.pm_.c:236 msgid "Finding packages to upgrade" msgstr "Ag cúrdach pacáistí le húasgrádú" #: ../install_steps_interactive.pm_.c:282 msgid "Package Group Selection" msgstr "Roghnú Grúpa Pacáistí" #: ../install_steps_interactive.pm_.c:321 msgid "" "Installing package %s\n" "%d%%" msgstr "" #: ../install_steps_interactive.pm_.c:330 #, fuzzy msgid "Post install configuration" msgstr "Trialaigh an cumraíocht" #: ../install_steps_interactive.pm_.c:341 msgid "Keep the current IP configuration" msgstr "Coimead an cumraíocht IP atá ann" #: ../install_steps_interactive.pm_.c:342 msgid "Reconfigure network now" msgstr "Athchumraigh an gréasánú anois" #: ../install_steps_interactive.pm_.c:343 #: ../install_steps_interactive.pm_.c:355 msgid "Do not set up networking" msgstr "Ná cumraigh gréasánú anois" #: ../install_steps_interactive.pm_.c:345 #: ../install_steps_interactive.pm_.c:353 msgid "Network Configuration" msgstr "Cumraíocht Gréasánú" #: ../install_steps_interactive.pm_.c:346 msgid "Local networking has already been configured. Do you want to:" msgstr "Tá gréasánú lóganta cumraithe cheana féin. An dteastaíonn uait:" #: ../install_steps_interactive.pm_.c:354 msgid "Do you want to configure networking for your system?" msgstr "An dteastaíonn uait gréasánú a chumrú ded' chóras?" #: ../install_steps_interactive.pm_.c:355 msgid "Dialup with modem" msgstr "" #: ../install_steps_interactive.pm_.c:355 msgid "Local LAN" msgstr "Gréasán Lógánta" #: ../install_steps_interactive.pm_.c:364 msgid "no network card found" msgstr "ní fuaireathas cárta gréasánú" #: ../install_steps_interactive.pm_.c:394 #: ../install_steps_interactive.pm_.c:395 #, c-format msgid "Configuring network device %s" msgstr "Ag cumrú gléas gréasánú %s" #: ../install_steps_interactive.pm_.c:396 msgid "" "Please enter the IP configuration for this machine.\n" "Each item should be entered as an IP address in dotted-decimal\n" "notation (for example, 1.2.3.4)." msgstr "" #: ../install_steps_interactive.pm_.c:399 msgid "Automatic IP" msgstr "Uath-IP" #: ../install_steps_interactive.pm_.c:399 msgid "IP address:" msgstr "Seoladh IP:" #: ../install_steps_interactive.pm_.c:399 msgid "Netmask:" msgstr "" #: ../install_steps_interactive.pm_.c:400 msgid "(bootp/dhcp)" msgstr "" #: ../install_steps_interactive.pm_.c:406 ../printerdrake.pm_.c:149 msgid "IP address should be in format 1.2.3.4" msgstr "" #: ../install_steps_interactive.pm_.c:424 msgid "Configuring network" msgstr "Ag cumrú an ghréasán" #: ../install_steps_interactive.pm_.c:425 msgid "" "Please enter your host name.\n" "Your host name should be a fully-qualified host name,\n" "such as ``mybox.mylab.myco.com''.\n" "You may also enter the IP address of the gateway if you have one" msgstr "" #: ../install_steps_interactive.pm_.c:429 msgid "DNS server:" msgstr "" #: ../install_steps_interactive.pm_.c:429 msgid "Gateway device:" msgstr "" #: ../install_steps_interactive.pm_.c:429 msgid "Gateway:" msgstr "" #: ../install_steps_interactive.pm_.c:429 msgid "Host name:" msgstr "" #: ../install_steps_interactive.pm_.c:442 msgid "Try to find a modem?" msgstr "Déan iarracht móideam a aimsiú?" #: ../install_steps_interactive.pm_.c:452 msgid "Which serial port is your modem connected to?" msgstr "" #: ../install_steps_interactive.pm_.c:457 msgid "Dialup options" msgstr "" #: ../install_steps_interactive.pm_.c:458 msgid "Connection name" msgstr "" #: ../install_steps_interactive.pm_.c:459 msgid "Phone number" msgstr "Uimhir fón" #: ../install_steps_interactive.pm_.c:460 msgid "Login ID" msgstr "" #: ../install_steps_interactive.pm_.c:461 #: ../install_steps_interactive.pm_.c:572 #: ../install_steps_interactive.pm_.c:618 #: ../install_steps_interactive.pm_.c:718 ../standalone/adduserdrake_.c:40 msgid "Password" msgstr "Pasfhocal" #: ../install_steps_interactive.pm_.c:462 msgid "Authentication" msgstr "" #: ../install_steps_interactive.pm_.c:462 msgid "CHAP" msgstr "CHAP" #: ../install_steps_interactive.pm_.c:462 msgid "PAP" msgstr "PAP" #: ../install_steps_interactive.pm_.c:462 msgid "Script-based" msgstr "Script-bhunaithe" #: ../install_steps_interactive.pm_.c:462 msgid "Terminal-based" msgstr "" #: ../install_steps_interactive.pm_.c:463 msgid "Domain name" msgstr "" #: ../install_steps_interactive.pm_.c:464 msgid "First DNS Server" msgstr "" #: ../install_steps_interactive.pm_.c:465 msgid "Second DNS Server" msgstr "" #: ../install_steps_interactive.pm_.c:478 msgid "Bringing up the network" msgstr "" #: ../install_steps_interactive.pm_.c:487 msgid "" "You have now the possibility to download software aimed for encryption.\n" "\n" "WARNING:\n" "\n" "Due to different general requirements applicable to these software and " "imposed\n" "by various jurisdictions, customer and/or end user of theses software " "should\n" "ensure that the laws of his/their jurisdiction allow him/them to download, " "stock\n" "and/or use these software.\n" "\n" "In addition customer and/or end user shall particularly be aware to not " "infringe\n" "the laws of his/their jurisdiction. Should customer and/or end user do not\n" "respect the provision of these applicable laws, he/they will incur serious\n" "sanctions.\n" "\n" "In no event shall Mandrakesoft nor its manufacturers and/or suppliers be " "liable\n" "for special, indirect or incidental damages whatsoever (including, but not\n" "limited to loss of profits, business interruption, loss of commercial data " "and\n" "other pecuniary losses, and eventual liabilities and indemnification to be " "paid\n" "pursuant to a court decision) arising out of use, possession, or the sole\n" "downloading of these software, to which customer and/or end user could\n" "eventually have access after having sign up the present agreement.\n" "\n" "For any queries relating to these agreement, please contact \n" "Mandrakesoft, Inc.\n" "2400 N. Lincoln Avenue Suite 243\n" "Altadena California 91001\n" "USA" msgstr "" #: ../install_steps_interactive.pm_.c:517 msgid "Choose a mirror from which to get the packages" msgstr "" #: ../install_steps_interactive.pm_.c:522 msgid "Contacting the mirror to get the list of available packages" msgstr "" #: ../install_steps_interactive.pm_.c:526 msgid "Which packages do you want to install" msgstr "" #: ../install_steps_interactive.pm_.c:528 msgid "Downloading cryptographic packages" msgstr "Ag thíoslódáil pacáistí rúneolaíochta" #: ../install_steps_interactive.pm_.c:538 msgid "Which is your timezone?" msgstr "Cén ceann do chrois ama" #: ../install_steps_interactive.pm_.c:539 msgid "Is your hardware clock set to GMT?" msgstr "An bhfuil an clog cruaearrach ar GMT?" #: ../install_steps_interactive.pm_.c:549 msgid "Printer" msgstr "Printéir" #: ../install_steps_interactive.pm_.c:550 msgid "Would you like to configure a printer?" msgstr "An dteastaìonn uait printéir a chumrú?" #: ../install_steps_interactive.pm_.c:570 msgid "No password" msgstr "Gan pasfhocal" #: ../install_steps_interactive.pm_.c:570 #: ../install_steps_interactive.pm_.c:792 ../interactive.pm_.c:74 #: ../interactive.pm_.c:84 ../interactive.pm_.c:163 #: ../interactive_newt.pm_.c:50 ../interactive_newt.pm_.c:94 #: ../interactive_stdio.pm_.c:27 ../my_gtk.pm_.c:192 ../my_gtk.pm_.c:425 #: ../my_gtk.pm_.c:525 msgid "Ok" msgstr "Ok" #: ../install_steps_interactive.pm_.c:573 #: ../install_steps_interactive.pm_.c:619 #: ../install_steps_interactive.pm_.c:719 ../standalone/adduserdrake_.c:41 msgid "Password (again)" msgstr "Pasfhocal (arís)" #: ../install_steps_interactive.pm_.c:575 msgid "Use shadow file" msgstr "Bain úsáid as scáilcomhad" #: ../install_steps_interactive.pm_.c:575 msgid "shadow" msgstr "scáil" #: ../install_steps_interactive.pm_.c:576 msgid "MD5" msgstr "MD5" #: ../install_steps_interactive.pm_.c:576 msgid "Use MD5 passwords" msgstr "Bain úsáid as pasfhocail MD5" #: ../install_steps_interactive.pm_.c:578 msgid "Use NIS" msgstr "Bain úsáid as NIS" #: ../install_steps_interactive.pm_.c:578 msgid "yellow pages" msgstr "leathanaigh buí" #: ../install_steps_interactive.pm_.c:582 #: ../install_steps_interactive.pm_.c:630 #: ../install_steps_interactive.pm_.c:730 ../standalone/adduserdrake_.c:52 msgid "Please try again" msgstr "Aththrialaigh" #: ../install_steps_interactive.pm_.c:582 #: ../install_steps_interactive.pm_.c:630 #: ../install_steps_interactive.pm_.c:730 ../standalone/adduserdrake_.c:52 msgid "The passwords do not match" msgstr "Ní mar a chéile na pasfhocail" #: ../install_steps_interactive.pm_.c:584 #, c-format msgid "This password is too simple (must be at least %d characters long)" msgstr "" #: ../install_steps_interactive.pm_.c:591 msgid "Authentification NIS" msgstr "" #: ../install_steps_interactive.pm_.c:592 msgid "NIS Domain" msgstr "" #: ../install_steps_interactive.pm_.c:592 msgid "NIS Server" msgstr "" #: ../install_steps_interactive.pm_.c:612 ../standalone/adduserdrake_.c:34 msgid "Accept user" msgstr "" #: ../install_steps_interactive.pm_.c:612 ../standalone/adduserdrake_.c:34 msgid "Add user" msgstr "" #: ../install_steps_interactive.pm_.c:613 ../standalone/adduserdrake_.c:35 #, c-format msgid "(already added %s)" msgstr "" #: ../install_steps_interactive.pm_.c:613 ../standalone/adduserdrake_.c:35 #, c-format msgid "" "Enter a user\n" "%s" msgstr "" #: ../install_steps_interactive.pm_.c:615 ../standalone/adduserdrake_.c:37 msgid "Real name" msgstr "Fíor ainm" #: ../install_steps_interactive.pm_.c:616 ../standalone/adduserdrake_.c:38 msgid "User name" msgstr "Ainm úsáideora" #: ../install_steps_interactive.pm_.c:621 ../standalone/adduserdrake_.c:43 msgid "Shell" msgstr "" #: ../install_steps_interactive.pm_.c:631 ../standalone/adduserdrake_.c:53 msgid "This password is too simple" msgstr "Tá an pasfhocal seo ro-shimplí" #: ../install_steps_interactive.pm_.c:632 ../standalone/adduserdrake_.c:54 msgid "Please give a user name" msgstr "" #: ../install_steps_interactive.pm_.c:633 ../standalone/adduserdrake_.c:55 msgid "" "The user name must contain only lower cased letters, numbers, `-' and `_'" msgstr "" #: ../install_steps_interactive.pm_.c:634 ../standalone/adduserdrake_.c:56 msgid "This user name is already added" msgstr "Is ann cheana don ainm úsáideora seo" #: ../install_steps_interactive.pm_.c:653 msgid "First drive" msgstr "" #: ../install_steps_interactive.pm_.c:654 msgid "Second drive" msgstr "" #: ../install_steps_interactive.pm_.c:655 msgid "Skip" msgstr "" #: ../install_steps_interactive.pm_.c:660 msgid "" "A custom bootdisk provides a way of booting into your Linux system without\n" "depending on the normal bootloader. This is useful if you don't want to " "install\n" "LILO on your system, or another operating system removes LILO, or LILO " "doesn't\n" "work with your hardware configuration. A custom bootdisk can also be used " "with\n" "the Mandrake rescue image, making it much easier to recover from severe " "system\n" "failures. Would you like to create a bootdisk for your system?" msgstr "" #: ../install_steps_interactive.pm_.c:669 msgid "Sorry, no floppy drive available" msgstr "Brón orm, níl aon dioscthiománt flapach ar fáil" #: ../install_steps_interactive.pm_.c:672 msgid "Choose the floppy drive you want to use to make the bootdisk" msgstr "" #: ../install_steps_interactive.pm_.c:677 #, c-format msgid "Insert a floppy in drive %s" msgstr "Cur isteach diosca sa dioscthiomant %s" #: ../install_steps_interactive.pm_.c:678 #: ../install_steps_interactive.pm_.c:1036 msgid "Creating bootdisk" msgstr "" #: ../install_steps_interactive.pm_.c:685 msgid "Preparing bootloader" msgstr "" #: ../install_steps_interactive.pm_.c:697 msgid "First sector of boot partition" msgstr "" #: ../install_steps_interactive.pm_.c:697 msgid "First sector of drive (MBR)" msgstr "" #: ../install_steps_interactive.pm_.c:702 msgid "LILO Installation" msgstr "" #: ../install_steps_interactive.pm_.c:703 msgid "Where do you want to install the bootloader?" msgstr "" #: ../install_steps_interactive.pm_.c:709 msgid "Do you want to use LILO?" msgstr "" #: ../install_steps_interactive.pm_.c:712 msgid "Boot device" msgstr "" #: ../install_steps_interactive.pm_.c:713 msgid "Linear (needed for some SCSI drives)" msgstr "" #: ../install_steps_interactive.pm_.c:713 msgid "linear" msgstr "" #: ../install_steps_interactive.pm_.c:714 msgid "Compact" msgstr "" #: ../install_steps_interactive.pm_.c:714 msgid "compact" msgstr "" #: ../install_steps_interactive.pm_.c:715 msgid "Delay before booting default image" msgstr "" #: ../install_steps_interactive.pm_.c:716 msgid "Video mode" msgstr "" #: ../install_steps_interactive.pm_.c:720 msgid "Restrict command line options" msgstr "" #: ../install_steps_interactive.pm_.c:720 msgid "restrict" msgstr "" #: ../install_steps_interactive.pm_.c:726 msgid "LILO main options" msgstr "" #: ../install_steps_interactive.pm_.c:729 msgid "" "Option ``Restrict command line options'' is of no use without a password" msgstr "" #: ../install_steps_interactive.pm_.c:740 msgid "" "Here are the following entries in LILO.\n" "You can add some more or change the existing ones." msgstr "" #: ../install_steps_interactive.pm_.c:742 ../standalone/rpmdrake_.c:302 msgid "Add" msgstr "" #: ../install_steps_interactive.pm_.c:751 msgid "Linux" msgstr "Linux" #: ../install_steps_interactive.pm_.c:751 msgid "Other OS (windows...)" msgstr "CO Eile (windows...)" #: ../install_steps_interactive.pm_.c:751 msgid "Which type of entry do you want to add" msgstr "" #: ../install_steps_interactive.pm_.c:771 msgid "Image" msgstr "" #: ../install_steps_interactive.pm_.c:772 #: ../install_steps_interactive.pm_.c:780 msgid "Root" msgstr "" #: ../install_steps_interactive.pm_.c:773 msgid "Append" msgstr "" #: ../install_steps_interactive.pm_.c:774 msgid "Initrd" msgstr "" #: ../install_steps_interactive.pm_.c:775 msgid "Read-write" msgstr "" #: ../install_steps_interactive.pm_.c:781 msgid "Table" msgstr "" #: ../install_steps_interactive.pm_.c:782 msgid "Unsafe" msgstr "" #: ../install_steps_interactive.pm_.c:787 msgid "Label" msgstr "" #: ../install_steps_interactive.pm_.c:789 msgid "Default" msgstr "" #: ../install_steps_interactive.pm_.c:792 msgid "Remove entry" msgstr "" #: ../install_steps_interactive.pm_.c:795 msgid "Empty label not allowed" msgstr "" #: ../install_steps_interactive.pm_.c:796 msgid "This label is already in use" msgstr "" #: ../install_steps_interactive.pm_.c:797 #, c-format msgid "A entry %s already exists" msgstr "" #: ../install_steps_interactive.pm_.c:811 msgid "Installation of LILO failed. The following error occured:" msgstr "" #: ../install_steps_interactive.pm_.c:825 msgid "Proxies configuration" msgstr "" #: ../install_steps_interactive.pm_.c:826 msgid "HTTP proxy" msgstr "" #: ../install_steps_interactive.pm_.c:827 msgid "FTP proxy" msgstr "" #: ../install_steps_interactive.pm_.c:833 msgid "Proxy should be http://..." msgstr "" #: ../install_steps_interactive.pm_.c:834 msgid "Proxy should be ftp://..." msgstr "" #: ../install_steps_interactive.pm_.c:844 ../standalone/draksec_.c:20 msgid "Welcome To Crackers" msgstr "" #: ../install_steps_interactive.pm_.c:845 ../standalone/draksec_.c:21 msgid "Poor" msgstr "" #: ../install_steps_interactive.pm_.c:846 ../standalone/draksec_.c:22 msgid "Low" msgstr "" #: ../install_steps_interactive.pm_.c:847 ../standalone/draksec_.c:23 msgid "Medium" msgstr "" #: ../install_steps_interactive.pm_.c:848 ../standalone/draksec_.c:24 msgid "High" msgstr "" #: ../install_steps_interactive.pm_.c:849 ../standalone/draksec_.c:25 msgid "Paranoid" msgstr "" #: ../install_steps_interactive.pm_.c:862 msgid "Miscellaneous questions" msgstr "Ceisteanna eile" #: ../install_steps_interactive.pm_.c:863 msgid "(may cause data corruption)" msgstr "" #: ../install_steps_interactive.pm_.c:863 msgid "Use hard drive optimisations?" msgstr "" #: ../install_steps_interactive.pm_.c:864 ../standalone/draksec_.c:46 msgid "Choose security level" msgstr "" #: ../install_steps_interactive.pm_.c:865 #, c-format msgid "Precise RAM size if needed (found %d MB)" msgstr "" #: ../install_steps_interactive.pm_.c:866 msgid "Removable media automounting" msgstr "" #: ../install_steps_interactive.pm_.c:868 msgid "Enable num lock at startup" msgstr "" #: ../install_steps_interactive.pm_.c:871 msgid "Give the ram size in Mb" msgstr "" #: ../install_steps_interactive.pm_.c:899 #: ../install_steps_interactive.pm_.c:1069 msgid "Try to find PCI devices?" msgstr "" #: ../install_steps_interactive.pm_.c:914 msgid "" "Some steps are not completed.\n" "\n" "Do you really want to quit now?" msgstr "" #: ../install_steps_interactive.pm_.c:921 msgid "" "Congratulations, installation is complete.\n" "Remove the boot media and press return to reboot.\n" "\n" "For information on fixes which are available for this release of " "Linux-Mandrake,\n" "consult the Errata available from http://www.linux-mandrake.com/.\n" "\n" "Information on configuring your system is available in the post\n" "install chapter of the Official Linux-Mandrake User's Guide." msgstr "" #: ../install_steps_interactive.pm_.c:930 msgid "Shutting down" msgstr "Ag dúnadh síos" #: ../install_steps_interactive.pm_.c:944 #, c-format msgid "Installing driver for %s card %s" msgstr "" #: ../install_steps_interactive.pm_.c:945 #, c-format msgid "(module %s)" msgstr "" #: ../install_steps_interactive.pm_.c:955 #, c-format msgid "Which %s driver should I try?" msgstr "" #: ../install_steps_interactive.pm_.c:963 #, c-format msgid "" "In some cases, the %s driver needs to have extra information to work\n" "properly, although it normally works fine without. Would you like to " "specify\n" "extra options for it or allow the driver to probe your machine for the\n" "information it needs? Occasionally, probing will hang a computer, but it " "should\n" "not cause any damage." msgstr "" #: ../install_steps_interactive.pm_.c:968 msgid "Autoprobe" msgstr "" #: ../install_steps_interactive.pm_.c:968 msgid "Specify options" msgstr "" #: ../install_steps_interactive.pm_.c:972 #, c-format msgid "You may now provide its options to module %s." msgstr "" #: ../install_steps_interactive.pm_.c:978 #, c-format msgid "" "You may now provide its options to module %s.\n" "Options are in format ``name=value name2=value2 ...''.\n" "For instance, ``io=0x300 irq=7''" msgstr "" #: ../install_steps_interactive.pm_.c:981 msgid "Module options:" msgstr "" #: ../install_steps_interactive.pm_.c:991 #, c-format msgid "" "Loading module %s failed.\n" "Do you want to try again with other parameters?" msgstr "" #: ../install_steps_interactive.pm_.c:1004 msgid "Try to find PCMCIA cards?" msgstr "Déan iarracht cartaí PCMCIA a lorg?" #: ../install_steps_interactive.pm_.c:1005 msgid "Configuring PCMCIA cards..." msgstr "Cumraigh Cártaí PCMCIA" #: ../install_steps_interactive.pm_.c:1005 msgid "PCMCIA" msgstr "PCMCIA" #: ../install_steps_interactive.pm_.c:1012 msgid "" "Linux does not yet fully support ultra dma 66 HPT.\n" "As a work-around i can make a custom floppy giving access the hard drive on " "ide2 and ide3" msgstr "" #: ../install_steps_interactive.pm_.c:1033 #, fuzzy msgid "" "Enter a floppy to create an HTP enabled boot\n" "(all data on floppy will be lost)" msgstr "" "Cur diosca flapach sa dioscthiomant\n" "Caillfear gach sonra ar an dhiosca seo" #: ../install_steps_interactive.pm_.c:1050 msgid "It is necessary to restart installation booting on the floppy" msgstr "" #: ../install_steps_interactive.pm_.c:1051 msgid "It is necessary to restart installation with the new parameters" msgstr "" #: ../install_steps_interactive.pm_.c:1055 #, c-format msgid "" "Failed to create an HTP boot floppy.\n" "You may have to restart installation and give ``%s'' at the prompt" msgstr "" #: ../install_steps_interactive.pm_.c:1075 #, c-format msgid "Found %s %s interfaces" msgstr "" #: ../install_steps_interactive.pm_.c:1076 msgid "Do you have another one?" msgstr "An bhfuil ceann eile agat?" #: ../install_steps_interactive.pm_.c:1077 #, c-format msgid "Do you have any %s interface?" msgstr "An bhfuil comhéadan %s agat?" #: ../install_steps_interactive.pm_.c:1079 ../interactive.pm_.c:79 #: ../my_gtk.pm_.c:424 ../printerdrake.pm_.c:176 msgid "No" msgstr "" #: ../install_steps_interactive.pm_.c:1079 ../interactive.pm_.c:79 #: ../my_gtk.pm_.c:424 msgid "Yes" msgstr "" #: ../install_steps_interactive.pm_.c:1080 msgid "See hardware info" msgstr "" #: ../install_steps_newt.pm_.c:19 #, c-format msgid "Linux-Mandrake Installation %s" msgstr "" #: ../install_steps_newt.pm_.c:30 msgid "" " / between elements | selects | next screen " msgstr "" #: ../interactive.pm_.c:84 ../interactive.pm_.c:162 #: ../interactive_newt.pm_.c:50 ../interactive_newt.pm_.c:94 #: ../interactive_stdio.pm_.c:27 ../my_gtk.pm_.c:193 ../my_gtk.pm_.c:425 msgid "Cancel" msgstr "Cealaigh" #: ../interactive.pm_.c:180 msgid "Please wait" msgstr "Fan tamall" #: ../interactive_stdio.pm_.c:35 #, c-format msgid "Ambiguity (%s), be more precise\n" msgstr "Débhríoch (%s), bí níos cruinn\n" #: ../interactive_stdio.pm_.c:36 ../interactive_stdio.pm_.c:51 #: ../interactive_stdio.pm_.c:70 msgid "Bad choice, try again\n" msgstr "Droch rogha, aththrialaigh\n" #: ../interactive_stdio.pm_.c:39 #, c-format msgid " ? (default %s) " msgstr " ? (gnás %s)" #: ../interactive_stdio.pm_.c:52 #, c-format msgid "Your choice? (default %s) " msgstr "Do rogha? (gnás %s)" #: ../interactive_stdio.pm_.c:71 #, c-format msgid "Your choice? (default %s enter `none' for none) " msgstr "Do rogha? (gnás %s úsáid `none' do ceann ar bith) " #: ../keyboard.pm_.c:88 msgid "Armenian" msgstr "" #: ../keyboard.pm_.c:89 msgid "Belgian" msgstr "" #: ../keyboard.pm_.c:90 msgid "Bulgarian" msgstr "" #: ../keyboard.pm_.c:91 msgid "Brazilian" msgstr "" #: ../keyboard.pm_.c:92 msgid "Swiss (French layout)" msgstr "" #: ../keyboard.pm_.c:93 msgid "Swiss (German layout)" msgstr "" #: ../keyboard.pm_.c:94 msgid "Czech" msgstr "" #: ../keyboard.pm_.c:95 msgid "German" msgstr "" #: ../keyboard.pm_.c:96 msgid "Danish" msgstr "" #: ../keyboard.pm_.c:97 msgid "Dvorak" msgstr "" #: ../keyboard.pm_.c:98 msgid "Estonian" msgstr "" #: ../keyboard.pm_.c:99 msgid "Spanish" msgstr "" #: ../keyboard.pm_.c:100 msgid "Finnish" msgstr "" #: ../keyboard.pm_.c:101 msgid "French" msgstr "" #: ../keyboard.pm_.c:102 msgid "Georgian (\"Russian\" layout)" msgstr "" #: ../keyboard.pm_.c:103 msgid "Georgian (\"Latin\" layout)" msgstr "" #: ../keyboard.pm_.c:104 msgid "Greek" msgstr "" #: ../keyboard.pm_.c:105 msgid "Hungarian" msgstr "" #: ../keyboard.pm_.c:106 msgid "Israeli" msgstr "" #: ../keyboard.pm_.c:107 msgid "Israeli (Phonetic)" msgstr "" #: ../keyboard.pm_.c:108 msgid "Icelandic" msgstr "" #: ../keyboard.pm_.c:109 msgid "Italian" msgstr "" #: ../keyboard.pm_.c:110 msgid "Latin American" msgstr "" #: ../keyboard.pm_.c:112 msgid "Dutch" msgstr "" #: ../keyboard.pm_.c:113 msgid "Lithuanian AZERTY" msgstr "" #: ../keyboard.pm_.c:114 msgid "Lithuanian \"number row\" QWERTY" msgstr "" #: ../keyboard.pm_.c:115 msgid "Lithuanian \"phonetic\" QWERTY" msgstr "" #: ../keyboard.pm_.c:116 msgid "Norwegian" msgstr "" #: ../keyboard.pm_.c:117 msgid "Polish" msgstr "" #: ../keyboard.pm_.c:118 msgid "Portuguese" msgstr "" #: ../keyboard.pm_.c:119 msgid "Canadian (Quebec)" msgstr "" #: ../keyboard.pm_.c:120 msgid "Russian" msgstr "" #: ../keyboard.pm_.c:121 msgid "Russian (Yawerty)" msgstr "" #: ../keyboard.pm_.c:122 msgid "Swedish" msgstr "" #: ../keyboard.pm_.c:123 msgid "Slovenian" msgstr "" #: ../keyboard.pm_.c:124 msgid "Slovakian" msgstr "" #: ../keyboard.pm_.c:125 msgid "Thai keyboard" msgstr "" #: ../keyboard.pm_.c:126 msgid "Turkish (traditional \"F\" model)" msgstr "" #: ../keyboard.pm_.c:127 msgid "Turkish (modern \"Q\" model)" msgstr "" #: ../keyboard.pm_.c:128 msgid "Ukrainian" msgstr "" #: ../keyboard.pm_.c:129 msgid "UK keyboard" msgstr "" #: ../keyboard.pm_.c:130 msgid "US keyboard" msgstr "" #: ../keyboard.pm_.c:131 msgid "US keyboard (international)" msgstr "" #: ../keyboard.pm_.c:132 msgid "Yugoslavian (latin layout)" msgstr "" # NOTE: this message will be displayed by lilo at boot time; that is # using the BIOS font; that means cp437 charset on 99.99% of PC computers # out there. It is the nsuggested that for non latin languages an ascii # transliteration be used; or maybe the english text be used; as it is best # #: ../lilo.pm_.c:142 #, c-format msgid "" "Welcome to LILO the operating system chooser!\n" "\n" "To list the possible choices, press .\n" "\n" "To load one of them, write its name and press or wait %d seconds for " "default boot.\n" "\n" msgstr "" #: ../mouse.pm_.c:20 msgid "No Mouse" msgstr "Luchóg ar bith" #: ../mouse.pm_.c:21 msgid "Microsoft Rev 2.1A or higher (serial)" msgstr "" #: ../mouse.pm_.c:22 msgid "Logitech CC Series (serial)" msgstr "" #: ../mouse.pm_.c:23 msgid "Logitech MouseMan+/FirstMouse+ (serial)" msgstr "" #: ../mouse.pm_.c:24 msgid "ASCII MieMouse (serial)" msgstr "" #: ../mouse.pm_.c:25 msgid "Genius NetMouse (serial)" msgstr "" #: ../mouse.pm_.c:26 msgid "Microsoft IntelliMouse (serial)" msgstr "" #: ../mouse.pm_.c:27 msgid "MM Series (serial)" msgstr "" #: ../mouse.pm_.c:28 msgid "MM HitTablet (serial)" msgstr "" #: ../mouse.pm_.c:29 msgid "Logitech Mouse (serial, old C7 type)" msgstr "" #: ../mouse.pm_.c:30 msgid "Logitech MouseMan/FirstMouse (serial)" msgstr "" #: ../mouse.pm_.c:31 msgid "Generic Mouse (serial)" msgstr "" #: ../mouse.pm_.c:32 msgid "Microsoft compatible (serial)" msgstr "" #: ../mouse.pm_.c:33 msgid "Generic 3 Button Mouse (serial)" msgstr "" #: ../mouse.pm_.c:34 msgid "Mouse Systems (serial)" msgstr "" #: ../mouse.pm_.c:35 msgid "Generic Mouse (PS/2)" msgstr "" #: ../mouse.pm_.c:36 msgid "Logitech MouseMan/FirstMouse (ps/2)" msgstr "" #: ../mouse.pm_.c:37 msgid "Generic 3 Button Mouse (PS/2)" msgstr "" #: ../mouse.pm_.c:38 msgid "ALPS GlidePoint (PS/2)" msgstr "" #: ../mouse.pm_.c:39 msgid "Logitech MouseMan+/FirstMouse+ (PS/2)" msgstr "" #: ../mouse.pm_.c:40 msgid "Kensington Thinking Mouse (PS/2)" msgstr "" #: ../mouse.pm_.c:41 msgid "ASCII MieMouse (PS/2)" msgstr "" #: ../mouse.pm_.c:42 msgid "Genius NetMouse (PS/2)" msgstr "" #: ../mouse.pm_.c:43 msgid "Genius NetMouse Pro (PS/2)" msgstr "" #: ../mouse.pm_.c:44 msgid "Genius NetScroll (PS/2)" msgstr "" #: ../mouse.pm_.c:45 msgid "Microsoft IntelliMouse (PS/2)" msgstr "" #: ../mouse.pm_.c:46 msgid "ATI Bus Mouse" msgstr "" #: ../mouse.pm_.c:47 msgid "Microsoft Bus Mouse" msgstr "" #: ../mouse.pm_.c:48 msgid "Logitech Bus Mouse" msgstr "" #: ../mouse.pm_.c:49 msgid "USB Mouse" msgstr "" #: ../mouse.pm_.c:50 msgid "USB Mouse (3 buttons or more)" msgstr "" #: ../partition_table.pm_.c:486 msgid "" "You have a hole in your partition table but I can't use it.\n" "The only solution is to move your primary partitions to have the hole next " "to the extended partitions" msgstr "" #: ../partition_table.pm_.c:572 #, c-format msgid "Error reading file %s" msgstr "Earráid ag léamh comhad %s" #: ../partition_table.pm_.c:579 #, c-format msgid "Restoring from file %s failed: %s" msgstr "" #: ../partition_table.pm_.c:581 msgid "Bad backup file" msgstr "" #: ../partition_table.pm_.c:602 #, c-format msgid "Error writing to file %s" msgstr "" #: ../placeholder.pm_.c:5 #, fuzzy msgid "Show less" msgstr "Taispéan gach ceann" #: ../placeholder.pm_.c:6 msgid "Show more" msgstr "" #: ../printer.pm_.c:244 msgid "Local printer" msgstr "" #: ../printer.pm_.c:245 msgid "Remote lpd" msgstr "" #: ../printer.pm_.c:246 msgid "SMB/Windows 95/98/NT" msgstr "" #: ../printer.pm_.c:247 msgid "NetWare" msgstr "" #: ../printerdrake.pm_.c:75 msgid "Local Printer Options" msgstr "" #: ../printerdrake.pm_.c:76 msgid "" "Every print queue (which print jobs are directed to) needs a\n" "name (often lp) and a spool directory associated with it. What\n" "name and directory should be used for this queue?" msgstr "" #: ../printerdrake.pm_.c:79 msgid "Name of queue:" msgstr "" #: ../printerdrake.pm_.c:79 msgid "Spool directory:" msgstr "" #: ../printerdrake.pm_.c:90 msgid "Select Printer Connection" msgstr "" #: ../printerdrake.pm_.c:91 msgid "How is the printer connected?" msgstr "" #: ../printerdrake.pm_.c:99 msgid "Detecting devices..." msgstr "" #: ../printerdrake.pm_.c:99 msgid "Test ports" msgstr "" #: ../printerdrake.pm_.c:112 #, c-format msgid "A printer, model \"%s\", has been detected on " msgstr "" #: ../printerdrake.pm_.c:119 msgid "Local Printer Device" msgstr "" #: ../printerdrake.pm_.c:120 msgid "" "What device is your printer connected to \n" "(note that /dev/lp0 is equivalent to LPT1:)?\n" msgstr "" #: ../printerdrake.pm_.c:121 msgid "Printer Device:" msgstr "" #: ../printerdrake.pm_.c:125 msgid "Remote lpd Printer Options" msgstr "" #: ../printerdrake.pm_.c:126 msgid "" "To use a remote lpd print queue, you need to supply\n" "the hostname of the printer server and the queue name\n" "on that server which jobs should be placed in." msgstr "" #: ../printerdrake.pm_.c:129 msgid "Remote hostname:" msgstr "" #: ../printerdrake.pm_.c:129 msgid "Remote queue" msgstr "" #: ../printerdrake.pm_.c:134 msgid "SMB (Windows 9x/NT) Printer Options" msgstr "" #: ../printerdrake.pm_.c:135 msgid "" "To print to a SMB printer, you need to provide the\n" "SMB host name (Note! It may be different from its\n" "TCP/IP hostname!) and possibly the IP address of the print server, as\n" "well as the share name for the printer you wish to access and any\n" "applicable user name, password, and workgroup information." msgstr "" #: ../printerdrake.pm_.c:140 msgid "SMB server IP:" msgstr "" #: ../printerdrake.pm_.c:140 msgid "SMB server host:" msgstr "" #: ../printerdrake.pm_.c:141 ../printerdrake.pm_.c:163 msgid "Password:" msgstr "" #: ../printerdrake.pm_.c:141 msgid "Share name:" msgstr "" #: ../printerdrake.pm_.c:141 ../printerdrake.pm_.c:163 msgid "User name:" msgstr "" #: ../printerdrake.pm_.c:142 msgid "Workgroup:" msgstr "" #: ../printerdrake.pm_.c:157 msgid "NetWare Printer Options" msgstr "" #: ../printerdrake.pm_.c:158 msgid "" "To print to a NetWare printer, you need to provide the\n" "NetWare print server name (Note! it may be different from its\n" "TCP/IP hostname!) as well as the print queue name for the printer you\n" "wish to access and any applicable user name and password." msgstr "" #: ../printerdrake.pm_.c:162 msgid "Print Queue Name:" msgstr "" #: ../printerdrake.pm_.c:162 msgid "Printer Server:" msgstr "" #: ../printerdrake.pm_.c:173 msgid "Yes, print ASCII test page" msgstr "" #: ../printerdrake.pm_.c:174 msgid "Yes, print PostScript test page" msgstr "" #: ../printerdrake.pm_.c:175 msgid "Yes, print both test pages" msgstr "" #: ../printerdrake.pm_.c:183 msgid "Configure Printer" msgstr "" #: ../printerdrake.pm_.c:184 msgid "What type of printer do you have?" msgstr "" #: ../printerdrake.pm_.c:206 msgid "Printer options" msgstr "" #: ../printerdrake.pm_.c:207 msgid "Paper Size" msgstr "" #: ../printerdrake.pm_.c:208 msgid "Eject page after job?" msgstr "" #: ../printerdrake.pm_.c:211 msgid "Fix stair-stepping text?" msgstr "" #: ../printerdrake.pm_.c:214 msgid "Uniprint driver options" msgstr "" #: ../printerdrake.pm_.c:215 msgid "Color depth options" msgstr "" #: ../printerdrake.pm_.c:225 msgid "Do you want to test printing?" msgstr "" #: ../printerdrake.pm_.c:236 msgid "Printing test page(s)..." msgstr "" #: ../printerdrake.pm_.c:254 #, c-format msgid "" "Test page(s) have been sent to the printer daemon.\n" "This may take a little time before printer start.\n" "Printing status:\n" "%s\n" "\n" "Does it work properly?" msgstr "" #: ../printerdrake.pm_.c:258 msgid "" "Test page(s) have been sent to the printer daemon.\n" "This may take a little time before printer start.\n" "Does it work properly?" msgstr "" #: ../raid.pm_.c:36 #, c-format msgid "Can't add a partition to _formatted_ RAID md%d" msgstr "" #: ../raid.pm_.c:106 msgid "Can't write file $file" msgstr "" #: ../raid.pm_.c:146 #, c-format msgid "Not enough partitions for RAID level %d\n" msgstr "" #: ../standalone/draksec_.c:28 msgid "" "This level is to be used with care. It makes your system more easy to use,\n" "but very sensitive: it must not be used for a machine connected to others\n" "or to the Internet. There is no password access." msgstr "" #: ../standalone/draksec_.c:31 msgid "" "Password are now enabled, but use as a networked computer is still not " "recommended." msgstr "" #: ../standalone/draksec_.c:32 msgid "" "Few improvements for this security level, the main one is that there are\n" "more security warnings and checks." msgstr "" #: ../standalone/draksec_.c:34 msgid "" "This is the standard security recommended for a computer that will be used\n" "to connect to the Internet as a client. There are now security checks. " msgstr "" #: ../standalone/draksec_.c:36 msgid "" "With this security level, the use of this system as a server becomes " "possible.\n" "The security is now high enough to use the system as a server which accept\n" "connections from many clients. " msgstr "" #: ../standalone/draksec_.c:39 msgid "" "We take level 4 features, but now the system is entirely closed.\n" "Security features are at their maximum." msgstr "" #: ../standalone/draksec_.c:49 msgid "Setting security level" msgstr "" #: ../standalone/drakxconf_.c:21 msgid "Choose the tool you want to use" msgstr "" #: ../standalone/drakxservices_.c:21 msgid "Choose which services should be automatically started at boot time" msgstr "" #: ../standalone/mousedrake_.c:30 msgid "no serial_usb found\n" msgstr "" #: ../standalone/mousedrake_.c:35 msgid "Emulate third button?" msgstr "" #: ../standalone/rpmdrake_.c:25 #, fuzzy msgid "reading configuration" msgstr "Trialaigh an cumraíocht" #: ../standalone/rpmdrake_.c:45 ../standalone/rpmdrake_.c:50 #: ../standalone/rpmdrake_.c:253 msgid "File" msgstr "" #: ../standalone/rpmdrake_.c:48 ../standalone/rpmdrake_.c:229 #: ../standalone/rpmdrake_.c:253 ../standalone/rpmdrake_.c:269 msgid "Search" msgstr "" #: ../standalone/rpmdrake_.c:49 ../standalone/rpmdrake_.c:56 #, fuzzy msgid "Package" msgstr "%d pacáistí" #: ../standalone/rpmdrake_.c:51 #, fuzzy msgid "Text" msgstr "saineolaí" #: ../standalone/rpmdrake_.c:53 #, fuzzy msgid "Tree" msgstr "Cruthaigh" #: ../standalone/rpmdrake_.c:54 msgid "Sort by" msgstr "" #: ../standalone/rpmdrake_.c:55 msgid "Category" msgstr "" #: ../standalone/rpmdrake_.c:58 #, fuzzy msgid "See" msgstr "Freastalaí" #: ../standalone/rpmdrake_.c:59 ../standalone/rpmdrake_.c:163 #, fuzzy msgid "Installed packages" msgstr "%d pacáistí" #: ../standalone/rpmdrake_.c:60 #, fuzzy msgid "Available packages" msgstr "Ag curdach do na pacáistí atá ar fáil" #: ../standalone/rpmdrake_.c:62 #, fuzzy msgid "Show only leaves" msgstr "Taispéan gach ceann" #: ../standalone/rpmdrake_.c:67 msgid "Expand all" msgstr "" #: ../standalone/rpmdrake_.c:68 #, fuzzy msgid "Collapse all" msgstr "Glan gach ceann" #: ../standalone/rpmdrake_.c:70 #, fuzzy msgid "Configuration" msgstr "Trialaigh an cumraíocht" #: ../standalone/rpmdrake_.c:71 msgid "Add location of packages" msgstr "" #: ../standalone/rpmdrake_.c:75 msgid "Update location" msgstr "" #: ../standalone/rpmdrake_.c:79 ../standalone/rpmdrake_.c:328 #, fuzzy msgid "Remove" msgstr "Bog" #: ../standalone/rpmdrake_.c:100 msgid "Configuration: Add Location" msgstr "" #: ../standalone/rpmdrake_.c:101 msgid "Expand Tree" msgstr "" #: ../standalone/rpmdrake_.c:102 msgid "Collapse Tree" msgstr "" #: ../standalone/rpmdrake_.c:103 #, fuzzy msgid "Find Package" msgstr "%d pacáistí" #: ../standalone/rpmdrake_.c:104 msgid "Find Package containing file" msgstr "" #: ../standalone/rpmdrake_.c:105 msgid "Toggle between Installed and Available" msgstr "" #: ../standalone/rpmdrake_.c:139 msgid "Files:\n" msgstr "" #: ../standalone/rpmdrake_.c:161 ../standalone/rpmdrake_.c:209 #, fuzzy msgid "Uninstall" msgstr "Eirigh as Feistiú" #: ../standalone/rpmdrake_.c:163 #, fuzzy msgid "Choose package to install" msgstr "Roghnaigh pacáistí ..." #: ../standalone/rpmdrake_.c:190 msgid "Checking dependencies" msgstr "" #: ../standalone/rpmdrake_.c:190 ../standalone/rpmdrake_.c:409 msgid "Wait" msgstr "" #: ../standalone/rpmdrake_.c:209 #, fuzzy msgid "The following packages are going to be uninstalled" msgstr "Roghnaigh pacáistí ..." #: ../standalone/rpmdrake_.c:210 msgid "Uninstalling the RPMs" msgstr "" #: ../standalone/rpmdrake_.c:229 ../standalone/rpmdrake_.c:269 msgid "Regexp" msgstr "" #: ../standalone/rpmdrake_.c:229 msgid "Which package are looking for" msgstr "" #: ../standalone/rpmdrake_.c:238 ../standalone/rpmdrake_.c:262 #: ../standalone/rpmdrake_.c:278 #, c-format msgid "%s not found" msgstr "" #: ../standalone/rpmdrake_.c:238 ../standalone/rpmdrake_.c:262 #: ../standalone/rpmdrake_.c:278 msgid "No match" msgstr "" #: ../standalone/rpmdrake_.c:238 ../standalone/rpmdrake_.c:262 #: ../standalone/rpmdrake_.c:278 msgid "No more match" msgstr "" #: ../standalone/rpmdrake_.c:246 msgid "" "rpmdrake is currently in ``low memory'' mode.\n" "I'm going to relaunch rpmdrake to allow searching files" msgstr "" #: ../standalone/rpmdrake_.c:253 msgid "Which file are you looking for" msgstr "" #: ../standalone/rpmdrake_.c:269 msgid "What are looking for" msgstr "" #: ../standalone/rpmdrake_.c:289 msgid "Give a name (eg: `extra', `commercial')" msgstr "" #: ../standalone/rpmdrake_.c:291 #, fuzzy msgid "Directory" msgstr "Teascán" #: ../standalone/rpmdrake_.c:294 msgid "No cdrom available (nothing in /mnt/cdrom)" msgstr "" #: ../standalone/rpmdrake_.c:298 msgid "URL of the directory containing the RPMs" msgstr "" #: ../standalone/rpmdrake_.c:299 msgid "" "For FTP and HTTP, you need to give the location for hdlist\n" "It must be relative to the URL above" msgstr "" #: ../standalone/rpmdrake_.c:302 msgid "Please submit the following information" msgstr "" #: ../standalone/rpmdrake_.c:304 #, c-format msgid "%s is already in use" msgstr "" #: ../standalone/rpmdrake_.c:315 ../standalone/rpmdrake_.c:321 #: ../standalone/rpmdrake_.c:329 msgid "Updating the RPMs base" msgstr "" #: ../standalone/rpmdrake_.c:328 #, c-format msgid "Going to remove entry %s" msgstr "" #: ../standalone/rpmdrake_.c:360 msgid "Finding leaves" msgstr "" #: ../standalone/rpmdrake_.c:360 msgid "Finding leaves takes some time" msgstr "" #~ msgid "Partitioning failed: no root filesystem" #~ msgstr "Theip ar rannú: ní ann do comhadchoras fréamach" #~ msgid "Windows(TM)" #~ msgstr "Windows(TM)" 3' href='#n2303'>2303 2304
package bootloader;

use diagnostics;
use strict;

#-######################################################################################
#- misc imports
#-######################################################################################
use common;
use fs::type;
use fs::get;
use fs::loopback;
use fs::proc_partitions;
use log;
use any;
use devices;
use detect_devices;
use partition_table::raw;
use run_program;
use modules;

=head1 SYNOPSYS

B<bootloader> enables to configure various boot loaders (LILO, GRUB Legacy, GRUB2, ...)

Example of usage:

    $all_hds = fsedit::get_hds();
    fs::get_raw_hds('', $all_hds);
    fs::get_info_from_fstab($all_hds);
    $fstab = [ fs::get::fstab($all_hds) ];
    $bootloader = bootloader::read($all_hds);
    (...)
    bootloader::action($bootloader, 'write', $all_hds);

=head1 Functions

=over

=cut

my $vmlinuz_regexp = 'vmlinu[xz]|win4lin|uImage';
my $decompose_vmlinuz_name = qr/((?:$vmlinuz_regexp).*?)-(\d+\.\d+.*)/;

sub expand_vmlinuz_symlink {
    my ($vmlinuz) = @_;
    my $f = $::prefix . ($vmlinuz =~ m!^/! ? $vmlinuz : "/boot/$vmlinuz");
    -l $f ? readlink($f) : $vmlinuz;
}

sub installed_vmlinuz_raw() { grep { /^($vmlinuz_regexp)/ } all("$::prefix/boot") }
sub installed_vmlinuz() { grep { ! -l "$::prefix/boot/$_" } installed_vmlinuz_raw() }
sub vmlinuz2version {
    my ($vmlinuz) = @_;
    expand_vmlinuz_symlink($vmlinuz) =~ /$decompose_vmlinuz_name/ && $2;
}
sub vmlinuz2kernel_str {
    my ($vmlinuz) = @_;
    my ($basename, $version) = expand_vmlinuz_symlink($vmlinuz) =~ /$decompose_vmlinuz_name/ or return;
    { 
	basename => $basename,
	version => $version, 
	$version =~ /([\d.]*)-(\D.*)-((\d+|0\.rc\d+.*)\.mga.*)$/ ? #- eg: 3.0.0-1.mga2
	  (ext => $2, version_no_ext => "$1-$3") :
	$version =~ /(.*mga)-?(.*)/ ? #- (old) eg: 2.6.17-13mdventerprise
	  (ext => $2, version_no_ext => $1) : (version_no_ext => $version),
    };
}

sub kernel_str2short_name {
    my ($kernel) = @_;
    $kernel->{basename};
}

sub basename2initrd_basename {
    my ($basename) = @_;
    $basename =~ s!(vmlinu[zx]|uImage)-?!!; #- here we do not use $vmlinuz_regexp since we explicitly want to keep all that is not "vmlinuz"
    'initrd' . ($basename ? "-$basename" : '');    
}
sub kernel_str2vmlinuz_long {
    my ($kernel) = @_;
    $kernel->{basename} . '-' . $kernel->{version};
}
sub kernel_str2initrd_long {
    my ($kernel) = @_;
    basename2initrd_basename(kernel_str2short_name($kernel)) . '-' . $kernel->{version} . '.img';
}
sub kernel_str2vmlinuz_short {
    my ($kernel) = @_;
    if ($kernel->{use_long_name}) {
	kernel_str2vmlinuz_long($kernel);
    } else {
	kernel_str2short_name($kernel);
    }
}
sub kernel_str2initrd_short {
    my ($kernel) = @_;
    if ($kernel->{use_long_name}) {
	kernel_str2initrd_long($kernel);
    } else {
	basename2initrd_basename(kernel_str2short_name($kernel)) . '.img';
    }
}

sub kernel_str2label {
    my ($kernel, $o_use_long_name) = @_;
    if ($o_use_long_name || $kernel->{use_long_name}) {
	_sanitize_ver($kernel);
    } else {
	my $short_name = kernel_str2short_name($kernel);
	$kernel->{ext} =~ /^xen/ ? 'xen' : ($short_name eq 'vmlinuz' ? 'linux' : $short_name);
    }
}

sub get {
    my ($vmlinuz, $bootloader) = @_;
    $_->{kernel_or_dev} && $_->{kernel_or_dev} eq $vmlinuz and return $_ foreach @{$bootloader->{entries}};
    undef;
}
sub get_label {
    my ($label, $bootloader) = @_;
    $_->{label} && lc(make_label_lilo_compatible($_->{label})) eq lc(make_label_lilo_compatible($label)) and return $_ foreach @{$bootloader->{entries}};
    undef;
}

=item mkinitrd($kernel_version, $bootloader, $entry, $initrd)

Regenerates kernel's initrd.

=cut

sub mkinitrd {
    my ($kernel_version, $bootloader, $entry, $initrd) = @_;

    my $dir = dirname($initrd);
    if ($::testing) {
      log::l("Skipping initrd generation: testing mode");
      return $initrd;
    } elsif (-e "$::prefix/$initrd") {
      log::l("Skipping initrd generation: already exists");
      return $initrd;
    } elsif ($initrd =~ /\(hd/) {
      log::l("Skipping initrd generation: unrecognized partition");
      return $initrd;
    } elsif (!-d "$::prefix/$dir") {
      log::l("Skipping initrd generation: dir doesn't exist (probably !mounted foreign part)");
      return $initrd;
    }

    # for /boot on dos partitions when installing on loopback file on dos partition
    my $loop_boot = fs::loopback::prepare_boot();

    modules::load('loop');
    my @options = (
		   if_($::isInstall, "-v"), "-f", $initrd, $kernel_version, 
		   if_($entry->{initrd_options}, split(' ', $entry->{initrd_options})),
		  );

    my $err;
    if (!run_program::rooted($::prefix, 'mkinitrd', '2>', \$err, @options)) {
	unlink("$::prefix/$initrd");
	log::explanations("mkinitrd failed:\n(mkinitrd @options)\nError: <$err>");
	die "mkinitrd failed:\n(mkinitrd @options)\nError: $err";
    }
    add_boot_splash($initrd, $entry->{vga} || $bootloader->{vga});

    fs::loopback::save_boot($loop_boot);

    -e "$::prefix/$initrd" && $initrd;
}

=item rebuild_initrd($kernel_version, $bootloader, $entry, $initrd)

Saves the old initrd then regenerate it.
If it fails, restore the old initrd.

=cut

sub rebuild_initrd {
    my ($kernel_version, $bootloader, $entry, $initrd) = @_;

    my $old = $::prefix . $entry->{initrd} . '.old';
    unlink $old;
    rename "$::prefix$initrd", $old;
    if (!mkinitrd($kernel_version, $bootloader, $entry, $initrd)) {
	log::l("rebuilding initrd failed, putting back the old one");
	rename $old, "$::prefix$initrd";
    }
}

sub remove_boot_splash {
    my ($initrd) = @_;
    run_program::rooted($::prefix, '/usr/share/bootsplash/scripts/remove-boot-splash', $initrd);
}
sub add_boot_splash {
    my ($initrd, $vga) = @_;

    $vga or return;

    eval { require Xconfig::resolution_and_depth } or return;
    if (my $res = Xconfig::resolution_and_depth::from_bios($vga)) {
	run_program::rooted($::prefix, '/usr/share/bootsplash/scripts/make-boot-splash', $initrd, $res->{X});
    } else {
	log::l("unknown vga bios mode $vga");
    }
}
sub update_splash {
    my ($bootloader) = @_;

    my %real_initrd_entries;
    foreach (@{$bootloader->{entries}}) {
	if ($_->{initrd} && $_->{vga}) {
	    my $initrd = expand_symlinks($_->{initrd});
	    $real_initrd_entries{$initrd} = $_;
	}
    }
    foreach (values %real_initrd_entries) {
        log::l("add boot splash to $_->{initrd}\n");
	add_boot_splash($_->{initrd}, $_->{vga} || $bootloader->{vga});
    }
}

=item read($all_hds)

Reads bootloader config by calling the proper read_XYZ function.

=cut

sub read {
    my ($all_hds) = @_;
    my $fstab = [ fs::get::fstab($all_hds) ];
    foreach my $main_method (main_method_choices()) {
	my $f = $bootloader::{"read_$main_method"} or die "unknown bootloader method $main_method (read)";
	my $bootloader = $f->($fstab);

	cleanup_entries($bootloader);

	# handle raid-extra-boot (lilo)
	my @devs = $bootloader->{boot};
	if ($bootloader->{'raid-extra-boot'} =~ /mbr/ && 
	    (my $md = fs::get::device2part($bootloader->{boot}, $all_hds->{raids}))) {
	    @devs = map { $_->{rootDevice} } @{$md->{disks}};
	} elsif ($bootloader->{'raid-extra-boot'} =~ m!/dev/!) {
	    @devs = split(',', $bootloader->{'raid-extra-boot'});
	}

	my ($type) = map {
	    if (m!/fd\d+$!) {
		warn "not checking the method on floppy, assuming $main_method is right\n";
		$main_method;
	    } elsif (member($main_method, qw(cromwell pmon2000 uboot))) {
		#- not checking, there's only one bootloader anyway :)
		$main_method;
	    } elsif (my $type = partition_table::raw::typeOfMBR($_)) {
		warn "typeOfMBR $type on $_ for method $main_method\n" if $ENV{DEBUG};
		$type;
	    } else { () }
	} @devs;

	if ($type eq $main_method) {
	    return $bootloader if read_($bootloader);
	}
    }
    # still no boot loader found? let's check for ESP if using UEFI: 
    if (is_uefi()) {
	if (-f "/boot/EFI/EFI/mageia/grubx64.efi") {
	    my $bootloader = bootloader::read_grub2();
	    return $bootloader if read_($bootloader);
	}
    }
}

sub read_ {
    my ($bootloader) = @_;
	    my @prefered_entries = map { get_label($_, $bootloader) } $bootloader->{default}, 'linux';

	    if (my $default = find { $_ && $_->{type} eq 'image' } (@prefered_entries, @{$bootloader->{entries}})) {
		$bootloader->{default_options} = $default;
		$bootloader->{perImageAppend} ||= $default->{append};
		log::l("perImageAppend is now $bootloader->{perImageAppend}");
	    } else {
		$bootloader->{default_options} = {};
	    }
	    return $bootloader;
}

=item read_grub2 ($o_fstab)

Read back GRUB2 config + C</boot/grub2/drakboot.conf>

=cut

sub read_grub2() {
    my %bootloader = getVarsFromSh("$::prefix/boot/grub2/drakboot.conf");
    if (is_empty_hash_ref(\%bootloader)) {
	%bootloader = read_grub2_install_sh();
    }
    my %h = getVarsFromSh("$::prefix/etc/default/grub");
    $bootloader{timeout} = $h{GRUB_TIMEOUT};
    $bootloader{entries} = [];
    my $entry;
    foreach (cat_utf8("$::prefix/boot/grub2/grub.cfg")) {
	next if /^#/;
	if (/menuentry\s+['"]([^']+)["']/) {
	    push @{$bootloader{entries}}, $entry if $entry;
	    $entry = { label => $1 };
	} elsif (/linux\s+(\S+)\s+(.*)?/ || /module\s+(\S+vmlinu\S+)\s+(.*)?/) {
	    $entry->{type} = 'image';
	    @$entry{qw(kernel_or_dev append)} = ($1, $2);
	    my ($vga, $other) = partition { /^vga=/ } split(' ', $entry->{append});
	    if (@$vga) {
	        $entry->{vga} = $vga->[0] =~ /vga=(.*)/ && $1;
	        $entry->{append} = join(' ', @$other);
	    }
	} elsif (/initrd\s+(\S+)/ || /module\s+(\S+initrd\S+)\s+(.*)?/) {
	    $entry->{initrd} = $1;
	}
    }

    # get default entry:
    foreach (run_program::rooted_get_stdout($::prefix, qw(grub2-editenv list))) {
	$bootloader{default} = $1 if /saved_entry=(.*)/;
    }

    $bootloader{method} = 'grub2';
    \%bootloader;
}

sub read_grub2_install_sh() {
    my $s = cat_("$::prefix/boot/grub2/install.sh");
    my %h;
    if ($s =~ m!(/dev/\S+)!m) {
	$h{boot} = $1;
    }
    %h;
}

=item read_grub($fstab)

Reads back Grub Legacy config.

=cut

sub read_grub {
    my ($fstab) = @_;

    my $grub2dev = read_grub_device_map();
    my $boot_root = read_grub_install_sh();
    _may_fix_grub2dev($fstab, $grub2dev, $boot_root->{boot_part});

    my $bootloader = read_grub_menu_lst($fstab, $grub2dev) or return;

    if ($boot_root->{boot}) {
	$bootloader->{boot} = grub2dev($boot_root->{boot}, $grub2dev);
    }

    $bootloader;
}


=item _may_fix_grub2dev($fstab, $grub2dev, $boot_part)

Adapts device.map (aka $grub2dev) when for example hda is now sda.
nb:

=over 4

=item * $boot_part comes from C</boot/grub/install.sh> "C<root (hd...)>" line

=item * $grub2dev is C</boot/grub/device.map>

=back

=cut

sub _may_fix_grub2dev {
    my ($fstab, $grub2dev, $boot_part) = @_;

    $boot_part or log::l("install.sh does not contain 'root (hd...)' line, no way to magically adapt device.map"), return;

    my $real_boot_part = fs::get::root_($fstab, 'boot') or
      log::l("argh... the fstab given is useless, it doesn't contain '/'"), return;
    
    my $real_boot_dev = $real_boot_part->{rootDevice} or return; # if /boot is on Linux RAID 1, hope things are all right...

    if (my $prev_boot_part = fs::get::device2part(grub2dev($boot_part, $grub2dev), $fstab)) { # the boot_device as far as grub config files say
	$real_boot_part == $prev_boot_part and return;
    }

    log::l("WARNING: we have detected that device.map is inconsistent with the system");

    my ($hd_grub, undef, undef) = parse_grub_file($boot_part); # extract hdX 
    if (my $prev_hd_grub = find { $grub2dev->{$_} eq $real_boot_dev } keys %$grub2dev) {
	$grub2dev->{$prev_hd_grub} = $grub2dev->{$hd_grub};
	log::l("swapping result: $hd_grub/$real_boot_dev and $prev_hd_grub/$grub2dev->{$hd_grub}");
    } else {
	log::l("argh... can't swap, setting $hd_grub to $real_boot_dev anyway");
    }
    $grub2dev->{$hd_grub} = $real_boot_dev;
}

=item read_grub_install_sh() {

Reads "config" from /boot/grub/install.sh (mainly used partitions)

=cut

sub read_grub_install_sh() {
    my $s = cat_("$::prefix/boot/grub/install.sh");
    my %h;

    #- matches either:
    #-   setup (hd0)
    #-   install (hd0,0)/boot/grub/stage1 d (hd0) (hd0,0)/boot/grub/stage2 p (hd0,0)/boot/grub/menu.lst
    if ($s =~ /^(?:setup.*|install\s.*\sd)\s+(\(.*?\))/m) {
	$h{boot} = $1;
    }    
    if ($s =~ /^root\s+(\(.*?\))/m) {
	$h{boot_part} = $1;
    }
    \%h;
}

sub _parse_grub_menu_lst() {
    my $global = 1;
    my ($e, %b);

    my $menu_lst_file = "$::prefix/boot/grub/menu.lst";
    -e $menu_lst_file or return;

    foreach (MDK::Common::File::cat_utf8($menu_lst_file)) {
	my $verbatim = $_;
        chomp;
	s/^\s*//; s/\s*$//;
        next if /^#/ || /^$/;
	my ($keyword, $v) = split('[ \t=]+', $_, 2) or
	  warn qq(unknown line in /boot/grub/menu.lst: "$_"\n), next;

	if ($keyword eq 'root') {
	    #- rename to avoid name conflict
	    $keyword = 'grub_root';
	}

        if ($keyword eq 'title') {
            push @{$b{entries}}, $e = { label => $v };
            $global = 0;
        } elsif ($global) {
            $b{$keyword} = $v;
        } else {
            if ($keyword eq 'kernel') {
                $e->{type} = 'image';
		$e->{kernel} = $v;
            } elsif ($keyword eq 'chainloader') {
                $e->{type} = 'other';
                $e->{append} = "";
            } elsif ($keyword eq 'configfile') {
                $e->{type} = 'grub_configfile';
                $e->{configfile} = $v;
            } elsif ($keyword eq 'map') {
		$e->{mapdrive}{$2} = $1 if $v =~ m/\((.*)\) \((.*)\)/;
            } elsif ($keyword eq 'module') {
		push @{$e->{modules}}, $v;
	    } else {
		$e->{$keyword} = $v eq '' ? 1 : $v;
	    }
        }
	$e and $e->{verbatim} .= $verbatim;
    }

    %b;
}


=item is_already_crypted($password)

Returns whether grub password is already encrypted or not

=cut

sub is_already_crypted {
    my ($password) = @_;
    $password =~ /^--md5 (.*)/;
}

=item read_grub_menu_lst($fstab, $grub2dev)

Read config from /boot/grub/menu.lst

=cut

sub read_grub_menu_lst {
    my ($fstab, $grub2dev) = @_;

    my %b = _parse_grub_menu_lst();

    foreach my $keyword (grep { $_ ne 'entries' } keys %b) {
	$b{$keyword} = $b{$keyword} eq '' ? 1 : grub2file($b{$keyword}, $grub2dev, $fstab, \%b);
    }

    #- sanitize
    foreach my $e (@{$b{entries}}) {
	if (member($e->{type}, 'other', 'grub_configfile')) {
	    eval { $e->{kernel_or_dev} = grub2dev($e->{rootnoverify} || $e->{grub_root}, $grub2dev) };
	    $e->{keep_verbatim} = 1 unless $e->{kernel_or_dev}; 
	} elsif ($e->{initrd}) {
 	    my $initrd;
 	    eval { $initrd = grub2file($e->{initrd}, $grub2dev, $fstab, $e) };
 	    if ($initrd) {
 		$e->{initrd} = $initrd;
 	    } else {
 		$e->{keep_verbatim} = 1;
 	    }
	}

	if ($e->{kernel} =~ /xen/ && @{$e->{modules} || []} == 2 && $e->{modules}[1] =~ /initrd/) {
	    (my $xen, $e->{xen_append}) = split(' ', $e->{kernel}, 2);
	    ($e->{kernel}, my $initrd) = @{delete $e->{modules}};
	    $e->{xen} = grub2file($xen, $grub2dev, $fstab, $e);
	    $e->{initrd} = grub2file($initrd, $grub2dev, $fstab, $e);
	}
	if (my $v = delete $e->{kernel}) {
	    (my $kernel, $e->{append}) = split(' ', $v, 2);
	    $e->{append} = join(' ', grep { !/^BOOT_IMAGE=/ } split(' ', $e->{append}));
	    $e->{root} = $1 if $e->{append} =~ s/root=(\S*)\s*//;
	    eval { $e->{kernel_or_dev} = grub2file($kernel, $grub2dev, $fstab, $e) };
	    $e->{keep_verbatim} = 1 if !$e->{kernel_or_dev} || dirname($e->{kernel_or_dev}) ne '/boot';
	}
	my ($vga, $other) = partition { /^vga=/ } split(' ', $e->{append});
	if (@$vga) {
	    $e->{vga} = $vga->[0] =~ /vga=(.*)/ && $1;
	    $e->{append} = join(' ', @$other);
	}
    }

    $b{nowarn} = 1;
    # handle broken installkernel -r:
    if (@{$b{entries}}) {
	$b{default} = min($b{default}, scalar(@{$b{entries}}) - 1);
	$b{default} = $b{entries}[$b{default}]{label};
    }
    $b{method} = $b{gfxmenu} ? 'grub-graphic' :  'grub-menu';

    \%b;
}

# FIXME: actually read back previous conf
sub read_pmon2000() {
    +{ method => 'pmon2000' };
}
sub read_uboot() {
    +{ method => 'uboot' };
}
sub read_cromwell() {
    +{ method => 'cromwell' };
}


sub read_lilo() {
    my $bootloader = read_lilo_like("/etc/lilo.conf", sub { $_[0] });

    delete $bootloader->{timeout} unless $bootloader->{prompt};
    $bootloader->{timeout} = $bootloader->{timeout} / 10 if $bootloader->{timeout};

    my $submethod = member($bootloader->{install}, 'text', 'menu') ? $bootloader->{install} : 'menu';
    $bootloader->{method} = "lilo-$submethod";
    
    $bootloader;
}
sub read_lilo_like {
    my ($file, $filter_file) = @_;

    my $global = 1;
    my ($e);
    my %b;
    -e "$::prefix$file" or return;
    foreach my $line (cat_("$::prefix$file")) {
	next if $line =~ /^\s*#/ || $line =~ /^\s*$/;
	my ($cmd, $v) = $line =~ /^\s*([^=\s]+)\s*(?:=\s*(.*?))?\s*$/ or log::l("unknown line in $file: $line"), next;

	if ($cmd =~ /^(?:image|other|macos|macosx|bsd|darwin)$/) {
	    $v = $filter_file->($v);
	    push @{$b{entries}}, $e = { type => $cmd, kernel_or_dev => $v };
	    $global = 0;
	} elsif ($global) {
	    if ($cmd eq 'disk' && $v =~ /(\S+)\s+bios\s*=\s*(\S+)/) {
		$b{bios}{$1} = $2;
	    } elsif ($cmd eq 'bios') {
		$b{bios}{$b{disk}} = $v;
	    } elsif ($cmd eq 'init-message') {
		$v =~ s/\\n//g; 
		$v =~ s/"//g;
		$b{'init-message'} = $v;
	    } else {
		$b{$cmd} = $v eq '' ? 1 : $v;
	    }
	} else {
	    if (($cmd eq 'map-drive' .. $cmd eq 'to') && $cmd eq 'to') {
		$e->{mapdrive}{$e->{'map-drive'}} = $v;
	    } else {
		if ($cmd eq 'initrd') {
		    $v = $filter_file->($v);
		}
		$e->{$cmd} = $v || 1;
	    }
	}
    }

    sub remove_quotes_and_spaces {
	local ($_) = @_;
	s/^\s*//; s/\s*$//;
	s/^"(.*?)"$/$1/;
	s/\\"/"/g;
	s/^\s*//; s/\s*$//; #- do it again for append=" foo"
	$_;
    }

    foreach ('append', 'root', 'default', 'raid-extra-boot') {
	$b{$_} = remove_quotes_and_spaces($b{$_}) if $b{$_};
    }
    foreach my $entry (@{$b{entries}}) {
	foreach ('append', 'root', 'label') {
	    $entry->{$_} = remove_quotes_and_spaces($entry->{$_}) if $entry->{$_};
	}
	if ($entry->{kernel_or_dev} =~ /\bmbootpack\b/) {
	    $entry->{initrd} = $entry->{kernel_or_dev};
	    $entry->{initrd} =~ s/\bmbootpack/initrd/;
	    $entry->{kernel_or_dev} =~ s/\bmbootpack/vmlinuz/;
	    $entry->{kernel_or_dev} =~ s/.img$//;
	    #- assume only xen is configured with mbootpack
	    $entry->{xen} = '/boot/xen.gz';
	    $entry->{root} = $1 if $entry->{append} =~ s/root=(\S*)\s*//;
	    ($entry->{xen_append}, $entry->{append}) = split '\s*--\s*', $entry->{append}, 2;
	}
    }

    # cleanup duplicate labels (in case file is corrupted)
    @{$b{entries}} = uniq_ { $_->{label} } @{$b{entries}};

    \%b;
}

sub cleanup_entries {
    my ($bootloader) = @_;

    #- cleanup bad entries (in case file is corrupted)
    @{$bootloader->{entries}} = 
	grep { 
	    my $pb = $_->{type} eq 'image' && !$_->{keep_verbatim} && ! -e "$::prefix$_->{kernel_or_dev}";
	    log::l("dropping bootloader entry $_->{label} since $_->{kernel_or_dev} doesn't exist") if $pb;
	    !$pb;
	} @{$bootloader->{entries}};
}

sub suggest_onmbr {
    my ($hd) = @_;
    
    my ($onmbr, $unsafe) = (1, 1);

    if (my $type = partition_table::raw::typeOfMBR($hd->{device})) {
	if (member($type, qw(dos dummy empty))) {
	    $unsafe = 0;
	} elsif (!member($type, qw(lilo grub grub2))) {
	    $onmbr = 0;
	}
	log::l("bootloader::suggest_onmbr: type $type, onmbr $onmbr, unsafe $unsafe");
    }
    ($onmbr, $unsafe);
}


=item allowed_boot_parts($bootloader, $all_hds)

Returns list of places where we can install the bootloader

=cut

sub allowed_boot_parts {
    my ($bootloader, $all_hds) = @_;
    (
     @{$all_hds->{hds}}, # MBR

     if_($bootloader->{method} =~ /lilo/,
	 grep { $_->{level} eq '1' } @{$all_hds->{raids}}
	),
     (grep { !isFat_or_NTFS($_) } fs::get::fstab($all_hds)), # filesystems except those who do not leave space for our bootloaders
     detect_devices::floppies(),
    );
}

sub same_entries {
    my ($a, $b) = @_;

    foreach (uniq(keys %$a, keys %$b)) {
	if (member($_, 'label', 'append', 'mapdrive', 'readonly', 'makeactive', 'verbatim')) {
	    next;
	} elsif ($_ eq 'grub_root' && (!$a->{$_} || !$b->{$_})) {
	    #- grub_root is mostly internal stuff. if it misses, it's ok
	    next;
	} else {
	    next if $a->{$_} eq $b->{$_};

	    my ($inode_a, $inode_b) = map { (stat "$::prefix$_")[1] } ($a->{$_}, $b->{$_});
	    next if $inode_a && $inode_b && $inode_a == $inode_b;
	}

	log::l("entries $a->{label} do not have same $_: $a->{$_} ne $b->{$_}");
	return;
    }
    1;
}

sub add_entry {
    my ($bootloader, $v) = @_;

    my $to_add = $v;
    my $label = $v->{label};
    for (my $i = 0; $i < 100;) {
	my $conflicting = get_label($label, $bootloader);

	$to_add->{label} = $label;

	if ($conflicting) {
	    #- replacing $conflicting with $to_add
	    @{$bootloader->{entries}} = map { $_ == $conflicting ? $to_add : $_ } @{$bootloader->{entries}};

	    #- we will keep $conflicting, but not with same symlinks if used by the entry to add
	    expand_entry_symlinks($bootloader, $conflicting);
	} else {
	    #- we have found an unused label
	    push @{$bootloader->{entries}}, $to_add;
	}

	if (!$conflicting || same_entries($conflicting, $to_add)) {
	    log::l("current labels: " . join(" ", map { $_->{label} } @{$bootloader->{entries}}));
	    return $v;
	}
	$to_add = $conflicting;

	if ($to_add->{label} eq 'linux') {
	    $label = kernel_str2label(vmlinuz2kernel_str($to_add->{kernel_or_dev}), 'use_long_name');
	} else {
	    $label =~ s/^alt\d*_//;
	    $label = 'alt' . ($i++ ? $i : '') . "_$label";
	}
    }
    die 'add_entry';
}

sub expand_entry_symlinks {
    my ($bootloader, $entry) = @_;

    foreach my $kind ('kernel_or_dev', 'initrd') {
	my $old_long_name = $bootloader->{old_long_names} && $bootloader->{old_long_names}{$entry->{$kind}} or next;

	#- replace all the {$kind} using this symlink to the real file
	log::l("replacing $entry->{$kind} with $old_long_name for bootloader label $entry->{label}");
	$entry->{$kind} = $old_long_name;
    }
}

sub _do_the_symlink {
    my ($bootloader, $link, $long_name) = @_;

    my $existing_link = readlink("$::prefix$link");
    if ($existing_link && $existing_link eq $long_name) {
	#- nothing to do :)
	return;
    }

    if ($existing_link) {
	#- the symlink is going to change! 
	#- replace all the {$kind} using this symlink to the real file
	my $old_long_name = $existing_link =~ m!^/! ? $existing_link : "/boot/$existing_link";
	if (-e "$::prefix$old_long_name") {
	    $bootloader->{old_long_names}{$link} = $old_long_name;
	} else {
	    log::l("ERROR: $link points to $old_long_name which does not exist");
	}
    } elsif (-e "$::prefix$link") {
	log::l("ERROR: $link is not a symbolic link");
    }

    #- changing the symlink
    symlinkf($long_name, "$::prefix$link")
      or cp_af("$::prefix/boot/$long_name", "$::prefix$link");
}

# for lilo & xen
sub get_mbootpack_filename {
    my ($entry) = @_;
    my $mbootpack_file = $entry->{initrd};
    $mbootpack_file =~ s/\binitrd/mbootpack/;
    $entry->{xen} && $mbootpack_file;
}

# for lilo & xen
sub build_mbootpack {
    my ($entry) = @_;

    my $mbootpack = '/usr/bin/mbootpack';
    -f $::prefix . $entry->{kernel_or_dev} && -f $::prefix . $entry->{initrd} or return;

    my $mbootpack_file = get_mbootpack_filename($entry);
    -f ($::prefix . $mbootpack_file) and return 1;

    my $error;
    my $xen_kernel = '/tmp/xen_kernel';
    my $xen_vmlinux = '/tmp/xen_vmlinux';
    my $_b = before_leaving { unlink $::prefix . $_ foreach $xen_kernel, $xen_vmlinux };
    run_program::rooted($::prefix, '/bin/gzip', '>', $xen_kernel, '2>', \$error, '-dc', $entry->{xen})
      or die "unable to uncompress xen kernel";
    run_program::rooted($::prefix, '/bin/gzip', '>', $xen_vmlinux, '2>', \$error, '-dc', $entry->{kernel_or_dev})
      or die "unable to uncompress xen vmlinuz";

    run_program::rooted($::prefix, $mbootpack,
                        "2>", \$error,
                        '-o', $mbootpack_file,
                        '-m', $xen_vmlinux,
                        '-m', $entry->{initrd},
                        $xen_kernel)
      or die "mbootpack failed: $error";

    1;
}

sub add_kernel {
    my ($bootloader, $kernel_str, $v, $b_nolink, $b_no_initrd) = @_;

    #- eg: for /boot/vmlinuz-2.6.17-13mdvxen0 (pkg kernel-xen0-xxx) 
    #-      or /boot/vmlinuz-2.6.18-xen (pkg kernel-xen-uptodate)
    if ($kernel_str->{version} =~ /xen/ && -f '/boot/xen.gz') {
	$v->{xen} = '/boot/xen.gz';
    }

    add2hash($v,
	     {
	      type => 'image',
	      label => kernel_str2label($kernel_str),
	     });

    #- normalize append and handle special options
    {
	my ($simple, $dict) = unpack_append("$bootloader->{perImageAppend} $v->{append}");
	if ($v->{label} eq 'failsafe') {
	    #- perImageAppend contains resume=/dev/xxx which we don't want
	    @$dict = grep { $_->[0] ne 'resume' } @$dict;
	}
	$v->{append} = pack_append($simple, $dict);
    }

    $b_no_initrd //= arch() =~ /mips|arm/ && !detect_devices::is_mips_gdium();

    $b_nolink ||= $kernel_str->{use_long_name};

    #- do not link /boot/vmlinuz to xen
    $b_nolink ||= $v->{xen};

    my $vmlinuz_long = kernel_str2vmlinuz_long($kernel_str);
    my $initrd_long = kernel_str2initrd_long($kernel_str);
    $v->{kernel_or_dev} = "/boot/$vmlinuz_long";
    -e "$::prefix$v->{kernel_or_dev}" or log::l("unable to find kernel image $::prefix$v->{kernel_or_dev}"), return;
    log::l("adding $v->{kernel_or_dev}");

    if (!$b_no_initrd) {
	$v->{initrd} = mkinitrd($kernel_str->{version}, $bootloader, $v, "/boot/$initrd_long");
    }

    if (!$b_nolink) {
	$v->{kernel_or_dev} = '/boot/' . kernel_str2vmlinuz_short($kernel_str);
	if (arch() =~ /mips/) {
	    log::l("link $::prefix/boot/$vmlinuz_long -> $::prefix$v->{kernel_or_dev}");
	    linkf("$::prefix/boot/$vmlinuz_long", $::prefix . $v->{kernel_or_dev});
	    linkf("$::prefix/boot/$vmlinuz_long", $::prefix . $v->{kernel_or_dev} . ".32");
	} else {
	    _do_the_symlink($bootloader, $v->{kernel_or_dev}, $vmlinuz_long);
	}

	if ($v->{initrd}) {
	    $v->{initrd} = '/boot/' . kernel_str2initrd_short($kernel_str);
	    if (arch() =~ /mips/) {
		log::l("link $::prefix/boot/$initrd_long -> $::prefix$v->{initrd}");
		linkf("$::prefix/boot/$initrd_long", $::prefix . $v->{initrd});
		if ($v->{initrd} =~ s/.img$/.gz/) {
		    linkf("$::prefix/boot/$initrd_long", $::prefix . $v->{initrd});
		}
	    } else {
		_do_the_symlink($bootloader, $v->{initrd}, $initrd_long);
	    }
	}
    }

    add_entry($bootloader, $v);
}

=item rebuild_initrds($bootloader)

Rebuilds all initrds

=cut

sub rebuild_initrds {
    my ($bootloader) = @_;

    my %done;
    foreach my $v (grep { $_->{initrd} } @{$bootloader->{entries}}) {
	my $kernel_str = vmlinuz2kernel_str($v->{kernel_or_dev}) or next;
	my $initrd_long = '/boot/' . kernel_str2initrd_long($kernel_str);
	next if $done{$initrd_long}++;

	rebuild_initrd($kernel_str->{version}, $bootloader, $v, $initrd_long);
    }
}

# unused (?)
sub duplicate_kernel_entry {
    my ($bootloader, $new_label) = @_;

    get_label($new_label, $bootloader) and return;

    my $entry = { %{ get_label('linux', $bootloader) }, label => $new_label };
    add_entry($bootloader, $entry);
}

my $uniq_dict_appends = join('|', qw(acpi pci resume PROFILE XFree));

sub unpack_append {
    my ($s) = @_;
    my @l = "$s " =~ /((?:[^"\s]+|".*?")*)\s+/g;
    [ grep { !/=/ } @l ], [ map { if_(/(.*?)=(.*)/, [$1, $2]) } @l ];
}
sub pack_append {
    my ($simple, $dict) = @_;

    #- normalize
    $simple = [ reverse(uniq(reverse @$simple)) ];
    $dict = [ reverse(uniq_ { 
	my ($k, $v) = @$_; 
	$k =~ /^($uniq_dict_appends)$/ ? $k : "$k=$v";
    } reverse @$dict) ];

    join(' ', @$simple, map { "$_->[0]=$_->[1]" } @$dict);
}

sub modify_append {
    my ($b, $f) = @_;

    my @l = grep { $_->{type} eq 'image' && !$_->{keep_verbatim} && !($::isStandalone && $_->{label} eq 'failsafe') } @{$b->{entries}};

    foreach (\$b->{perImageAppend}, map { \$_->{append} } @l) {
	my ($simple, $dict) = unpack_append($$_);
	$f->($simple, $dict);
	$$_ = pack_append($simple, $dict);
	log::l("modify_append: $$_");
    }
}

sub get_append_simple {
    my ($b, $key) = @_;
    my ($simple, $_dict) = unpack_append($b->{perImageAppend});
    member($key, @$simple);
}
sub get_append_with_key {
    my ($b, $key) = @_;
    my ($_simple, $dict) = unpack_append($b->{perImageAppend});
    my @l = map { $_->[1] } grep { $_->[0] eq $key } @$dict;

    log::l("more than one $key in $b->{perImageAppend}") if @l > 1;
    $l[0];
}
sub remove_append_simple {
    my ($b, $key) = @_;
    modify_append($b, sub {
	my ($simple, $_dict) = @_;
	@$simple = grep { $_ ne $key } @$simple;
    });
}
sub set_append_with_key {
    my ($b, $key, $val) = @_;

    modify_append($b, sub {
	my ($_simple, $dict) = @_;

	if ($val eq '') {
	    @$dict = grep { $_->[0] ne $key } @$dict;
	} else {
	    push @$dict, [ $key, $val ];
	}
    });
}
sub set_append_simple {
    my ($b, $key) = @_;

    modify_append($b, sub {
	my ($simple, $_dict) = @_;
	@$simple = uniq(@$simple, $key);
    });
}
sub may_append_with_key {
    my ($b, $key, $val) = @_;
    set_append_with_key($b, $key, $val) if !get_append_with_key($b, $key);
}

sub get_append_netprofile {
    my ($e) = @_;
    my ($simple, $dict) = unpack_append($e->{append});
    my ($p, $dict_) = partition { $_->[0] eq 'PROFILE' } @$dict;
    pack_append($simple, $dict_), $p->[0][1];
}
sub set_append_netprofile {
    my ($e, $append, $profile) = @_;
    my ($simple, $dict) = unpack_append($append);
    push @$dict, [ 'PROFILE', $profile ] if $profile;
    $e->{append} = pack_append($simple, $dict);
}

=item configure_entry($bootloader, $entry)

Used when a bootloader $entry has been modified (eg: $entry->{vga})

=cut

sub configure_entry {
    my ($bootloader, $entry) = @_;
    $entry->{type} eq 'image' or return;

    if (my $kernel_str = vmlinuz2kernel_str($entry->{kernel_or_dev})) {
	$entry->{initrd} = 
	  mkinitrd($kernel_str->{version}, $bootloader, $entry,
		   $entry->{initrd} || '/boot/' . kernel_str2initrd_short($kernel_str));
    }
}

sub get_kernels_and_labels_before_kernel_remove {
    my ($to_remove_kernel) = @_;
    my @kernels = grep { $_ ne $to_remove_kernel } installed_vmlinuz();
    map { kernel_str2label($_) => $_ } get_kernel_labels(\@kernels);
}

sub get_kernels_and_labels() {
    get_kernel_labels([ installed_vmlinuz() ]);
}

sub get_kernel_labels {
    my ($kernels) = @_;
    
    my @kernels_str = 
      sort { common::cmp_kernel_versions($b->{version_no_ext}, $a->{version_no_ext}) } 
      grep { -d "$::prefix/lib/modules/$_->{version}" }
      map { vmlinuz2kernel_str($_) } @$kernels;

    my %labels;
    foreach (@kernels_str) {
	if ($labels{$_->{ext}}) {
	    $_->{use_long_name} = 1;
	} else {
	    $labels{$_->{ext}} = 1;
	}
    }

    $kernels_str[0]{ext} = '';

    @kernels_str;
}

sub short_ext {
    my ($kernel_str) = @_;

    my $short_ext = {
	'i586-up-1GB' => 'i586',
	'i686-up-4GB' => '4GB',
	'xen0' => 'xen',
    }->{$kernel_str->{ext}};

    $short_ext || $kernel_str->{ext};
}

sub _sanitize_ver {
    my ($kernel_str) = @_;

    my $name = $kernel_str->{basename};
    $name = '' if $name eq 'vmlinuz';

    my $v = $kernel_str->{version_no_ext};
    if ($v =~ s/-\d+\.mm\././) {
	$name = join(' ', grep { $_ } $name, 'multimedia');
    }

    $v =~ s!(md[kv]|mnb)$!!;
    $v =~ s!-0\.(pre|rc)(\d+)\.!$1$2-!;

    my $return = join(' ', grep { $_ } $name, short_ext($kernel_str), $v);

    length($return) < 30 or $return =~ s!secure!sec!;
    length($return) < 30 or $return =~ s!enterprise!ent!;
    length($return) < 30 or $return =~ s!multimedia!mm!;

    $return;
}

=item suggest_message_text($bootloader)

Provides a description text for Lilo

=cut

sub suggest_message_text {
    my ($bootloader) = @_;

    if (!$bootloader->{message} && !$bootloader->{message_text}) {
	my $msg_en =
#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
N_("Welcome to the operating system chooser!

Choose an operating system from the list above or
wait for default boot.

");
	my $msg = translate($msg_en);
	#- use the English version if more than 40% of 8bits chars
	#- else, use the translation but force a conversion to ascii
	#- to be sure there won't be undisplayable characters
	if (int(grep { $_ & 0x80 } unpack "c*", $msg) / length($msg) > 0.4) {
	    $msg = $msg_en;
	} else {
	    $msg = Locale::gettext::iconv($msg, "utf-8", "ascii//TRANSLIT");
	}
	$bootloader->{message_text} = $msg;
    }
}

sub suggest {
    my ($bootloader, $all_hds, %options) = @_;
    my $fstab = [ fs::get::fstab($all_hds) ];
    my $root_part = fs::get::root($fstab);
    my $root = isLoopback($root_part) ? '/dev/loop7' : fs::wild_device::from_part('', $root_part);
    my $boot = fs::get::root($fstab, 'boot')->{device};
    my $mbr;
    
    # If installing onto an USB drive, put the MBR there, else on the first non removable drive
    if ($root_part->{is_removable}) {
        $mbr = fs::get::part2hd($root_part, $all_hds);
    } else {
        $mbr = find { !$_->{is_removable} } @{$all_hds->{hds}};
    }

    my ($onmbr, $unsafe) = $bootloader->{crushMbr} ? (1, 0) : suggest_onmbr($mbr);
    add2hash_($bootloader,
	{
	 bootUnsafe => $unsafe,
	 entries => [],
	 timeout => $onmbr && 10,
	 nowarn => 1,
	 boot => "/dev/" . ($onmbr ? $mbr->{device} : $boot),
	 map => "/boot/map",
	 compact => 1,
    	 'large-memory' => 1,
	 color => 'black/cyan yellow/cyan',
	 'menu-scheme' => 'wb:bw:wb:bw'
	});

    suggest_message_text($bootloader);

    add2hash_($bootloader, { memsize => $1 }) if cat_("/proc/cmdline") =~ /\bmem=(\d+[KkMm]?)(?:\s.*)?$/;
    if (my ($s, $port, $speed) = cat_("/proc/cmdline") =~ /console=(ttyS(\d),(\d+)\S*)/) {
	log::l("serial console $s $port $speed");
	set_append_with_key($bootloader, console => $s);
	any::set_login_serial_console($port, $speed);
    }

    my @kernels = get_kernels_and_labels() or die "no kernel installed";

    my %old_kernels = map { vmlinuz2version($_->{kernel_or_dev}) => 1 } @{$bootloader->{entries}};
    @kernels = grep { !$old_kernels{$_->{version}} } @kernels;

    #- remove existing failsafe and linux-nonfb, do not care if the previous one was modified by the user?
    @{$bootloader->{entries}} = grep { !member($_->{label}, qw(failsafe linux-nonfb)) } @{$bootloader->{entries}};

    foreach my $kernel (@kernels) {
	my $e = add_kernel($bootloader, $kernel,
	       {
		root => $root,
		if_($options{vga_fb}, vga => $options{vga_fb}), #- using framebuffer
		if_($options{vga_fb} && $options{splash}, append => "splash noiswmd"),
		if_($options{quiet}, append => "splash quiet noiswmd"),
	       });

	if ($options{vga_fb} && $e->{label} eq 'linux') {
	    add_kernel($bootloader, $kernel, { root => $root, label => 'linux-nonfb' });
	}
    }

    add_kernel($bootloader, $kernels[0],
	       { root => $root, label => 'failsafe', append => 'failsafe noiswmd' })
      if @kernels;

	#- search for dos (or windows) boot partition. Do not look in extended partitions!
	my @windows_boot_parts =
	  grep { $_->{active}
		 && isFat_or_NTFS($_) && member(fs::type::fs_type_from_magic($_), 'vfat', 'ntfs', 'ntfs-3g')
		 && !$_->{is_removable}
		 && !isRecovery($_);
	     }
	    map { @{$_->{primary}{normal}} } @{$all_hds->{hds}};
	each_index {
	    add_entry($bootloader,
		      {
		       type => 'other',
		       kernel_or_dev => "/dev/$_->{device}",
		       label => 'windows' . ($::i || ''),
		       table => "/dev/$_->{rootDevice}",
		       makeactive => 1,
		      });
	} @windows_boot_parts;

    my @preferred = map { "linux-$_" } 'p3-smp-64GB', 'secure', 'enterprise', 'smp', 'i686-up-4GB';
    if (my $preferred = find { get_label($_, $bootloader) } @preferred) {
	$bootloader->{default} ||= $preferred;
    }
    $bootloader->{default} ||= "linux";
    $bootloader->{method} ||= first(method_choices($all_hds, 1), # best installed
				    method_choices($all_hds, 0)); # or best if no valid one is installed

    if (main_method($bootloader->{method}) eq 'grub') {
	my %processed_entries = {};
	foreach my $c (find_other_distros_grub_conf($fstab)) {	    
	    my %h = (
		     type => 'grub_configfile',
		     label => $c->{name},
		     kernel_or_dev => "/dev/$c->{bootpart}{device}",
		     configfile => $c->{grub_conf},
		    );
	    if ($c->{root}) {
		my $key = "$c->{name} - $c->{linux} - $c->{initrd}";
		next if $processed_entries{$key};
		$processed_entries{$key} = 1;
		add_entry($bootloader, {
		    %h,
		    linux => $c->{linux},
		    initrd => $c->{initrd},
		    root => $c->{root},
		});
	    } else {
		add_entry($bootloader, \%h);
	    }
	}
    }
}

sub detect_main_method {
    my ($all_hds) = @_;
    my $bootloader = &read($all_hds);
    $bootloader && main_method($bootloader->{method});
}

sub main_method {
    my ($method) = @_;
    $method =~ /(\w+)/ && $1;
}

sub config_files() {
    my %files = (
	lilo => '/etc/lilo.conf',
	grub => '/boot/grub/menu.lst',
	grub_install => '/boot/grub/install.sh',
    );
    
    map_each { 
	my $content = cat_("$::prefix/$::b");
	{ main_method => main_method($::a), name => $::a, file => $::b, content => $content };
    } %files;
}

sub method2text {
    my ($method) = @_;
    +{
	'lilo-menu'    => N("LILO with text menu"),
	'grub2'        => N("GRUB2 with graphical menu"),
	'grub-graphic' => N("GRUB with graphical menu"),
	'grub-menu'    => N("GRUB with text menu"),
    }->{$method};
}

sub method_choices_raw {
    my ($b_prefix_mounted) = @_;
    detect_devices::is_xbox() ? 'cromwell' :
    arch() =~ /mips/ ? 'pmon2000' : 
    arch() =~ /arm/ ? 'uboot' :
       if_(!$b_prefix_mounted || whereis_binary('grub2-reboot', $::prefix), 
	   'grub2'),
      if_(!is_uefi(), (
       if_(!$b_prefix_mounted || whereis_binary('grub', $::prefix), 
	   'grub-graphic', 'grub-menu'),
       if_(!$b_prefix_mounted || whereis_binary('lilo', $::prefix), 
	   'lilo-menu'),
      ));
}
sub method_choices {
    my ($all_hds, $b_prefix_mounted) = @_;
    my $fstab = [ fs::get::fstab($all_hds) ];
    my $root_part = fs::get::root($fstab);
    my $boot_part = fs::get::root($fstab, 'boot');
    my $have_dmraid = find { fs::type::is_dmraid($_) } @{$all_hds->{hds}};

    grep {
	!(/lilo/ && (isLoopback($root_part) || $have_dmraid))
	  && (/grub2/ || $boot_part->{fs_type} ne 'btrfs')
	  && !(/grub-graphic/ && cat_("/proc/cmdline") =~ /console=ttyS/);
    } method_choices_raw($b_prefix_mounted);
}
sub main_method_choices {
    my ($b_prefix_mounted) = @_;
    uniq(map { main_method($_) } method_choices_raw($b_prefix_mounted));
}
sub configured_main_methods() {
    my @bad_main_methods = map { if_(!$_->{content}, $_->{main_method}) } config_files();
    difference2([ main_method_choices(1) ], \@bad_main_methods);
}

# for lilo
sub keytable {
    my ($f) = @_;
    $f or return;

    if ($f !~ /\.klt$/) {
	my $file = "/boot/$f.klt";
	run_program::rooted($::prefix, "keytab-lilo.pl", ">", $file, $f) or return;
	$f = $file;
    }
    -r "$::prefix/$f" && $f;
}

sub check_enough_space() {
    my $e = "$::prefix/boot/.enough_space";
    output $e, 1; -s $e or die N("not enough room in /boot");
    unlink $e;
}

sub install_pmon2000 { 
    my ($_bootloader, $_all_hds) = @_;
    log::l("Mips/pmon2000 - nothing to install...");
}
sub write_pmon2000 { 
    my ($_bootloader, $_all_hds) = @_;
    log::l("Mips/pmon2000 - nothing to write...");
}
sub when_config_changed_pmon2000 {
    my ($_bootloader) = @_;
    #- do not do anything
}

sub install_uboot { 
    my ($_bootloader, $_all_hds) = @_;
    log::l("uboot - nothing to install...");
}
sub write_uboot { 
    my ($_bootloader, $_all_hds) = @_;
    log::l("uboot - nothing to write...");
}
sub when_config_changed_uboot {
    my ($_bootloader) = @_;
    #- do not do anything
}

sub install_cromwell { 
    my ($_bootloader, $_all_hds) = @_;
    log::l("XBox/Cromwell - nothing to install...");
}
sub write_cromwell { 
    my ($_bootloader, $_all_hds) = @_;
    log::l("XBox/Cromwell - nothing to write...");
}
sub when_config_changed_cromwell {
    my ($_bootloader) = @_;
    #- do not do anything
}

sub simplify_label {
    my ($label) = @_;

    length($label) < 31 or $label =~ s/\.//g;

    $label = substr($label, 0, 31); #- lilo does not handle more than 31 char long labels
    $label =~ s/ /_/g; #- lilo does not support blank character in image names, labels or aliases
    $label;
}

sub make_label_lilo_compatible {
    my ($label) = @_;
    '"' . simplify_label($label) . '"';
}

sub write_lilo {
    my ($bootloader, $all_hds, $o_backup_extension) = @_;
    $bootloader->{prompt} ||= $bootloader->{timeout};

    my $file2fullname = sub {
	my ($file) = @_;
	if (arch() =~ /ia64/) {
	    my $fstab = [ fs::get::fstab($all_hds) ];
	    (my $part, $file) = fs::get::file2part($fstab, $file);
	    my %hds = map_index { $_ => "hd$::i" } map { $_->{device} } 
	      sort { 
		  my ($a_is_fat, $b_is_fat) = ($a->{fs_type} eq 'vfat', $b->{fs_type} eq 'vfat');
		  $a_is_fat <=> $b_is_fat || $a->{device} cmp $b->{device};
	      } @$fstab;
	    $hds{$part->{device}} . ":" . $file;
	} else {
	    $file;
	}
    };

    my $quotes = sub {
	my ($s) = @_;
	$s =~ s/"/\\"/g;
	qq("$s");
    };

    my $quotes_if_needed = sub {
	my ($s) = @_;
	$s =~ /["=\s]/ ? $quotes->($s) : $s;
    };
    

    my @sorted_hds = sort_hds_according_to_bios($bootloader, $all_hds);

    if (is_empty_hash_ref($bootloader->{bios} ||= {}) && $all_hds->{hds}[0] != $sorted_hds[0]) {
	log::l("Since we're booting on $sorted_hds[0]{device}, make it bios=0x80");
	$bootloader->{bios} = { "/dev/$sorted_hds[0]{device}" => '0x80' };
    }

    my @conf;

    #- normalize: RESTRICTED and MANDATORY are only valid if PASSWORD is set
    if ($bootloader->{password}) {
	# lilo defaults to mandatory, use restricted by default to have 
	# the same behaviour as with grub
	$bootloader->{restricted} = 1;
    } else {
        delete $bootloader->{mandatory} if !$bootloader->{password};
        delete $bootloader->{restricted} if !$bootloader->{password};
    }
    foreach my $entry (@{$bootloader->{entries}}) {
	delete $entry->{mandatory} if !$entry->{password} && !$bootloader->{password};
	delete $entry->{restricted} if !$entry->{password} && !$bootloader->{password};
    }
    if (get_append_with_key($bootloader, 'console') =~ /ttyS(.*)/) {
	$bootloader->{serial} ||= $1;
    }

    if (!get_label($bootloader->{default}, $bootloader)) {
	log::l("default bootloader entry $bootloader->{default} is invalid, choosing another one");
	$bootloader->{default} = $bootloader->{entries}[0]{label};
    }
    push @conf, "# File generated by DrakX/drakboot";
    push @conf, "# WARNING: do not forget to run lilo after modifying this file\n";
    push @conf, "default=" . make_label_lilo_compatible($bootloader->{default}) if $bootloader->{default};
    push @conf, map { $_ . '=' . $quotes_if_needed->($bootloader->{$_}) } grep { $bootloader->{$_} } qw(boot root map install serial vga keytable raid-extra-boot menu-scheme vmdefault);
    push @conf, grep { $bootloader->{$_} } qw(linear geometric compact prompt mandatory nowarn restricted static-bios-codes large-memory);
    push @conf, "append=" . $quotes->($bootloader->{append}) if $bootloader->{append};
    push @conf, "password=" . $bootloader->{password} if $bootloader->{password}; #- also done by msec
    push @conf, "timeout=" . round(10 * $bootloader->{timeout}) if $bootloader->{timeout};
    
    push @conf, "message=$bootloader->{message}" if $bootloader->{message};

    push @conf, "ignore-table" if any { $_->{unsafe} && $_->{table} } @{$bootloader->{entries}};