V-antena and Tanimoto's page

谷本の備忘録・雑記帳・work

>

カテゴリー: Troubles errors

CATEGORY ARCHIVE

raspberry piをbusterからbullseye経由でbookwormに更新したがしばらくしてapt upgradeでエラーが出る様になった。elecomのwifiドングル用のコンパイルでエラーとなったので仮対処した。※エラーが出ないようにしただけなので問題が出ないかどうかは確信ないので注意。

マシン状況

機体  :Raspberry pi 4B
OS   : Linux raspberrypi 6.1.10-v8+  Debian GNU/Linux 12 (bookworm)
ドングル:Elecom Co., Ltd WDC-150SU2M
種類  :rtl8188eu 系統

1.prandom_u32()無いと怒られた事への仮対処

sudo nano /var/lib/dkms/8188eu/5.3.9/source/os_dep/osdep_service.c

下記のボールドの部分を追加し、prandom_u32()を使わないようにした。

2574 inline u32 rtw_random32(void)
2575 {
2576 #ifdef PLATFORM_LINUX
2577 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
2578          return get_random_u32();
2579 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
2580         return prandom_u32();
2581 #elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18))
2582         u32 random_int;
2583         get_random_bytes(&random_int , 4);
2584         return random_int;
2585 #else
2586         return random32();
2587 #endif
2588 #elif defined(PLATFORM_WINDOWS)

2. current_bssが無いと怒られた事への仮対処

sudo nano /var/lib/dkms/8188eu/5.3.9/source/os_dep/linux/ioctl_cfg80211.c

9634         rtw_cfg80211_indicate_scan_done(adapter, _TRUE);
9635
9636         #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) || defined(COMPAT_KERNEL_RELEASE)
9637         if (wdev->current_bss) {
9638                 RTW_INFO(FUNC_ADPT_FMT" clear current_bss by cfg80211_disconnected\n", FUNC_ADPT_ARG(adapter));
9639                 rtw_cfg80211_indicate_disconnect(adapter, 0, 1);
9640         }
9641         #endif

上記のコードを下記の様に書き換えた。特にボールド体の部分。

9634         rtw_cfg80211_indicate_scan_done(adapter, _TRUE);
9635
9636         #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
9637           if (wdev->connected) {
9638                 u8 locally_generated = 1;
9639                 RTW_INFO(FUNC_ADPT_FMT" clear connected by cfg80211_disconnected\n", FUNC_ADPT_ARG(adapter));
9640                 cfg80211_disconnected(adapter->pnetdev, 0, NULL, 0, locally_generated, GFP_ATOMIC);
9641           }
9642         #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) || defined(COMPAT_KERNEL_RELEASE)
9643         if (wdev->current_bss) {
9644                 RTW_INFO(FUNC_ADPT_FMT" clear current_bss by cfg80211_disconnected\n", FUNC_ADPT_ARG(adapter));
9645                 rtw_cfg80211_indicate_disconnect(adapter, 0, 1);
9646         }
9647         #endif

3. cfg80211_rtw_stop_ap 他で引数の数がおかしいと怒られた事への仮対応

sudo nano /var/lib/dkms/8188eu/5.3.9/source/os_dep/linux/ioctl_cfg80211.c

下記のボールド体のところを追加

4879 static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
4880 {

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
4880 static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev, unsigned int link_id)
4881 #else
4882 static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
4883 #endif

その他も定義のところで、第3引数のところに、int link_id を追加

また、cfg80211_ch_switch_notifyの引数に下記の様に 0 を追加してみた

420         cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0);

4. bssidに、network.MacAddress は無いと怒られた事への仮対処

sudo nano /var/lib/dkms/8188eu/5.3.9/source/os_dep/linux/ioct l_cfg80211.c

下記の様に、links[0]. を、追加した

1097                 freq = rtw_ch2freq(channel);
1098                 notify_channel = ieee80211_get_channel(wiphy, freq);
1099                 #endif
1100
1101                 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) || defined(RHEL79))
1102                 roam_info.links[0].bssid = cur_network->network.MacAddress;
1103                 roam_info.req_ie = pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2;
1104                 roam_info.req_ie_len = pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr)>

