カテゴリー: PC-OS-IT
CATEGORY ARCHIVE
windows11pro PCのCドライブの容量(SSD 128GB)が不足したのでSSD換装を行なった。windows10の場合とは異なる苦労ポイント(EFIパーティション等)があったので記録として残す。
おおまかな流れは
・SSDのclone(オープンソースのclonezira使用) ・2つあった回復パーティションのうち不要な方を削除 ・回復パーティションの移動(削除・再作成) ・EFIパーテョションの移動(別場所に作成・不要分削除) ・Cドライブの拡張
となります。
使用した機器・ソフト&ツール
機器 USBメモリー、換装用SSD, SSDケース
ソフト&ツール rufus, clonezilla, diskpart, ディスクの管理, 別ドライブのubuntu(GPART相当機能があれば何でも良い) ※diskpartとディスクの管理は、windows内のコマンドやツールです。
SSDのクローン
様々なネット記事があるのでそれを参考に出来る。 しかし、いろんなツールが有料化されているので、オープンソースであるclonezillaを使った。 特に難しくないので、あらましだけをメモる。
・rufusを使って、USBメモリーにclonezillaを入れる ・clonezilla live (& to ram)を起動 ・(日本語選択) ・キーボードは日本語キーボードの選択肢がないので、defaultのまま 下矢印,y,enterぐらいしか使わないので問題なし ・USBメモリーを抜き出し、SSD入りのSSDケースをUSB接続しなおす ・device-deviceを選択 ・beginner modeを選択 ・disk to local diskを選択
power off後、PC内のSSDから上記で作成したSSDに交換し、再起動
新SSDからwindowsを起動後、「ディスクの管理」 を起動し、状況を再確認。 私の場合、下記の様であり、回復パーティション2個とEFIパーティションがCドライブの容量拡張の邪魔になっていた。
そこで、コマンドプロンプトを管理者権限で起動して以下の作業を行っていく
不要な回復パーティションの特定(必要な回復パーティションの特定)と削除
.コマンドプロンプトから、reagentc /info を使って、使っている回復パーティションを特定する。 その後、diskpart を起動し、使っていない方のパーティションを削除(disk番号、パーrヒション番号は実態に合わせる事。下記は例)
list disk
select disk 0
list partition
select partition 5
list partition
delete partition override
回復パーティションの移動(削除と再作成)
まず回復パーティションを無効にする(windows配下に移す)
reagentc /dsable
次に、diskpartで、回復パーティションを削除
list disk
select disk 0
list partition
select partition 3
detail partition ※後で、種類と属性をコピペするので表示しておく
delete partition override
detail partitionの応答イメージは、以下の感じ。
次に、ディスクの後方に「ディスクの管理」を使って、新しく回復パーティションを作成する。作成に当たっては、 ボリュームラベル: Recovery ファイルシステム: NTFS とする。
diskpart で、list disk, select disk 0, list partitionでパーティションを確認(今回はパティション6)。パーティションを選択し、IDと属性を上記で表示させた値で設定する。
list disk
select disk 0
list partition
select partition 6
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
exit
回復パーティションを再構築する。
reagentc /enable
reagentc /info
reagentc /info でenableになっていれば成功。 (なお、後でみたらdisableだったので再度enable をやったら成功した)
EFIパーテョションの移動(別場所に作成・不要分削除)
(EFIパーティションがCドライブの前にある場合は、ここの作業は不要)
まず、「ディスクの管理」を使って、SSDの後方にEFI用パーティション作成する。 ボリュームラベル:ESP ファイルシステム:FAT32 ドライブレター:何かつける(ここではJ)
コマンドプロンプト画面から、bcdbootコマンドを使ってEFIを構築。
bcdboot c:\windows /s J: f/ UEFI
※EFIパーティションの場合はコマンド内で作ってくれるのか、set idやgpt attributesの設定は不要
windowsを離れて、別ドライブから、以前のEFIパーティションを削除する。
・今回の場合、別SSDにインストールしてあったubuntuを立ち上げる ・ubuntuから、「ユーティリティ」->「ディスク」 を使って、以前のEFIパーティションを削除 する
Cドライブの拡張
・再度、windowsを起動 ・「ディスクの管理」から、Cドライブを拡張する
最終的に下記の様に拡張できた。
※失敗して立ち上がら無くなれば、以前のSSDに戻す事が可能なので心配しないで実行する
投稿ナビゲーション
Lan環境や外部wifiが無い場所でミニPCにwifiでアクセスしたかった。そこでミニPCにubuntu 24.04を入れwifiドングルを使ってAPモードを苦労したが実現できたので、メモとして残す。
想定使用環境
LAN無し、外部wifi無い場所で使う。電源はある場所で使う。APモードからインターネット接続せず。
実現環境
1.ミニPCにwifiドングルを使い、APモードはこのドングル経由で実現する 2.ミニPCに元からあったwifiデバイスは通常のwifi接続に使用する 3.APモードからのアクセスはインターネット接続しない
その他の方法を選ばなかった理由
1.windowsでは既設のwifiデバイスだけでAPモードが簡単にできたが、なぜかSSIDが見えないときが結構あった。それで、簡単にあきらめた。
2.Ubntuでも、Lanやモバイルルータを前提にすれば簡単にできたのだが、モバイルルータを使わずに実現したかったのであきらめた
3.WSLででも出来そうだったが、windowsを経由するならいっそ直接やった方が処理能力的に良いのではと思いu直接のbuntu上でトライした。実際のところの比較はやれていないのでこの想定が正しいのかは不明。
設定
1.使用するソフトをインストール
sudo apt install hostapd
sudo apt install isc-dhcp-server
2.まず、wifiドングルのデバイスのIPのインターフェイス名を知る
sudo nmcli device status を使って調べる
3.NetworkManagerがあるとwifiデバイス単位の操作が難しいのでwifiドングルをNetworkmangerの対象から外す (代わりにhostapdで行う)
sudo nano /etc/NetworkManager/conf.d/99-unmanaged-devices.conf
下記の様にする
[device-wlx123456789abc-unmanaged]
match-device=interface-name:wlx123456789abc
managed=0
4.どのデバイス(インターフェイス)をAPモードで使うかを指定する
sudo nano /etc/default/isc-dhcp-server
以下を設定。インターフェイス名は上記の2で調べたもの
4行目 : コメント解除
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
INTERFACESv4="wlx123456789abc"
INTERFACESv6=""
5. systemd-resolvedを使わないようにする
sudo nano /etc/NetworkManager/NetworkManager.conf
下記のfalseを追加
[main]
plugins=ifupdown,keyfile
systemd-resolved=false <----追加
6.DHCPを設定する
sudo nano /etc/dhcp/dhcpd.conf
例えば次の様に設定する
# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns1.example.org;
interfaces="wlx123456789ABC";
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
log-facility local7;
subnet 192.168.111.0 netmask 255.255.255.0 {
option routers 192.168.111.1;
option subnet-mask 255.255.255.0;
range 192.168.111.10 192.168.111.30;
option domain-name "testtest";
option domain-name-servers 192.168.111.1, 8.8.8.8;
option broadcast-address 192.168.111.255;
default-lease-time 600;
max-lease-time 7200;
}
7. hostapd の設定
sudo nano /etc/hostapd/hostapd.conf
例えば、下記の様に設定する
interface=wlx123456789abc
ctrl_interface=/var/run/hostapd
#ctrl_interface_group=0
driver=nl80211
ssid=YourSSID
wpa_passphrase=YourPassword
wpa=2
hw_mode=g
country_code=JP
channel=7
ieee80211d=1
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
sudo nano /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-B"
# これを忘れるとうまく起動しなかった
8.IPアドレスの設定
理由は不明だが、interfaceやhostapd, dhcpdで設定出来なかったのコマンドで設定する。
sudo nano /etc/systemd/system/my-startup2-script.service
以下の様に設定する。
[Unit]
Description=For_wifi_AP_host_ip_setting
After=network.target
[Service]
Type=simple
ExecStart=sudo ifconfig wlx123456789abc 192.168.111.1 netmask 255.255.255.0 up
Restart=no
User=root
[Install]
WantedBy=multi-user.target
サービスの登録
sudo systemctl start isc-dhcp-server.service
sudo systemctl enable isc-dhcp-server.service
sudo systemctl enable my-startup2-script.service
リブート 及び 調査で使うツール
rebootとしておしまいのはず。
参考ツール(コマンド)
sudo airmon-ng check
journalctl _PID=dddd
投稿ナビゲーション
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 できる様になった。 但し、仮対処が正しいかどうかはわからないし、他の版になったらどうなるかもわからない 。
仮に、マネをする人は、他の情報を当たってからにした方が良いです。 エラーになってどうしようもない場合だけ。 自己責任でお願いします。
投稿ナビゲーション
wordpressのサイトヘルスでPHPが旧いと怒られたのでPHPを更新した。その際の実施メモ。
まだ、エラーが残っていたので追記(3.3)と一部追記(3.2) 2025/11/20
背景
本サイトでwordpressを運用しているが、サイトヘルスでPHPの版数が旧いので更新してください、と怒られていた。そこでPHPの更新に取り組んだが、それなりに大変だったの記録として残す事にした。 なお、OSがbusterのままだとPHPを更新出来なかったのでOSもバージョンアップした。
更新前の状況 OS: Raspbian buster PHP: ver. 7.4
更新後の状況 OS: Raspberry Pi OS bullseye PHP: ver. 8.4
第一段階 raspberry Pi OSのバージョンをbusterからbullseyeに更新
1.1 ソースリストの変更 1.1.1 sources.list中のbusterをbullseyeに変更する (security部分に一部フォーマットの変更もあり)
sudo nano /etc/apt/sources.list
下記の様になる様に変更する
deb http://deb.debian.org/debian bullseye main contrib non-free
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
1.1.2 sources.list.d/raspi.list中のbusterをbullseyeに変更する
sudo nano /etc/apt/sources.list.d/raspi.list
下記の様になる様に変更する
deb http://archive.raspberrypi.org/debian/ bullseye main
1.2 OSを更新
sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade
sudo apt autoremove
sudo apt install zstd
(bookwormに更新時必要になるのでついでにインストールしておく)
sudo reboot
1.3 xrdpがブルーの画面のままとなる場合の対応
こちらのサイトを参照https://raspberrypi.stackexchange.com/questions/133425/connection-problem-giving-up-on-xrdp-with-raspberry-pi-os-11-bullseye
第2段階 PHPをバージョンアップ
2.1 おまじない
sudo apt update
sudo apt upgrade
2.2 サービス一時停止
sudo systemctl stop mariadb.service
sudo systemctl stop php7.4-fpm.service
sudo systemctl stop apache2.service
2.3 PHP類インストール
sudo apt install php php-mbstring php-gd php-mysql php-pspell
sudo apt install php-xml php-xmlrpc php-fpm php-curl php-imagick php-zip php-intl
バージョン確認
php -v
2.4 インストール中のメッセージ内で言われたとおりの事を行う
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.4-fpm
sudo systemctl reload apache2
sudo systemctl restart apache2
第3段階 PHP8系とwordpressの相性の悪さに対応
wordpressを表示しようとしたところ、fatalエラーや表示されない問題が発生したので対処
3.1 Fatalエラー対策 functions.php
create_functionがPHP8で削除され無くなったらしく、無名関数で対応
sudo nano wp-content/themes/使用しているtheme/functions.php
add_action('widgets_init', function(){register_widget("My_Widget_Meta");});
下記を上記の様に書き換える
# add_action('widgets_init', create_function('', 'return register_widget("My_Widget_Meta");'));
3.2 内容が表示されない問題対応 single.php, index.php, archive.php
クォーテーションで囲まれてないと「Use of undefined constant」というエラーになる様になった。自作のPHPファイルなのでその様なところが残っていた。 自作でなければ必要ないかも
sudo nano wp-content/themes/使用しているtheme/single.php
下記の場合、DATA_W3Cをシングルクォートで囲む様に書き換えた。
esc_attr( get_the_date( 'DATA_W3C' ) ); ?>">
同様にindex.php と archive.php 内の DATA_W3C をシングルクォートで囲む。
esc_attr( get_the_date( 'DATA_W3C' ) ); ?>">
3.3 他にhtml5とコメントで名前とメールが入力必須になっているかの判断のところうまく動かなくなっていたので、そこを暫定的に決め打ちした cooments.php
comments.php の先頭に下記を追加
<?php
$aria_req = " aria-required='true'" ;
?>
comments.php で$html5 を使っているところを使っていることに決め打ちする。
下記
'<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' .
下記の様にする
'<input id="email" name="email" ' . 'type="email"' . ' value="' .
おしまい
これで、復活し、wordpressのサイトヘルスでも怒られなくなった
投稿ナビゲーション
CPUがcore i7-7700 OSがwindows10 pro のPCをwindows11 proにupgradeしたのでその記録
該当PCの情報
BTOで購入したマシン(当初ubuntuで運用)に、SSDを増設・windows10 proのusbを購入してインストールしていたもの。
CPU : Intel core i7-7700 マザボ :ASUS Prime H270-PLUS パーティション:MBR形式 Boot :レガシー 形式 TPM :2.0のものが付いていた( 別の自作PCにはheadがあるだけ)
従って、MBRからGPTへの変更と、レガシーからUEFIへの変更がまず必要。
MBRからGPTへの変更
windows10に備わっているmbr2gptコマンドを使用する。
powershell(管理者) から行なう。
mbr2gpt /validate /disk:1 /allowFullOS Validation completed successfully を確認
mbr2gpt /convert /disk:1 /allowFullOS Conversion completed successfully を確認
BIOSモードをレガシーからUEFIへ変更
BIOSの設定から、レガシーからUEFIに変更し保存しresetし再起動する
※Bootメニュー中のCSM(Compatibility Supported Module)のところから変更する
windows10からwindows11へのupgrade
Githubにある flyby11 を使ってupgradeする。
upgrade後のいくつかのエラー対策
下記は書きかけです。
1.プログラム互換性アシスタント エラー
https://www.php.cn/ja/faq/650294.html
2.AI suite3 エラー
失敗したかも。 uninstallしてからの方が良いかも
投稿ナビゲーション
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を立ち上げ起動方法を変更する
投稿ナビゲーション