Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Laitealue => Aiheen aloitti: peran - 01.01.09 - klo:07.59
-
Ongelma, on että WLANini löytää kyllä verkot, muttei osaa niihin yhdistää. :(
Siis olen onnistuneesti "asentanut" Wlanin Adamin kernelillä.
Siis käyttiksenä on perus-ubuntu Adamin kernelillä.
Olen yrittänyt avoimella verkolla ja suljetulla, mutta kummallakaan en ole onnistunut.
Aluksi onnistuin eeePC:n Xardoksilla, mutta sitten päivitin liikaa konetta, ja enkä ole saanut WLANia toimimaan sen jälkeen.
Pitääkö tässä alkaa käyttää ulkoista tikkua, vai löytyykö jokin kauniimpi ratkaisu. Ulkoinen ndiswrapperilla toimiva tikku toki löytyy, vaikken olekaan testannut toimivuutta eeePC:lläni.
Laitan kohta vähän eeePC:stäni arvoja. Siis mitä saan ulos siitä.
Tässäpäs tätä...
$ sudo iwpriv iwlist
$ iwlist ra0 scanning
ra0 Scan completed :
Cell 01 - Address: 00:19:5B:8F:76:88
ESSID:"PHN WLAN"
Mode:Managed
Channel:1
Quality:15/100 Signal level:-84 dBm Noise level:-81 dBm
Encryption key:on
Bit Rates:36 Mb/s
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : TKIP CCMP
Authentication Suites (1) : PSK
Cell 02 - Address: 00:16:01:27:46:03
ESSID:"12345"
Mode:Managed
Channel:5
Quality:100/100 Signal level:-44 dBm Noise level:-81 dBm
Encryption key:off
Bit Rates:11 Mb/s
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:23:54:04:b9:fe
inet addr:192.168.11.5 Bcast:192.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::223:54ff:fe04:b9fe/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6425 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:7
collisions:0 txqueuelen:1000
RX bytes:9138246 (8.7 MB) TX bytes:0 (0.0 B)
Memory:fbfc0000-fc000000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1416 errors:0 dropped:0 overruns:0 frame:0
TX packets:1416 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:72280 (70.5 KB) TX bytes:72280 (70.5 KB)
ra0 Link encap:Ethernet HWaddr 00:22:43:24:80:00
inet6 addr: fe80::222:43ff:fe24:8000/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9156 errors:0 dropped:0 overruns:0 frame:0
TX packets:799 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:873927 (853.4 KB) TX bytes:0 (0.0 B)
Interrupt:19
$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
ra0 RT2860 Wireless ESSID:"12345" Nickname:"RT2860STA"
Mode:Managed Frequency=2.432 GHz Access Point: 00:16:01:27:46:03
Bit Rate=54 Mb/s
RTS thr:off Fragment thr:off
Link Quality=100/100 Signal level:-44 dBm Noise level:-81 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
-
Lisää koodia, josta ehkä on apuja... ???
$ sudo iwpriv ra0 stat
ra0 stat:
Tx success = 863
Tx success without retry = 863
Tx success after retry = 0
Tx fail to Rcv ACK after retry = 0
RTS Success Rcv CTS = 0
RTS Fail Rcv CTS = 0
Rx success = 15732
Rx with CRC = 216
Rx drop due to out of resource = 0
Rx duplicate frame = 0
False CCA (one second) = 0
RSSI-A = -46
RSSI-B (if available) = -52
RSSI-C (if available) = -99
WpaSupplicantUP = 0
$ iwpriv
lo no private ioctls.
eth0 no private ioctls.
ra0 Available private ioctls :
set (8BE2) : set 1024 char & get 0
connStatus (0004) : set 0 & get 2047 char
driverVer (0005) : set 0 & get 2047 char
bainfo (0006) : set 0 & get 2047 char
descinfo (0007) : set 0 & get 2047 char
radio_off (000A) : set 0 & get 2047 char
radio_on (000B) : set 0 & get 2047 char
show (0014) : set 1024 char & get 2047 char
bbp (8BE3) : set 2047 char & get 2047 char
mac (8BE5) : set 1024 char & get 1024 char
e2p (8BE7) : set 1024 char & get 1024 char
stat (8BE9) : set 0 & get 2047 char
get_site_survey (8BED) : set 0 & get 1024 char
-
Onkohan mulla liian uusi firmis tikussani, kun vaikuttaa niin tuoreelta tapaukselta?
$ iwpriv ra0 driverVer
ra0 driverVer:Driver version-1.7.1.1, Nov 12 2008 02:31:25
-
Jaahas, taitaakin olla toi WLANin heikko toiminta ominaisuus. :P
-
Jaahas, taitaakin olla toi WLANin heikko toiminta ominaisuus. :P
Ihan hyvin toiminut WPA2-psk + WPA compatibility asetuksella mikä on ollut purkissa (Ubuntu).
Tosin asensin joskus Xubuntu ja array.org:sta kernelin.
Xubuntussa en saannut aluksi toimimaan Wlania, mutta tyhjensin Wlan asetukset NetworkManagerista ja lisäsin Wlanverkon manuaalisesti NetworkManagerista niin lähti toimimaan.
Oletko kattonut ettei biosista olisi disable wlan. Bios päivitys veti minulta kaikki nolliin.
-
Ongelma, on että WLANini löytää kyllä verkot, muttei osaa niihin yhdistää. :(
Kuulostaa jotenkin samalta, kun itellä oli. Eli kone oli aluperin kiinteällä IP:llä kiinni nettiboksissa, ja sitten kun hommasin tän RT2500 -pohjaisen PCMCIA Wlan-kortin, verkko löytyi hienosti, mut minnekään ei päässyt. Sitte kun kävin network managerissa, ja laiton langallisen DHCP-tilaan ja annoin olla wlan-kortin roaming mode päällä, niin johan alkoi toimia. Jostain syystä joka kerta langallisen kiinteän IP:n käytön jälkeen wlan ei toimi ennenkuin se on pistetty takaisin dhcp-tilaan. Noita salattuja moodeja ei täällä landella :P ole ollut tarvis käyttää. Ja sitte vielä, että joskus jos wlan-linkki on mennyt poikki, ottaa aikansa, ennen kuin ottaa yhteyden uudelleen. Ei siis kannata ihan hätäisesti vaihdella konfiguraatiota.
-
Tarkennettu ongelmankuvaus...
WLAN saa yhteyden jos kyseessä on neitseellinen ESSID - riippumatta salaustyypistä, mutta jos sammuttaa tai laittaa unitilaan, tai sammuttaa vain wlanin, niin samaan verkkoon en enään pääsekään ennen kuin muutan ESSID:iä.
Kuulostaa jotenkin samalta, kun itellä oli. Eli kone oli aluperin kiinteällä IP:llä kiinni nettiboksissa, ja sitten kun hommasin tän RT2500 -pohjaisen PCMCIA Wlan-kortin, verkko löytyi hienosti, mut minnekään ei päässyt. Sitte kun kävin network managerissa, ja laiton langallisen DHCP-tilaan ja annoin olla wlan-kortin roaming mode päällä, niin johan alkoi toimia. Jostain syystä joka kerta langallisen kiinteän IP:n käytön jälkeen wlan ei toimi ennenkuin se on pistetty takaisin dhcp-tilaan. Noita salattuja moodeja ei täällä landella :P ole ollut tarvis käyttää. Ja sitte vielä, että joskus jos wlan-linkki on mennyt poikki, ottaa aikansa, ennen kuin ottaa yhteyden uudelleen. Ei siis kannata ihan hätäisesti vaihdella konfiguraatiota.
Joops, ei taida tässä tapauksessa kuitenkaan olla ko. ongelmasta kysymys. Minulla hakee DHCP:llä, ja langallinen ja langaton ei pitäisi olla samaan aikaan kytkettyinä.
Oletko kattonut ettei biosista olisi disable wlan. Bios päivitys veti minulta kaikki nolliin.
Kyllä Biosissa oli wlan enable, mutta näytti olevan kamera ja bluetooth disenable.
Enpäs ole vielä saanut Wlania toivotulla tavalla toimimaan. Ilmeisesti pitää päivittää BIOS.
Mistäs sen löytää ?
Edit - Tosin tällä hetkellä taistelen Xardosin kanssa.
-
$ dmesg
...
[ 105.180000] btstack_release: dequeued all remaining buffers from RX Q
[ 105.180000] btstack_release: stack driver released 0xf39b25c0
[ 128.400000] ===>rt_ioctl_giwscan. 2(2) BSS returned, data->length = 165
[ 142.270000] RX DESC f26f0000 size = 2048
[ 142.270000] <-- RTMPAllocTxRxRingMemory, Status=0
[ 142.280000] I/F(ra0) Key1Str is Invalid key length! KeyLen = 0!
[ 142.280000] I/F(ra0) Key2Str is Invalid key length! KeyLen = 0!
[ 142.280000] I/F(ra0) Key3Str is Invalid key length! KeyLen = 0!
[ 142.280000] I/F(ra0) Key4Str is Invalid key length! KeyLen = 0!
[ 142.280000] 1. Phy Mode = 9
[ 142.280000] 2. Phy Mode = 9
[ 142.300000] RTMPSetPhyMode: channel is out of range, use first channel=1
[ 142.310000] 3. Phy Mode = 9
[ 142.310000] MCS Set = ff ff 00 00 01
[ 142.320000] <==== RTMPInitialize, Status=0
[ 142.320000] 0x1300 = 00064300
[ 142.330000] ==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x8b04] (Channel=5)
[ 217.400000] usb 5-8: USB disconnect, address 3
[ 219.100000] usb 5-8: new high speed USB device using ehci_hcd and address 4
[ 219.290000] usb 5-8: configuration #1 chosen from 1 choice
[ 219.290000] uvcvideo: Found UVC 1.00 device CNF7129 (04f2:b071)
[ 242.310000] usb 5-8: USB disconnect, address 4
[ 253.220000] ===>rt_ioctl_giwscan. 3(3) BSS returned, data->length = 285
l. Erroria näkkyy bugaavaan.
BIOS on Revision 1401
Core Version: 1401
Build Date: 08/15/08
EC Firmware Version:EPCB-017
Onkohan tämä sivu oikea hakea päivityksiä. Huom. Minun koneessa olevaa firmistä ei ole ollenkaan listoilla. ???
http://support.asus.com/download/download.aspx?SLanguage=en-us&model=Eee%20PC%20901/Linux
-
Mistäs sen löytää ?
Täältä (http://servut.us/Karvameduusa/linux/asusPC901/Bios/) löydät.
Sieltä myös löytyy AFUDOS.exe millä ajetaan tuo .rom.
Komennolla AFUDOS.exe /i1703.rom. Tarvitset boottaavan usb tikun missä on Dos.
-
Komennolla AFUDOS.exe /i1703.rom. Tarvitset boottaavan usb tikun missä on Dos.
Vihjeitä saa antaa, kuinka DOS tehdään tikkuun. Vielä parempi, jos joku tekee 32 Mt:n tikun ja laittaa nettiin siitä dd:llä otetun levykuvan, ja antaa linkin mulle.
FreeDOSsia olen yritellyt, jonka tein rompulle.
Ainakaan oikein ei ollut tehdä tikkua s.e. formatoi FAT16:ksi, ja kopioi ko. osioon kovalevyssä olevan FAT16 DOS:sin dd:llä. Tuli joku starttierrori.
Nyt olen yrittämässä asentaa boottaavaa tikkua, ja otan dd:llä kopion toiseen tikkuun FAT16 DOS:sta, ja siirrän sen dd:llä eeePC:n levyihin. No, yrittänyttä ei laiteta, vaikka monestihan tässä pääsee yrittämään.
-
Oman pikku läppärin (Asus 700 4G) WLAN ongelmat katosivat kun tein GDM esittämien "Acer one" ohjeiden mukaan ajureiden asennukset. Piti ladata jokin backports ajuri jne, mutta ohje toimi hyvin. Ei enää pallojen turhaa jauhattamista yläpaneelissa vaan suoraan verkkoon. Adammin kernelissä on vissiin hieman viilailun varaa? Ai niin läppärissä oli Ubuntu 8.10 ilman Adamin kerneliä, terveisin Timo
-
Mistäs sen löytää ?
Täältä (http://servut.us/Karvameduusa/linux/asusPC901/Bios/) löydät.
Sieltä myös löytyy AFUDOS.exe millä ajetaan tuo .rom.
Komennolla AFUDOS.exe /i1703.rom. Tarvitset boottaavan usb tikun missä on Dos.
Mulla heittää seuraavanlaisen herjan yrittäessäni ajaa ko. ohjelmaa uusimmalla freeDOS:lla.
ERROR: This program must be run in MS-DOS mode
Tosin en onnistunut asentamaan DOSsia USB-tikkuun, joten asensin sen SSD:lle. Voin myös asentaa jonkin toisen ilmaisen DOS:sin, mikäli sellainen löytyy.
Minkähänlaista autoexec.bat ja config.sys:ssiä olet käyttänyt tai jotain...
-
ERROR: This program must be run in MS-DOS mode
Tosin en onnistunut asentamaan DOSsia USB-tikkuun, joten asensin sen SSD:lle. Voin myös asentaa jonkin toisen ilmaisen DOS:sin, mikäli sellainen löytyy.
Minkähänlaista autoexec.bat ja config.sys:ssiä olet käyttänyt tai jotain...
Ilmeisesti ongelmia tuotti toi ylämuistin käyttäminen DOS:ssissa, kun vähän rukkaili config.sys:siä, niin johan hyrähti käyntiin.
Kuinkas kauan flashaaminen kestää?
-
Rukkailin ilmeisesti vähän liikaakin config.sys:iä, kun näyttää tekevän vieläkin. Ilmeisesti ko. ohjelma on päässyt ikuiseen silmukkaan. Nyt on vain toiveissa, ettei ole vielä kirjoittanut flashiä.
Pidän nyt noitten ohjeiden mukaisesti konetta auki, josko säkällä osaisi ohjelma sittenkin päästä loppuun.
Tietenkin, jos joku kertoo kuinka kauan 901:sen flashaaminen kestää, niin odotan sen verran. Kaiken järjen mukaan ei pitäisi kestää näin kauaa.
Siis olen vieläkin kiinnostunut onnistuneen flashauksen mukaisista config.sys:stä ja autoexec.bat:sta.
Siis eee:n näytössä seisoo:
WARING!! Do not turn off power during flash BIOS
Search necessary infomation
Imeisesti se jotain ilmoittelee, kun aloittaa varsinaisen flashauksen, joten olen toiveikas, että koneeni toimii edelleen yhtä heikosti kuin aiemminkin, mutta ei huonommin. Tuskin nyt paremminkaan. :P
-
No, ei tullut eeePC:stäni ainakaan vielä paperipainoa. :D :D
Mutta vielä ne config.sys:n ja autoexec.bat:n tiedot olis tarpeen.
Ilmeisesti Config.sys:iini tulee laittaa DOS=SINGLE
No, tässä on tämän hetkinen Config.sys:sini, jonka olen virponut.
!COUNTRY=001,437,C:\FDOS\BIN\COUNTRY.SYS
!SET lang=EN
!LASTDRIVE=Z
!BUFFERS=20
!FILES=40
!DOS=HIGH,UMB
!DOSDATA=UMB
!set dircmd=/ogn /4
!MENUCOLOR=7,0
MENUDEFAULT=2,5
MENU 1 - Load FreeDOS with EMM386, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with EMM386+EMS and SHARE
MENU 3 - Load FreeDOS including HIMEM XMS-memory driver
MENU 4 - Load FreeDOS without drivers
DOS=HIGH,UMB
12?DEVICE=C:\FDOS\BIN\HIMEM.EXE
1?DEVICE=C:\FDOS\BIN\EMM386.EXE NOEMS X=TEST
2?DEVICE=C:\FDOS\BIN\EMM386.EXE X=TEST
;12?DEVICEHIGH=C:\FDOS\bin\xdma.sys
12?DEVICEHIGH=C:\FDOS\bin\xcdrom.sys /d:FDCD0001
12?DEVICEHIGH=C:\FDOS\bin\cdrcache.sys FDCD0001 CDRCACH0 15000
12?SHELLHIGH=C:\FDOS\bin\command.com C:\FDOS\bin /E:1024 /P=C:\autoexec.bat
3?SHELL=C:\FDOS\bin\command.com C:\FDOS\bin /E:1024 /P=C:\autoexec.bat
12?INSTALLHIGH=C:\FDOS\bin\lbacache.com 15000 TUNS
Kolmosella olen käynnistänyt tämän viritelmän.
Autoexec.bat:tini on tällainen.
@echo off
SET dosdir=C:\FDOS
set PATH=%dosdir%\bin
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
set temp=%dosdir%\temp
set tmp=%dosdir%\temp
SET BLASTER=A220 I5 D1 H5 P330
REM ShsuCDhd /QQ /F:C:\FDBOOTCD.ISO
if not "%config%"=="4" REM LH VIAUDIO
if not "%config%"=="4" REM LH VIAFMTSR
if not "%config%"=="4" LH FDAPM APMDOS
if "%config%"=="2" LH SHARE
if not "%config%"=="4" ShsuCDX /QQ /~ /D:?FDCD0002 /D:?FDCD0003 /D:?CDRCACH0
SET autofile=C:\autoexec.bat
alias reboot=fdapm warmboot
alias halt=fdapm poweroff
SET CFGFILE=C:\fdconfig.sys
echo type HELP to get support on commands and navigation
echo.
echo Welcome to FreeDOS
echo.
if not "%config%"=="4" mouse
lh doslfn
Vai onnistuisiko EEEPC:hen BIOSin päivittäminen yksinkertaisesti laittamalla oma distro sisään ja laittamalla 1703.ROM-tiedosto sda3:een, joka on nimetty BIOS:ksi? ???
-
Jaahas, löytyikin oikea tapa asentaa uusin BIOS.
http://wiki.eeeuser.com/howto:updatebios
No, pitää asentaa takaisin toi Xardos, niin menee kivuttomimmin.
-
Tosiaan BIOSin päivitys laittoi järjestelmäni ainakin näin ensivaikutelmaltaan kuntoon.
Ainakaan aikaisemmin Xardos ei ole vielä toiminut näin hyvin kuin koneessani nyt toimii.
Tosiaan: jos omaat BIOSin 1401, niin päivittäminen ratkaisee pahimmat WLAN-ongelmat. Ainakin näin näyttäisi ensisilmäykseltä.
Ja BIOSin päivittäminen kannattaa suorittaa Xardosin omalla käyttiksellä, jolloin päivityspaketin voi hakea suoraan Lisää/Poista-ohjelmalla.
Kiitokset vaivannäöistänne. :D :D :D
-
Jaahas, löytyikin oikea tapa asentaa uusin BIOS.
http://wiki.eeeuser.com/howto:updatebios
No, pitää asentaa takaisin toi Xardos, niin menee kivuttomimmin.
Voitko napata biosupdate.pl koodit jollain tekstieditorilla ja pastea tänne?
Edit:
Hahah, löysin scriptan.
biosupdate.pl
#!/usr/bin/perl
use strict;
use Getopt::Long;
my $wget = '/usr/bin/wget --quiet';
my $baseurl = 'http://update.eeepc.asus.com';
my $pathfile = '/bios/path.idx';
my $product = 'EeePC';
my %opt;
GetOptions (\%opt, "list", "install=s", "current") || exit 1;
if (!%opt) {
print "Arguments for this script:\n";
print " --list: lists available updates.\n";
print " --install <url>: installs BIOS update from provided URL.\n";
print " --current: returns the current installed version\n";
exit 0;
}
elsif (keys(%opt) > 1) {
print "Only one argument allowed.\n";
exit 1;
}
elsif (defined($opt{list})) {
my $file;
checkRoot();
# Get product name
my $partcode = getPartCode();
$file = "$baseurl/$pathfile";
print STDERR "Retrieving $file...\n";
(my @pathidx = `$wget -O- $file`) || exit 16;
my %products = readIdxPaths($file, \@pathidx);
#printHash(\%products);
$file = "$baseurl$products{$product}";
print STDERR "Retrieving $file...\n";
(my @platformidx = `$wget -O- $file`) || exit 16;
my %platform = readIdxPaths($file, \@platformidx);
#printHash(\%platform);
$file = "$baseurl$platform{$partcode}";
print STDERR "Retrieving $file...\n";
(my @partidx = `$wget -O- $file`) || exit 16;
my %part = readIdxVersions($file, \@partidx);
foreach my $key (keys(%part)) {
print $key . '|' . $part{$key}{release} . '|' .
$part{$key}{description} . '|' .
$baseurl . $part{$key}{path} . "\n";
}
}
elsif (defined($opt{install})) {
checkRoot();
my $partcode = getPartCode();
exit 7 if ($partcode eq '');
my $dir = `/bin/mktemp -d`;
chomp $dir;
chdir $dir;
system("$wget $opt{install}") && exit 16;
my $file = $opt{install};
$file =~ s/^.*\///;
if (system("/usr/bin/unzip -qq $file")) {
print STDERR "Corrupt ZIP file.\n";
exit 8;
}
my $rom = `find -name \*.[Rr][Oo][Mm] | head -n1`;
chomp $rom;
if ($rom eq '') {
print STDERR "Cannot find ROM file.\n";
exit 9;
}
mkdir ('mnt', 0755) || exit 10;
system("/bin/mount -L BIOS mnt") && exit 10;
system("/bin/cp $rom mnt/$partcode.rom") && exit 10;
system("/bin/umount mnt") && exit 10;
system("/bin/echo 0x030c > /proc/acpi/asus/hdps") && exit 10;
system("rm -fr $dir");
print STDERR "Success. Please reboot.\n";
}
elsif (defined($opt{current})) {
checkRoot();
my $version = `/usr/sbin/dmidecode -s bios-version`;
$version =~ s/^\s*(\d+)\s*$/$1/;
print "$version\n";
}
sub readIdxPaths {
my $file = shift;
my $raw = shift;
my %p;
my $pflag = 0;
my $product;
my $line = 0;
foreach(@$raw) {
$line++;
s/\r//;
chomp;
if (/^.*<product>\s*(.*\S)\s*$/) {
parseError($file, $line, 'Unexpected <product> tag.') if ($pflag);
$product = $1;
$pflag = 1;
}
elsif (/^.*<path>\s*(.*\S)\s*$/ && $pflag) {
$p{$product} = $1;
$p{$product} =~ s/\\/\//g;
$p{$product} =~ s/^(\w)/\/$1/;
}
elsif (/^.*<~product>/) {
parseError($file, $line, 'Unexpected <~product> tag.') if (!$pflag);
$pflag = 0;
}
}
parseError($file, $line, 'Unexpected EOF.') if ($pflag);
return %p;
}
sub readIdxVersions {
my $file = shift;
my $raw = shift;
my %p;
my $pflag = 0;
my $vflag = 0;
my $dflag = 0;
my $product;
my $version;
my $line = 0;
foreach(@$raw) {
$line++;
s/\r//;
chomp;
if (/^.*<product>\s*(.*\S)\s*$/) {
parseError($file, $line, 'Unexpected <product> tag.') if ($pflag);
$product = $1;
$pflag = 1;
}
elsif (/^.*<version>\s*(.*\S)\s*$/ && $pflag) {
parseError($file, $line, 'Unexpected <version> tag.') if ($vflag);
$version = $1;
$vflag = 1;
}
elsif (/^.*<release-date>\s*(.*\S)\s*$/ && $pflag && $vflag) {
$p{$version}{release} = $1;
}
elsif (/^.*<path>\s*(.*\S)\s*$/ && $pflag && $vflag) {
$p{$version}{path} = $1;
$p{$version}{path} =~ s/^(\w)/\/$1/;
}
elsif (/^.*<description>\s*(.*\S)\s*<~description>\s*$/ && $pflag && $vflag) {
$p{$version}{description} = $1;
}
elsif (/^.*<description>.*$/ && $pflag && $vflag) {
parseError($file, $line, 'Unexpected <description> tag.') if ($dflag);
$dflag = 1;
}
elsif (/^.*<~description>/) {
parseError($file, $line, 'Unexpected <~description> tag.') if (!$dflag);
$dflag = 0;
# Clean up the description
$p{$version}{description} =~ s/\\n$//;
$p{$version}{description} =~ s/\|/ /g;
}
elsif ($dflag && /^\s*(.*\S)\s*$/ && $pflag && $vflag) {
$p{$version}{description} .= $1 . '\n';
}
elsif (/^.*<~version>/) {
parseError($file, $line, 'Unexpected <~version> tag.') if (!$vflag);
$vflag = 0;
}
elsif (/^.*<~product>/) {
parseError($file, $line, 'Unexpected <~product> tag.') if (!$pflag);
$pflag = 0;
}
}
parseError($file, $line, 'Unexpected EOF.') if ($pflag || $vflag || $dflag);
return %p;
}
sub getPartCode {
my $partcode = `/usr/sbin/dmidecode -s baseboard-product-name`;
$partcode =~ s/^\s*(\S+)\s*$/$1/;
return $partcode;
}
sub printHash {
my $hash = shift;
print "================================================\n";
foreach my $key (keys(%$hash)) {
print $key . '=' . $$hash{$key} . "\n";
}
print "================================================\n";
}
sub checkRoot {
if ($< != 0) {
print "This option must be run as root user.\n";
exit 1;
}
}
sub parseError {
my $file = shift;
my $line = shift;
my $reason = shift;
print STDERR "Error parsing IDX file:\n";
print STDERR " $file\n";
print STDERR " Line: $line. $reason\n";
exit 32;
}
Edit:
Nähtävästi vaan Xandros. Tuo toinenkin scripta on poistettu.