5. REGULATORY_IGNORE_STALE_KICKOFF が無いと怒られた事への仮対処

sudo nano /var/lib/dkms/8188eu/5.3.9/source/os_dep/linux/wifi_regd.c

下記の部分を (6, 4, 4)から、(6, 1, 39) へ書き換えてみた

387 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 39))
388         wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF;
389 #endif

結果

ここまでで、ワーニングは残っているが、エラーにならずにapt upgrade できる様になった。
但し、仮対処が正しいかどうかはわからないし、他の版になったらどうなるかもわからない

仮に、マネをする人は、他の情報を当たってからにした方が良いです。 エラーになってどうしようもない場合だけ。 自己責任でお願いします。

clonezillaを使ってssd換装しようとした際、躓いた点を備忘録として残す

つまづいた事

clonezillaを起動するも途中で、HDDが無いといわれて失敗する

以下で成功した

clone先のSSDをディスクの管理でシンプルボリュームを作成まで行ったらようやく成功した

※注意
 私の場合そうだったというだけで他の人の場合も同じかどうかはわかりません

mbr2gptでエラーが出て苦労の挙句解決できたのでメモ

背景

中古のノートPCを購入(CPU: Intel i5-8350U OS:windows 11 Pro)したのだが何かおかしい。

・セキュアbootになっていない
パーティションタイプがMBRになっている

CPUはwindows 11サポート対象だが上記はシステム要件を満たしていない。なのに動作している。windows 11のクリーンインストールでもなく通常のupgrade手順でもなく、抜け道でupgradeされたものなのかも(CPU、TPMはシステム要件を満たしているので通常のupgrade手順で出来るはずだが。 おそらく、中古PC販売者がCPU等がもっと旧いPCでも同じ手順で出来る様に全て抜け道で行ったのではないかと推測。 )

動いているとはいえシステム要件を満たしていないのは気になるので、MBRからGPTへの変換やセキュアbootに変更しようとした。 ところがMBRからGPTへの変換でエラーが出て解決に苦労したので、解決した方法を備忘録として残す。

なお、遭遇したエラーは
mbr2gpt /validate /disk:0 /allowFullOS   コマンドに対して

MBR2GPT cannot find OS partition for disk 0

が返ってくるというものであった。

対応のアウトライン

次の順で行った。 なお、コマンドは管理者権限でのコマンドプロンプトを使う事。powershellでは管理者権限であっても動かないものがある。また、通常のコマンドプロンプトでも動かないものがある。

1.ディスクの構成を確かめる
2.問題個所を除去する
3.mbrからgptへ変換する

これらの対策は、
https://www.diskpart.com/gpt-mbr/mbr2gpt-cannot-find-os-partition-7201.html
のページのsolution-1によるものです。

なお、このエラーはwindowsのupgradeの際にやり方によりゴミが残る事によるものだそう。

ディスクの構成を確かめる

diskpartコマンドでdiskpartモードに入ってから行う。

・list disk  でディスク番号を確認。その後diskを選択。 
 sel disk 0 や sel disk 1などでwindowsがインストールされているディスクを選択。

・list parで、boot ディレクトリーがありそうなpartition を確認。

・該当partitionにドライブletterがアサインされていなければ、
sel par コマンドと assign letter=w などドライブletterを割り当てる。
 例: sel par 2 then assign letter=b

・diskpartから抜け出し、 dir /a b:\  などで、boot <dir> があるpartitionか確認する

・もし そのパーティションにboot <dir>が無かった場合は、別のパーティションで同様に探す

問題個所を除去する

bドライブにbootディレクトリーがあったとして説明する。

bcdedit /store b:\boot\bcd /enum all を実行し、unknown となっているところが無いか調べる。 

もしunknownがあれば、 そこの部分の {identifier}部分を使って、
bcdedit /store b:\boot\bcd /delete {identifier}  にてその部分を削除する。

これをunknownが無くなるまで繰り返す。

mbrからgptへ変換する

disk0がwindowsが入っているdiskとして説明。

mbr2gpt /validate /disk:0 /allowFullOS

を行い、これがsuccessfully completed となったら

mbr2gpt /convert /disk:0 /allowFullOS

にてMBRからGPTに変換する。

後始末:BIOSでレガシーからUEFI起動に変更

再起動しBIOSを立ち上げ起動方法を変更する

廃棄するwindows PC(USBブート出来ないやつ)のシステムドライブのデータ消去

困っていた事

PCを廃棄するため、windows PCのシステムドライブのデータ消去しようとしたが、以前のPCのためかUSBメモリーからboot出来ない。そのため、外付け媒体からデータ消去ソフトを立ち上げて消去するという手法が取れなかった。また、外付けのHDDやDVDドライブからもboot出来なかった。
元々付いていたDVDドライブからなら出来たのかもしれないが、既に取り外していた。

行ったデータ消去方法

windowsの機能のdiskpartを使う方法でデータ消去した。

Step-1 コマンドプロンプトを出すまで

  • 1.windowsの回復オプション画面を出す
  • 2.PCの起動をカスタマイズするから「今すぐ再起動」をクリック
  • 3.トラブルシューティングを選択
  • 4.コマンドプロンプトを選択

しばらく待つと、コマンドプロンプトの画面になる

Step-2 コマンドプロンプトからDsikpartを実行する

以下のコマンドを実行していく

diskpart
list disk
select disk 0
clean all

時間がかかるが終了まで待つ。 終わったら、exit で終了

xrdpを入れたがRDP接続できなかったので暫定的仮処置をした

環境

Ubuntu 22.04 (多分24.04でも同じ)
windowsマシン

問題点状況

Ubuntu desktopをインストール後、sudo apt install xrdp にてxrdpをインストール。これで、windowsからRDPを試みるも、login failed となる。

Ubuntu desktopの設定の共有から、RDPを有効にしたり、パスワードを設定しても変わらず。

ssl-certをインストールしても変わらず

暫定仮処置

Netで調べていると、raspberry piでだがシステム設定のアカウントとは別のアカウントを作成したらRDP接続出来た、という記事を見つけた(下記リンク)。

 https://www.thun-techblog.com/index.php/blog/raspberry-pi-os-2022-04-04-xrdp-error/

そこで、別アカウント(ここでは betumei として記述)を使って以下の設定を行った

$ sudo adduser betumei
$ sudo usermod -G sudo betumei

これで、windowsからRDPを行うと成功した

AX210NGW m.2 dual band wifiネットワークカードをIPFireで使うための応急処置

環境

PC    miniPC(CPU N100)
IPfire   IPFire core186
カード Intel AX210NGW カード

問題点

WLANAPページにて、「WLAN CARD」はRunnningになるが、Access PointがStoppedから変わらない。

エラーになっている箇所

/hostapd  /etc/hostapd.conf コマンドを投入してみると、ACS が失敗している。

channel の設定が、 Automatic Channel Searchになっており、しかもその設定から変わらない。 
/etc/hostapd.conf 内のchannel部分をchannel番号を指定して /hostapd  /etc/hostapd.conf  コマンドを実行してみたところ、 Access Pointが Running に変化した。 ここが課題箇所

応急処置

方針  hostapd.conf のコピーを造り、そこでchannelを固定設定し、初期化後に実行させる

応急処置内容 

  1. cp /etc/hostapd.conf /etc/hostapd2.conf
  2. interface=blue0 を hostapd2.conf の先頭に追加
  3. channel= 1 (1-11の間の数値) を hostapd2.conf に設定
  4. /etc/sysconfig/rc.local に、nohup /usr/bin/hostapd /etc/hostapd2.conf &  を追記

これで再起動で対応できる

  ※この方法では、初期化時にAP化に一度失敗しても初期化後にAP化する方法に注意

注意点

アクセスポイントとして使えるのは2.4GHz帯だけというのに注意。従ってAX201NGWを使うことは過剰性能であり、もっと安価なものか別のカードを使用するのがよさそう。

V-antena and Tanimoto's page

あなたはIPv4でアクセスしています